Support LLVM 8+ build changes

Bug: b/139412871
Change-Id: I7c6b59a19b6f2fdc6feb7420605c9e7935790a90
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/40588
Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
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 2600112..9d2677f 100644
--- a/src/Reactor/LLVMReactor.cpp
+++ b/src/Reactor/LLVMReactor.cpp
@@ -52,6 +52,9 @@
 #include "llvm/IR/GlobalVariable.h"
 #include "llvm/IR/IRBuilder.h"
 #include "llvm/IR/Intrinsics.h"
+#if LLVM_VERSION_MAJOR >= 8
+#	include "llvm/IR/IntrinsicsX86.h"
+#endif
 #include "llvm/IR/LLVMContext.h"
 #include "llvm/IR/LegacyPassManager.h"
 #include "llvm/IR/Mangler.h"
@@ -347,7 +350,11 @@
 		// Round down base address to align with a page boundary. This matches
 		// DefaultMMapper behavior.
 		void *addr = block.base();
+#if LLVM_VERSION_MAJOR >= 8
+		size_t size = block.allocatedSize();
+#else
 		size_t size = block.size();
+#endif
 		size_t pageSize = rr::memoryPageSize();
 		addr = reinterpret_cast<void *>(
 		    reinterpret_cast<uintptr_t>(addr) & ~(pageSize - 1));
@@ -360,7 +367,13 @@
 
 	std::error_code releaseMappedMemory(llvm::sys::MemoryBlock &block)
 	{
-		rr::deallocateMemoryPages(block.base(), block.size());
+#if LLVM_VERSION_MAJOR >= 8
+		size_t size = block.allocatedSize();
+#else
+		size_t size = block.size();
+#endif
+
+		rr::deallocateMemoryPages(block.base(), size);
 		return std::error_code();
 	}
 
@@ -5064,11 +5077,21 @@
 	{
 		// Run manadory coroutine transforms.
 		llvm::legacy::PassManager pm;
+
+#if LLVM_VERSION_MAJOR >= 8
+		pm.add(llvm::createCoroEarlyLegacyPass());
+		pm.add(llvm::createCoroSplitLegacyPass());
+		pm.add(llvm::createCoroElideLegacyPass());
+		pm.add(llvm::createBarrierNoopPass());
+		pm.add(llvm::createCoroCleanupLegacyPass());
+#else
 		pm.add(llvm::createCoroEarlyPass());
 		pm.add(llvm::createCoroSplitPass());
 		pm.add(llvm::createCoroElidePass());
 		pm.add(llvm::createBarrierNoopPass());
 		pm.add(llvm::createCoroCleanupPass());
+#endif
+
 		pm.run(*jit->module);
 	}
 
@@ -5100,4 +5123,4 @@
 	return routine;
 }
 
-}  // namespace rr
\ No newline at end of file
+}  // namespace rr