Support LLVM 9+ build changes

Bug: b/139412871
Change-Id: Ia9e49317fa9ce89dcacaa1e5a788518062e4e633
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/40730
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
diff --git a/src/Reactor/LLVMReactor.cpp b/src/Reactor/LLVMReactor.cpp
index a696532..68a29ee 100644
--- a/src/Reactor/LLVMReactor.cpp
+++ b/src/Reactor/LLVMReactor.cpp
@@ -52,7 +52,7 @@
 #include "llvm/IR/GlobalVariable.h"
 #include "llvm/IR/IRBuilder.h"
 #include "llvm/IR/Intrinsics.h"
-#if LLVM_VERSION_MAJOR >= 8
+#if LLVM_VERSION_MAJOR >= 9
 #	include "llvm/IR/IntrinsicsX86.h"
 #endif
 #include "llvm/IR/LLVMContext.h"
@@ -178,7 +178,7 @@
 	static JITGlobals *get();
 
 	const std::string mcpu;
-	const std::vector<std::string> mattrs;
+	const std::vector<llvm::StringRef> mattrs;
 	const char *const march;
 	const llvm::TargetOptions targetOptions;
 	const llvm::DataLayout dataLayout;
@@ -189,7 +189,7 @@
 	static JITGlobals create();
 	static llvm::CodeGenOpt::Level toLLVM(rr::Optimization::Level level);
 	JITGlobals(const char *mcpu,
-	           const std::vector<std::string> &mattrs,
+	           const std::vector<llvm::StringRef> &mattrs,
 	           const char *march,
 	           const llvm::TargetOptions &targetOptions,
 	           const llvm::DataLayout &dataLayout);
@@ -248,7 +248,8 @@
 	(void)ok;  // getHostCPUFeatures always returns false on other platforms
 #endif
 
-	std::vector<std::string> mattrs;
+	std::vector<llvm::StringRef> mattrs;
+
 	for(auto &feature : features)
 	{
 		if(feature.second) { mattrs.push_back(feature.first()); }
@@ -306,7 +307,7 @@
 }
 
 JITGlobals::JITGlobals(const char *mcpu,
-                       const std::vector<std::string> &mattrs,
+                       const std::vector<llvm::StringRef> &mattrs,
                        const char *march,
                        const llvm::TargetOptions &targetOptions,
                        const llvm::DataLayout &dataLayout)
@@ -350,7 +351,7 @@
 		// Round down base address to align with a page boundary. This matches
 		// DefaultMMapper behavior.
 		void *addr = block.base();
-#if LLVM_VERSION_MAJOR >= 8
+#if LLVM_VERSION_MAJOR >= 9
 		size_t size = block.allocatedSize();
 #else
 		size_t size = block.size();
@@ -367,7 +368,7 @@
 
 	std::error_code releaseMappedMemory(llvm::sys::MemoryBlock &block)
 	{
-#if LLVM_VERSION_MAJOR >= 8
+#if LLVM_VERSION_MAJOR >= 9
 		size_t size = block.allocatedSize();
 #else
 		size_t size = block.size();
@@ -418,8 +419,8 @@
 	    const rr::Config &config)
 	    : resolver(createLegacyLookupResolver(
 	          session,
-	          [&](const std::string &name) {
-		          void *func = rr::resolveExternalSymbol(name.c_str());
+	          [&](const llvm::StringRef &name) {
+		          void *func = rr::resolveExternalSymbol(name.str().c_str());
 		          if(func != nullptr)
 		          {
 			          return llvm::JITSymbol(
@@ -5078,7 +5079,7 @@
 		// Run manadory coroutine transforms.
 		llvm::legacy::PassManager pm;
 
-#if LLVM_VERSION_MAJOR >= 8
+#if LLVM_VERSION_MAJOR >= 9
 		pm.add(llvm::createCoroEarlyLegacyPass());
 		pm.add(llvm::createCoroSplitLegacyPass());
 		pm.add(llvm::createCoroElideLegacyPass());