From 44a38ba6f54046cb4a9f8b08a0b8711ad5d5ebaa Mon Sep 17 00:00:00 2001 From: Martin Nowack Date: Mon, 30 Oct 2023 14:26:01 +0000 Subject: 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. --- test/Concrete/Makefile.cmake.test.in | 6 ++++-- tools/klee/main.cpp | 4 ++++ 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> loadedModules; if (!klee::loadFile(InputFile, ctx, loadedModules, errorMsg)) { klee_error("error loading program '%s': %s", InputFile.c_str(), -- cgit 1.4.1