about summary refs log tree commit diff homepage
diff options
context:
space:
mode:
authorMartin Nowack <m.nowack@imperial.ac.uk>2023-10-30 14:26:01 +0000
committerCristian Cadar <c.cadar@imperial.ac.uk>2024-02-08 13:17:19 +0000
commit44a38ba6f54046cb4a9f8b08a0b8711ad5d5ebaa (patch)
treec9a9711829a52c61ef36594b5ee7e942a0197973
parentbdc30e5427e9fa4a6fc7c8e0c21ededa8ec8c6a4 (diff)
downloadklee-44a38ba6f54046cb4a9f8b08a0b8711ad5d5ebaa.tar.gz
Explicitly enable opaque pointer support for LLVM 15
This automatically lifts old-style pointers to opaque pointers.
More recent versions use opaque pointers automatically and do not need
an explicit enabling.
-rw-r--r--test/Concrete/Makefile.cmake.test.in6
-rw-r--r--tools/klee/main.cpp4
2 files changed, 8 insertions, 2 deletions
diff --git a/test/Concrete/Makefile.cmake.test.in b/test/Concrete/Makefile.cmake.test.in
index 2282bb08..765ea690 100644
--- a/test/Concrete/Makefile.cmake.test.in
+++ b/test/Concrete/Makefile.cmake.test.in
@@ -14,6 +14,8 @@ LLVMCC := @LLVMCC@
 LLVMAS := @LLVM_AS@
 LLVMLINK := @LLVM_LINK@
 LLVMCC.CFlags := @OZERO_OPT@ -Wall
+LLVMAS.Flags := @LLVM_AS_FLAGS@
+LLVMLINK.Flags := @LLVM_LINK_FLAGS@
 
 # Make sure source files can match the pattern rules
 VPATH := @CMAKE_CURRENT_SOURCE_DIR@
@@ -28,7 +30,7 @@ Output/%.bc: %.c Output/.dir
 	$(LLVMCC) -emit-llvm -c $(LLVMCC.CFlags) $< -o $@
 
 Output/%.bc: %.ll $(LLVMAS) Output/.dir
-	$(LLVMAS) -f $< -o $@
+	$(LLVMAS) $(LLVMAS.Flags) -f $< -o $@
 
 # We build a separate testingUtils bitcode for each test, to make sure parallel
 # tests don't interact with one another.
@@ -36,7 +38,7 @@ Output/%_testingUtils.bc: _testingUtils.c Output/.dir
 	$(LLVMCC) -emit-llvm -c $(LLVMCC.CFlags) $< -o $@
 
 Output/linked_%.bc: Output/%.bc Output/%_testingUtils.bc
-	$(LLVMLINK) $< Output/$*_testingUtils.bc -o $@
+	$(LLVMLINK) $(LLVMLINK.Flags) $< Output/$*_testingUtils.bc -o $@
 
 .PRECIOUS: Output/.dir
 
diff --git a/tools/klee/main.cpp b/tools/klee/main.cpp
index febeb47f..18e67fe6 100644
--- a/tools/klee/main.cpp
+++ b/tools/klee/main.cpp
@@ -1201,6 +1201,10 @@ int main(int argc, char **argv, char **envp) {
   // Load the bytecode...
   std::string errorMsg;
   LLVMContext ctx;
+#if LLVM_VERSION_CODE == LLVM_VERSION(15, 0)
+  // We have to force the upgrade to opaque pointer explicitly for LLVM 15.
+  ctx.setOpaquePointers(true);
+#endif
   std::vector<std::unique_ptr<llvm::Module>> loadedModules;
   if (!klee::loadFile(InputFile, ctx, loadedModules, errorMsg)) {
     klee_error("error loading program '%s': %s", InputFile.c_str(),