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