diff --git a/0001-llvm5-avoid-on-function-arg_begin.patch b/0001-llvm5-avoid-on-function-arg_begin.patch deleted file mode 100644 index 43f1e4b..0000000 --- a/0001-llvm5-avoid-on-function-arg_begin.patch +++ /dev/null @@ -1,36 +0,0 @@ -From: Jiri Slaby -Date: Mon, 15 Jan 2018 10:35:19 +0100 -Subject: llvm5: avoid ++ on function->arg_begin() -Patch-mainline: no - -Starting with llvm 5, arguments of a function are not an iterator, but -an array. So they cannot be incremented in-place. Add a local auto -variable and increment that. - -Otherwise we see: -../tools/klee/main.cpp:661:23: error: expression is not assignable - Value *oldArgv = &*(++mainFn->arg_begin()); - ^ ~~~~~~~~~~~~~~~~~~~ - -Signed-off-by: Jiri Slaby ---- - tools/klee/main.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/tools/klee/main.cpp b/tools/klee/main.cpp -index 1de5fbeb7e0e..3be619138bd6 100644 ---- a/tools/klee/main.cpp -+++ b/tools/klee/main.cpp -@@ -1036,7 +1036,8 @@ createLibCWrapper(std::vector> &modules, - args.push_back( - llvm::ConstantExpr::getBitCast(inModuleRefernce, ft->getParamType(0))); - args.push_back(&*(stub->arg_begin())); // argc -- args.push_back(&*(++stub->arg_begin())); // argv -+ auto arg_it = stub->arg_begin(); -+ args.push_back(&*(++arg_it)); // argv - args.push_back(Constant::getNullValue(ft->getParamType(3))); // app_init - args.push_back(Constant::getNullValue(ft->getParamType(4))); // app_fini - args.push_back(Constant::getNullValue(ft->getParamType(5))); // rtld_fini --- -2.19.0 - diff --git a/0002-llvm5-integerPartWidth-is-from-llvm-APFloatBase.patch b/0002-llvm5-integerPartWidth-is-from-llvm-APFloatBase.patch deleted file mode 100644 index 686676c..0000000 --- a/0002-llvm5-integerPartWidth-is-from-llvm-APFloatBase.patch +++ /dev/null @@ -1,32 +0,0 @@ -From: Jiri Slaby -Date: Mon, 15 Jan 2018 10:09:20 +0100 -Subject: llvm5: integerPartWidth is from llvm::APFloatBase -Patch-mainline: no - -Otherwise we see: -../lib/Expr/Expr.cpp:331:14: error: no member named 'integerPartWidth' in namespace 'llvm'; did you mean 'llvm::APFloatBase::integerPartWidth'? - -Signed-off-by: Jiri Slaby ---- - lib/Expr/Expr.cpp | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/lib/Expr/Expr.cpp b/lib/Expr/Expr.cpp -index a5c7f652e976..65e858c3336d 100644 ---- a/lib/Expr/Expr.cpp -+++ b/lib/Expr/Expr.cpp -@@ -333,7 +333,11 @@ ref ConstantExpr::fromMemory(void *address, Width width) { - // FIXME: what about machines without x87 support? - default: - return ConstantExpr::alloc(llvm::APInt(width, -+#if LLVM_VERSION_CODE >= LLVM_VERSION(5, 0) -+ (width+llvm::APFloatBase::integerPartWidth-1)/llvm::APFloatBase::integerPartWidth, -+#else - (width+llvm::integerPartWidth-1)/llvm::integerPartWidth, -+#endif - (const uint64_t*)address)); - } - } --- -2.19.0 - diff --git a/0003-llvm5-handle-getOrInsertFunction-terminator.patch b/0003-llvm5-handle-getOrInsertFunction-terminator.patch deleted file mode 100644 index 0b31945..0000000 --- a/0003-llvm5-handle-getOrInsertFunction-terminator.patch +++ /dev/null @@ -1,75 +0,0 @@ -From: Jiri Slaby -Date: Mon, 15 Jan 2018 10:27:54 +0100 -Subject: llvm5: handle getOrInsertFunction terminator -Patch-mainline: no - -llvm 5 does not terminate getOrInsertFunction parameters with NULL, take -care of that. - -Since commit 9d54400bba7eb04bca80fce97fa170452d19eaf1. - -Signed-off-by: Jiri Slaby ---- - include/klee/Config/Version.h | 6 ++++++ - lib/Module/Checks.cpp | 8 ++++---- - lib/Module/IntrinsicCleaner.cpp | 3 ++- - 3 files changed, 12 insertions(+), 5 deletions(-) - -diff --git a/include/klee/Config/Version.h b/include/klee/Config/Version.h -index 532051602fe3..a02ce28baaae 100644 ---- a/include/klee/Config/Version.h -+++ b/include/klee/Config/Version.h -@@ -27,4 +27,10 @@ - # define KLEE_LLVM_CL_VAL_END , clEnumValEnd - #endif - -+#if LLVM_VERSION_CODE >= LLVM_VERSION(5, 0) -+# define KLEE_LLVM_GOIF_TERMINATOR -+#else -+# define KLEE_LLVM_GOIF_TERMINATOR , NULL -+#endif -+ - #endif -diff --git a/lib/Module/Checks.cpp b/lib/Module/Checks.cpp -index aac63e1d9854..406b3045e527 100644 ---- a/lib/Module/Checks.cpp -+++ b/lib/Module/Checks.cpp -@@ -57,8 +57,8 @@ bool DivCheckPass::runOnModule(Module &M) { - if (!divZeroCheckFunction) { - Constant *fc = M.getOrInsertFunction("klee_div_zero_check", - Type::getVoidTy(ctx), -- Type::getInt64Ty(ctx), -- NULL); -+ Type::getInt64Ty(ctx) -+ KLEE_LLVM_GOIF_TERMINATOR); - divZeroCheckFunction = cast(fc); - } - -@@ -118,8 +118,8 @@ bool OvershiftCheckPass::runOnModule(Module &M) { - Constant *fc = M.getOrInsertFunction("klee_overshift_check", - Type::getVoidTy(ctx), - Type::getInt64Ty(ctx), -- Type::getInt64Ty(ctx), -- NULL); -+ Type::getInt64Ty(ctx) -+ KLEE_LLVM_GOIF_TERMINATOR); - overshiftCheckFunction = cast(fc); - } - -diff --git a/lib/Module/IntrinsicCleaner.cpp b/lib/Module/IntrinsicCleaner.cpp -index c48952c28004..ab16a2654492 100644 ---- a/lib/Module/IntrinsicCleaner.cpp -+++ b/lib/Module/IntrinsicCleaner.cpp -@@ -210,7 +210,8 @@ bool IntrinsicCleanerPass::runOnBasicBlock(BasicBlock &b, Module &M) { - // Intrinsic instruction "llvm.trap" found. Directly lower it to - // a call of the abort() function. - Function *F = cast( -- M.getOrInsertFunction("abort", Type::getVoidTy(ctx), NULL)); -+ M.getOrInsertFunction("abort", Type::getVoidTy(ctx) -+ KLEE_LLVM_GOIF_TERMINATOR)); - F->setDoesNotReturn(); - F->setDoesNotThrow(); - --- -2.19.0 - diff --git a/0004-llvm5-SwitchInst-case-functions-now-return-pointers.patch b/0004-llvm5-SwitchInst-case-functions-now-return-pointers.patch deleted file mode 100644 index 3a485c8..0000000 --- a/0004-llvm5-SwitchInst-case-functions-now-return-pointers.patch +++ /dev/null @@ -1,35 +0,0 @@ -From: Jiri Slaby -Date: Mon, 15 Jan 2018 10:38:35 +0100 -Subject: llvm5: SwitchInst case functions now return pointers -Patch-mainline: no - -Starting llvm 5, SwitchInst->findCaseValue() now has to be dereferenced -using ->. So do so, otherwise we see: -../lib/Core/Executor.cpp:1598:38: error: no member named 'getCaseSuccessor' in 'llvm::SwitchInst::CaseIteratorImpl'; did you mean to use '->' instead of '.'? - BasicBlock *caseSuccessor = i.getCaseSuccessor(); - ^ - -Signed-off-by: Jiri Slaby ---- - lib/Core/Executor.cpp | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/lib/Core/Executor.cpp b/lib/Core/Executor.cpp -index 04fd6941d34a..64d0f66e4073 100644 ---- a/lib/Core/Executor.cpp -+++ b/lib/Core/Executor.cpp -@@ -1673,7 +1673,11 @@ void Executor::executeInstruction(ExecutionState &state, KInstruction *ki) { - // switch to an internal rep. - llvm::IntegerType *Ty = cast(si->getCondition()->getType()); - ConstantInt *ci = ConstantInt::get(Ty, CE->getZExtValue()); -+#if LLVM_VERSION_CODE >= LLVM_VERSION(5, 0) -+ unsigned index = si->findCaseValue(ci)->getSuccessorIndex(); -+#else - unsigned index = si->findCaseValue(ci).getSuccessorIndex(); -+#endif - transferToBasicBlock(si->getSuccessor(index), si->getParent(), state); - } else { - // Handle possible different branch targets --- -2.19.0 - diff --git a/0005-llvm5-handle-new-file_magic-s-location.patch b/0005-llvm5-handle-new-file_magic-s-location.patch deleted file mode 100644 index 92051f8..0000000 --- a/0005-llvm5-handle-new-file_magic-s-location.patch +++ /dev/null @@ -1,63 +0,0 @@ -From: Jiri Slaby -Date: Mon, 15 Jan 2018 10:42:53 +0100 -Subject: llvm5: handle new file_magic's location -Patch-mainline: no - -llvm 5, moved file_magic to BinaryFormat in commit -19ca2b0f9daed883c21730285d7f04424e5f5f88, so adapt to that. - -Signed-off-by: Jiri Slaby ---- - lib/Module/ModuleUtil.cpp | 15 ++++++++++++++- - 1 file changed, 14 insertions(+), 1 deletion(-) - -diff --git a/lib/Module/ModuleUtil.cpp b/lib/Module/ModuleUtil.cpp -index bfec9e7dc7ff..ecc114460a3f 100644 ---- a/lib/Module/ModuleUtil.cpp -+++ b/lib/Module/ModuleUtil.cpp -@@ -14,6 +14,9 @@ - #include "klee/Internal/Support/ErrorHandling.h" - #include "../Core/SpecialFunctionHandler.h" - -+#if LLVM_VERSION_CODE >= LLVM_VERSION(5, 0) -+#include "llvm/BinaryFormat/Magic.h" -+#endif - #include "llvm/IR/Function.h" - #include "llvm/IR/Instructions.h" - #include "llvm/IR/IntrinsicInst.h" -@@ -381,13 +384,19 @@ bool klee::loadFile(const std::string &fileName, LLVMContext &context, - MemoryBuffer *Buffer = bufferErr->get(); - #endif - --#if LLVM_VERSION_CODE >= LLVM_VERSION(3, 6) -+#if LLVM_VERSION_CODE >= LLVM_VERSION(5, 0) -+ file_magic magic = identify_magic(Buffer.getBuffer()); -+#elif LLVM_VERSION_CODE >= LLVM_VERSION(3, 6) - sys::fs::file_magic magic = sys::fs::identify_magic(Buffer.getBuffer()); - #else - sys::fs::file_magic magic = sys::fs::identify_magic(Buffer->getBuffer()); - #endif - -+#if LLVM_VERSION_CODE >= LLVM_VERSION(5, 0) -+ if (magic == file_magic::bitcode) { -+#else - if (magic == sys::fs::file_magic::bitcode) { -+#endif - SMDiagnostic Err; - #if LLVM_VERSION_CODE >= LLVM_VERSION(3, 6) - std::unique_ptr module(parseIR(Buffer, Err, context)); -@@ -404,7 +413,11 @@ bool klee::loadFile(const std::string &fileName, LLVMContext &context, - return true; - } - -+#if LLVM_VERSION_CODE >= LLVM_VERSION(5, 0) -+ if (magic == file_magic::archive) { -+#else - if (magic == sys::fs::file_magic::archive) { -+#endif - #if LLVM_VERSION_CODE >= LLVM_VERSION(3, 9) - Expected > archOwner = - object::createBinary(Buffer, &context); --- -2.19.0 - diff --git a/0006-llvm5-use-MutableArrayRef-for-APFloat-convertToInteg.patch b/0006-llvm5-use-MutableArrayRef-for-APFloat-convertToInteg.patch deleted file mode 100644 index 639c0c5..0000000 --- a/0006-llvm5-use-MutableArrayRef-for-APFloat-convertToInteg.patch +++ /dev/null @@ -1,49 +0,0 @@ -From: Jiri Slaby -Date: Mon, 15 Jan 2018 11:07:47 +0100 -Subject: llvm5: use MutableArrayRef for APFloat::convertToInteger -Patch-mainline: no - -In llvm 5, since commit 957caa243d9270df37a566aedae3f1244e7b62ef, the -first parameter to APFloat::convertToInteger is MutableArrayRef. So -handle that. - -Signed-off-by: Jiri Slaby ---- - lib/Core/Executor.cpp | 14 ++++++++++++-- - 1 file changed, 12 insertions(+), 2 deletions(-) - -diff --git a/lib/Core/Executor.cpp b/lib/Core/Executor.cpp -index 64d0f66e4073..b5d7e6ce8f6c 100644 ---- a/lib/Core/Executor.cpp -+++ b/lib/Core/Executor.cpp -@@ -2326,7 +2326,12 @@ void Executor::executeInstruction(ExecutionState &state, KInstruction *ki) { - llvm::APFloat Arg(*fpWidthToSemantics(arg->getWidth()), arg->getAPValue()); - uint64_t value = 0; - bool isExact = true; -- Arg.convertToInteger(&value, resultType, false, -+#if LLVM_VERSION_CODE >= LLVM_VERSION(5, 0) -+ auto valueRef = makeMutableArrayRef(value); -+#else -+ uint64_t *valueRef = &value; -+#endif -+ Arg.convertToInteger(valueRef, resultType, false, - llvm::APFloat::rmTowardZero, &isExact); - bindLocal(ki, state, ConstantExpr::alloc(value, resultType)); - break; -@@ -2343,7 +2348,12 @@ void Executor::executeInstruction(ExecutionState &state, KInstruction *ki) { - - uint64_t value = 0; - bool isExact = true; -- Arg.convertToInteger(&value, resultType, true, -+#if LLVM_VERSION_CODE >= LLVM_VERSION(5, 0) -+ auto valueRef = makeMutableArrayRef(value); -+#else -+ uint64_t *valueRef = &value; -+#endif -+ Arg.convertToInteger(valueRef, resultType, true, - llvm::APFloat::rmTowardZero, &isExact); - bindLocal(ki, state, ConstantExpr::alloc(value, resultType)); - break; --- -2.19.0 - diff --git a/0007-llvm5-Intrinsic-objectsize-has-three-arguments.patch b/0007-llvm5-Intrinsic-objectsize-has-three-arguments.patch deleted file mode 100644 index d83c820..0000000 --- a/0007-llvm5-Intrinsic-objectsize-has-three-arguments.patch +++ /dev/null @@ -1,52 +0,0 @@ -From: Jiri Slaby -Date: Wed, 23 May 2018 15:01:34 +0200 -Subject: llvm5: Intrinsic::objectsize has three arguments -Patch-mainline: no - -Modify the IntrinsicCleaner accordingly. - -We do not do anything with the third argument as we do not handle the -first argument in any way. - -Signed-off-by: Jiri Slaby ---- - lib/Module/IntrinsicCleaner.cpp | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - -diff --git a/lib/Module/IntrinsicCleaner.cpp b/lib/Module/IntrinsicCleaner.cpp -index ab16a2654492..ee65be69e543 100644 ---- a/lib/Module/IntrinsicCleaner.cpp -+++ b/lib/Module/IntrinsicCleaner.cpp -@@ -227,13 +227,29 @@ bool IntrinsicCleanerPass::runOnBasicBlock(BasicBlock &b, Module &M) { - case Intrinsic::objectsize: { - // We don't know the size of an object in general so we replace - // with 0 or -1 depending on the second argument to the intrinsic. -+#if LLVM_VERSION_CODE >= LLVM_VERSION(5, 0) -+ assert(ii->getNumArgOperands() == 3 && "wrong number of arguments"); -+#else - assert(ii->getNumArgOperands() == 2 && "wrong number of arguments"); -+#endif -+ - Value *minArg = ii->getArgOperand(1); - assert(minArg && "Failed to get second argument"); - ConstantInt *minArgAsInt = dyn_cast(minArg); - assert(minArgAsInt && "Second arg is not a ConstantInt"); - assert(minArgAsInt->getBitWidth() == 1 && - "Second argument is not an i1"); -+ -+#if LLVM_VERSION_CODE >= LLVM_VERSION(5, 0) -+ auto nullArg = ii->getArgOperand(2); -+ assert(nullArg && "Failed to get second argument"); -+ auto nullArgAsInt = dyn_cast(nullArg); -+ assert(nullArgAsInt && "Third arg is not a ConstantInt"); -+ assert(nullArgAsInt->getBitWidth() == 1 && -+ "Third argument is not an i1"); -+ /* TODO should we do something with the 3rd argument? */ -+#endif -+ - Value *replacement = NULL; - IntegerType *intType = dyn_cast(ii->getType()); - assert(intType && "intrinsic does not have integer return type"); --- -2.19.0 - diff --git a/0008-llvm5-test-change-objectsize.patch b/0008-llvm5-test-change-objectsize.patch deleted file mode 100644 index 09d22a1..0000000 --- a/0008-llvm5-test-change-objectsize.patch +++ /dev/null @@ -1,99 +0,0 @@ -From: Jiri Slaby -Date: Wed, 23 May 2018 14:54:48 +0200 -Subject: llvm5: test, change objectsize -Patch-mainline: no - -@llvm.objectsize has now three aguments, so fix the tests accordingly. - -Signed-off-by: Jiri Slaby ---- - test/Intrinsics/objectsize.leq49.ll | 38 +++++++++++++++++++++++++++++ - test/Intrinsics/objectsize.ll | 9 ++++--- - 2 files changed, 43 insertions(+), 4 deletions(-) - create mode 100644 test/Intrinsics/objectsize.leq49.ll - -diff --git a/test/Intrinsics/objectsize.leq49.ll b/test/Intrinsics/objectsize.leq49.ll -new file mode 100644 -index 000000000000..1d184bdf292d ---- /dev/null -+++ b/test/Intrinsics/objectsize.leq49.ll -@@ -0,0 +1,38 @@ -+; Unfortunately LLVM 2.9 has a different suffix for the ``llvm.objectsize`` instrinsic -+; so this LLVM IR fails to verify for that version. -+; -+; LLVM 3.7 requires a type as the first argument to 'load' -+; REQUIRES: geq-llvm-3.7 -+; REQUIRES: lt-llvm-5.0 -+; RUN: %llvmas %s -o=%t.bc -+; RUN: rm -rf %t.klee-out -+; RUN: %klee -exit-on-error --output-dir=%t.klee-out -disable-opt %t.bc -+; ModuleID = 'objectsize.c' -+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" -+target triple = "x86_64-unknown-linux-gnu" -+ -+define i32 @main() nounwind uwtable { -+entry: -+ %a = alloca i8*, align 8 -+ %0 = load i8*, i8** %a, align 8 -+ %1 = call i64 @llvm.objectsize.i64.p0i8(i8* %0, i1 true) -+ %cmp = icmp ne i64 %1, 0 -+ br i1 %cmp, label %abort.block, label %continue.block -+ -+continue.block: -+ %2 = load i8*, i8** %a, align 8 -+ %3 = call i64 @llvm.objectsize.i64.p0i8(i8* %2, i1 false) -+ %cmp1 = icmp ne i64 %3, -1 -+ br i1 %cmp1, label %abort.block, label %exit.block -+ -+exit.block: -+ ret i32 0 -+ -+abort.block: -+ call void @abort() -+ unreachable -+} -+ -+declare i64 @llvm.objectsize.i64.p0i8(i8*, i1) nounwind readnone -+ -+declare void @abort() noreturn nounwind -diff --git a/test/Intrinsics/objectsize.ll b/test/Intrinsics/objectsize.ll -index 3a111f99c619..95070e66e45c 100644 ---- a/test/Intrinsics/objectsize.ll -+++ b/test/Intrinsics/objectsize.ll -@@ -2,7 +2,8 @@ - ; so this LLVM IR fails to verify for that version. - ; - ; LLVM 3.7 requires a type as the first argument to 'load' --; REQUIRES: geq-llvm-3.7 -+; LLVM 5 added nullunknown parameter to @llvm.objectsize -+; REQUIRES: geq-llvm-5.0 - ; RUN: %llvmas %s -o=%t.bc - ; RUN: rm -rf %t.klee-out - ; RUN: %klee -exit-on-error --output-dir=%t.klee-out -disable-opt %t.bc -@@ -14,13 +15,13 @@ define i32 @main() nounwind uwtable { - entry: - %a = alloca i8*, align 8 - %0 = load i8*, i8** %a, align 8 -- %1 = call i64 @llvm.objectsize.i64.p0i8(i8* %0, i1 true) -+ %1 = call i64 @llvm.objectsize.i64.p0i8(i8* %0, i1 true, i1 false) - %cmp = icmp ne i64 %1, 0 - br i1 %cmp, label %abort.block, label %continue.block - - continue.block: - %2 = load i8*, i8** %a, align 8 -- %3 = call i64 @llvm.objectsize.i64.p0i8(i8* %2, i1 false) -+ %3 = call i64 @llvm.objectsize.i64.p0i8(i8* %2, i1 false, i1 false) - %cmp1 = icmp ne i64 %3, -1 - br i1 %cmp1, label %abort.block, label %exit.block - -@@ -32,6 +33,6 @@ abort.block: - unreachable - } - --declare i64 @llvm.objectsize.i64.p0i8(i8*, i1) nounwind readnone -+declare i64 @llvm.objectsize.i64.p0i8(i8*, i1, i1) nounwind readnone - - declare void @abort() noreturn nounwind --- -2.19.0 - diff --git a/0009-llvm5-test-add-disable-O0-optnone-to-O0.patch b/0009-llvm5-test-add-disable-O0-optnone-to-O0.patch deleted file mode 100644 index 3c2b302..0000000 --- a/0009-llvm5-test-add-disable-O0-optnone-to-O0.patch +++ /dev/null @@ -1,1564 +0,0 @@ -From: Jiri Slaby -Date: Sun, 27 May 2018 10:26:43 +0200 -Subject: llvm5: test, add -disable-O0-optnone to -O0 -Patch-mainline: no - -Otherwise optimizations done in klee won't have any effect. - -Signed-off-by: Jiri Slaby ---- - runtime/CMakeLists.txt | 8 +++++++- - runtime/Makefile.cmake.bitcode.rules | 2 +- - test/CXX/ArrayNew.cpp | 2 +- - test/CXX/New.cpp | 2 +- - test/CXX/SimpleVirtual.cpp | 2 +- - test/CXX/StaticConstructor.cpp | 2 +- - test/CXX/StaticDestructor.cpp | 2 +- - test/CXX/Trivial.cpp | 2 +- - test/Coverage/ReadArgs.c | 2 +- - test/Coverage/ReplayOutDir.c | 2 +- - test/Feature/AliasFunction.c | 2 +- - test/Feature/AliasFunctionExit.c | 2 +- - test/Feature/ByteSwap.c | 2 +- - test/Feature/CheckForImpliedValue.c.failing | 2 +- - test/Feature/CompressedExprLogging.c | 2 +- - test/Feature/DanglingConcreteReadExpr.c | 2 +- - test/Feature/DoubleFree.c | 2 +- - test/Feature/DumpStatesOnHalt.c | 2 +- - test/Feature/ExitOnErrorType.c | 2 +- - test/Feature/ExprLogging.c | 2 +- - test/Feature/FloatingPt.c | 2 +- - test/Feature/InAndOutOfBounds.c | 2 +- - test/Feature/IsSymbolic.c | 2 +- - test/Feature/KleeReportError.c | 2 +- - test/Feature/LargeReturnTypes.cpp | 2 +- - test/Feature/LinkLLVMLib.c | 4 ++-- - test/Feature/LongDouble.c | 2 +- - test/Feature/LongDoubleSupport.c | 2 +- - test/Feature/MultipleFreeResolution.c | 2 +- - test/Feature/MultipleReadResolution.c | 2 +- - test/Feature/MultipleReallocResolution.c | 2 +- - test/Feature/MultipleWriteResolution.c | 2 +- - test/Feature/OneFreeError.c | 2 +- - test/Feature/OneOutOfBounds.c | 2 +- - test/Feature/Optimize.c | 2 +- - test/Feature/OverlappedError.c | 2 +- - test/Feature/OvershiftCheck.c | 2 +- - test/Feature/PreferCex.c | 2 +- - test/Feature/RaiseAsm.c | 2 +- - test/Feature/Realloc.c | 2 +- - test/Feature/ReplayPath.c | 4 ++-- - test/Feature/RewriteEqualities.c | 2 +- - test/Feature/Searchers.c | 2 +- - test/Feature/SolverTimeout.c | 2 +- - test/Feature/SourceMapping.c | 2 +- - test/Feature/VarArgLongDouble.c | 2 +- - test/Feature/Vararg.c | 2 +- - test/Feature/WithLibc.c | 2 +- - test/Feature/arithmetic-right-overshift-sym-conc.c | 2 +- - test/Feature/consecutive_divide_by_zero.c | 2 +- - test/Feature/const_array_opt1.c | 2 +- - test/Feature/left-overshift-sym-conc.c | 2 +- - test/Feature/logical-right-overshift-sym-conc.c | 2 +- - test/Feature/srem.c | 2 +- - test/Feature/ubsan_signed_overflow.c | 2 +- - test/Feature/ubsan_unsigned_overflow.c | 2 +- - test/Programs/pcregrep.c | 2 +- - test/Replay/libkleeruntest/replay_invalid_klee_assume.c | 2 +- - test/Replay/libkleeruntest/replay_invalid_klee_choose.c | 2 +- - test/Replay/libkleeruntest/replay_invalid_klee_range.c | 2 +- - test/Replay/libkleeruntest/replay_invalid_num_objects.c | 2 +- - test/Replay/libkleeruntest/replay_invalid_object_names.c | 2 +- - test/Replay/libkleeruntest/replay_invalid_object_size.c | 2 +- - test/Replay/libkleeruntest/replay_klee_prefer_cex.c | 2 +- - test/Replay/libkleeruntest/replay_posix_runtime.c | 2 +- - test/Replay/libkleeruntest/replay_simple.c | 2 +- - test/Replay/libkleeruntest/replay_two_objects.c | 2 +- - test/Runtime/POSIX/DirConsistency.c | 4 ++-- - test/Runtime/POSIX/DirSeek.c | 2 +- - test/Runtime/POSIX/FDNumbers.c | 2 +- - test/Runtime/POSIX/FD_Fail.c | 2 +- - test/Runtime/POSIX/FD_Fail2.c | 2 +- - test/Runtime/POSIX/Fcntl.c | 2 +- - test/Runtime/POSIX/FilePerm.c | 2 +- - test/Runtime/POSIX/FileTime.c | 2 +- - test/Runtime/POSIX/FreeArgv.c | 2 +- - test/Runtime/POSIX/Futimesat.c | 2 +- - test/Runtime/POSIX/Getenv.c | 2 +- - test/Runtime/POSIX/Ioctl.c | 2 +- - test/Runtime/POSIX/Isatty.c | 2 +- - test/Runtime/POSIX/MixedConcreteSymbolic.c | 2 +- - test/Runtime/POSIX/Openat.c | 2 +- - test/Runtime/POSIX/PrgName.c | 2 +- - test/Runtime/POSIX/Read1.c | 2 +- - test/Runtime/POSIX/Replay.c | 2 +- - test/Runtime/POSIX/SELinux/SELinux.c | 2 +- - test/Runtime/POSIX/SeedAndFail.c | 2 +- - test/Runtime/POSIX/Stdin.c | 2 +- - test/Runtime/POSIX/Write1.c | 2 +- - test/Runtime/POSIX/Write2.c | 2 +- - .../2007-10-08-optimization-calls-wrong-libc-functions.c | 2 +- - .../Uclibc/2008-03-04-libc-atexit-uses-dso-handle.c | 2 +- - test/Solver/Z3ConstantArray.c | 2 +- - test/VectorInstructions/extract_element.c | 2 +- - test/VectorInstructions/extract_element_symbolic.c | 2 +- - test/VectorInstructions/floating_point_ops_constant.c | 2 +- - test/VectorInstructions/insert_element.c | 2 +- - test/VectorInstructions/insert_element_symbolic.c | 2 +- - test/VectorInstructions/integer_ops_constant.c | 2 +- - test/VectorInstructions/integer_ops_signed_symbolic.c | 2 +- - test/VectorInstructions/integer_ops_unsigned_symbolic.c | 2 +- - test/VectorInstructions/shuffle_element.c | 2 +- - test/lit.cfg | 2 +- - test/lit.site.cfg.in | 4 ++++ - .../2007-07-25-invalid-stp-array-binding-to-objectstate.c | 2 +- - test/regression/2007-07-30-unflushed-byte.c | 2 +- - .../2007-08-01-cache-unclear-on-overwrite-flushed.c | 2 +- - test/regression/2007-08-06-64bit-shift.c | 2 +- - test/regression/2007-08-06-access-after-free.c | 2 +- - test/regression/2007-08-08-free-zero.c | 2 +- - test/regression/2007-08-16-valid-write-to-freed-object.c | 2 +- - test/regression/2007-10-11-free-of-alloca.c | 2 +- - .../2007-10-12-failed-make-symbolic-after-copy.c | 2 +- - test/regression/2008-03-04-free-of-global.c | 2 +- - test/regression/2008-03-11-free-of-malloc-zero.c | 2 +- - test/regression/2008-04-10-bad-alloca-free.c | 2 +- - test/regression/2008-05-23-gep-with-global-const.c | 2 +- - test/regression/2012-05-13-asm-causes-aborts.c | 2 +- - test/regression/2014-07-04-unflushed-error-report.c | 2 +- - test/regression/2014-09-13-debug-info.c | 2 +- - test/regression/2014-12-08-ashr.c | 2 +- - test/regression/2015-06-22-struct-write.c | 2 +- - test/regression/2015-08-05-invalid-fork.c | 2 +- - test/regression/2015-08-30-empty-constraints.c | 2 +- - test/regression/2015-08-30-sdiv-1.c | 2 +- - test/regression/2016-04-14-sdiv-2.c | 2 +- - test/regression/2016-06-28-div-zero-bug.c | 2 +- - test/regression/2016-08-06-klee-get-obj-size.c | 2 +- - test/regression/2016-08-11-entry-point-internalize-pass.c | 2 +- - test/regression/2016-08-12-empty-file.c | 2 +- - test/regression/2016-11-24-bitcast-weak-alias.c | 2 +- - test/regression/2016-12-14-alloc-alignment.c | 2 +- - test/regression/2017-02-21-pathOS-id.c | 2 +- - test/regression/2017-03-23-early-exit-log-stats.c | 2 +- - .../2018-05-05-number-instructions-dumped-states.c | 2 +- - 135 files changed, 147 insertions(+), 137 deletions(-) - -diff --git a/runtime/CMakeLists.txt b/runtime/CMakeLists.txt -index 61693afc2cab..e3619f3d4609 100644 ---- a/runtime/CMakeLists.txt -+++ b/runtime/CMakeLists.txt -@@ -91,13 +91,19 @@ ExternalProject_Add(BuildKLEERuntimes - INSTALL_COMMAND "${CMAKE_COMMAND}" -E echo "" # Dummy command - ) - -+set(O0OPT "-O0") -+if (${LLVM_VERSION_MAJOR} GREATER 4) -+ set(O0OPT "${O0OPT} -Xclang -disable-O0-optnone") -+endif() -+ -+ - # Use `ExternalProject_Add_Step` with `ALWAYS` argument instead of directly - # building in `ExternalProject_Add` with `BUILD_ALWAYS` argument due to lack of - # support for the `BUILD_ALWAYS` argument in CMake < 3.1. - ExternalProject_Add_Step(BuildKLEERuntimes RuntimeBuild - # `env` is used here to make sure `MAKEFLAGS` of KLEE's build - # is not propagated into the bitcode build system. -- COMMAND ${ENV_BINARY} MAKEFLAGS="" ${MAKE_BINARY} -f Makefile.cmake.bitcode all -+ COMMAND ${ENV_BINARY} MAKEFLAGS="" O0OPT=${O0OPT} ${MAKE_BINARY} -f Makefile.cmake.bitcode all - ALWAYS ${EXTERNAL_PROJECT_BUILD_ALWAYS_ARG} - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" - ${EXTERNAL_PROJECT_ADD_STEP_USES_TERMINAL_ARG} -diff --git a/runtime/Makefile.cmake.bitcode.rules b/runtime/Makefile.cmake.bitcode.rules -index 41b2814e1241..db731ac5df3a 100644 ---- a/runtime/Makefile.cmake.bitcode.rules -+++ b/runtime/Makefile.cmake.bitcode.rules -@@ -40,7 +40,7 @@ endif - ifeq ($(IS_RELEASE),1) - LLVMCC.Flags += -O2 - else --LLVMCC.Flags += -O0 -+LLVMCC.Flags += $(O0OPT) - endif - - # Handle assertion flags -diff --git a/test/CXX/ArrayNew.cpp b/test/CXX/ArrayNew.cpp -index 6a54083aafac..baad95fe4473 100644 ---- a/test/CXX/ArrayNew.cpp -+++ b/test/CXX/ArrayNew.cpp -@@ -1,4 +1,4 @@ --// RUN: %llvmgxx %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgxx %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --no-output --exit-on-error --no-externals %t1.bc - -diff --git a/test/CXX/New.cpp b/test/CXX/New.cpp -index 5b90c7a46dc4..71784f9f9598 100644 ---- a/test/CXX/New.cpp -+++ b/test/CXX/New.cpp -@@ -1,4 +1,4 @@ --// RUN: %llvmgxx %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgxx %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --no-output --exit-on-error --no-externals %t1.bc - -diff --git a/test/CXX/SimpleVirtual.cpp b/test/CXX/SimpleVirtual.cpp -index b2db980dc7b7..7d0faa0842fc 100644 ---- a/test/CXX/SimpleVirtual.cpp -+++ b/test/CXX/SimpleVirtual.cpp -@@ -1,4 +1,4 @@ --// RUN: %llvmgxx %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgxx %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --no-output --exit-on-error --no-externals %t1.bc - -diff --git a/test/CXX/StaticConstructor.cpp b/test/CXX/StaticConstructor.cpp -index c184526e3601..3c61aec45acb 100644 ---- a/test/CXX/StaticConstructor.cpp -+++ b/test/CXX/StaticConstructor.cpp -@@ -1,4 +1,4 @@ --// RUN: %llvmgxx %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgxx %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --libc=klee --no-output --exit-on-error %t1.bc - -diff --git a/test/CXX/StaticDestructor.cpp b/test/CXX/StaticDestructor.cpp -index 2cf01e3b6d33..15520fc48504 100644 ---- a/test/CXX/StaticDestructor.cpp -+++ b/test/CXX/StaticDestructor.cpp -@@ -1,6 +1,6 @@ - // don't optimize this, llvm likes to turn the *p into unreachable - --// RUN: %llvmgxx %s -emit-llvm -g -O0 -c -o %t1.bc -+// RUN: %llvmgxx %s -emit-llvm -g %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --optimize=false --libc=klee --no-output %t1.bc 2> %t1.log - // RUN: FileCheck --input-file %t1.log %s -diff --git a/test/CXX/Trivial.cpp b/test/CXX/Trivial.cpp -index 2b8ceed36cb9..18845820c067 100644 ---- a/test/CXX/Trivial.cpp -+++ b/test/CXX/Trivial.cpp -@@ -1,4 +1,4 @@ --// RUN: %llvmgxx %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgxx %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --no-output --exit-on-error %t1.bc - -diff --git a/test/Coverage/ReadArgs.c b/test/Coverage/ReadArgs.c -index 8eae53a1efbc..531cc0a1dfe5 100644 ---- a/test/Coverage/ReadArgs.c -+++ b/test/Coverage/ReadArgs.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: echo " --output-dir=%t.klee-out " > %t1.args - // RUN: %klee @%t1.args %t1.bc -diff --git a/test/Coverage/ReplayOutDir.c b/test/Coverage/ReplayOutDir.c -index d9bffea09660..fa06a2697c21 100644 ---- a/test/Coverage/ReplayOutDir.c -+++ b/test/Coverage/ReplayOutDir.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t1.out %t1.replay - // RUN: %klee --output-dir=%t1.out %t1.bc - // RUN: %klee --output-dir=%t1.replay --replay-ktest-dir=%t1.out %t1.bc -diff --git a/test/Feature/AliasFunction.c b/test/Feature/AliasFunction.c -index 019ebe674036..1fd9d0e51ee8 100644 ---- a/test/Feature/AliasFunction.c -+++ b/test/Feature/AliasFunction.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc > %t1.log - // RUN: grep -c foo %t1.log | grep 5 -diff --git a/test/Feature/AliasFunctionExit.c b/test/Feature/AliasFunctionExit.c -index 09ca8f469336..4f0f8359aa4a 100644 ---- a/test/Feature/AliasFunctionExit.c -+++ b/test/Feature/AliasFunctionExit.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc > %t1.log - // RUN: grep -c START %t1.log | grep 1 -diff --git a/test/Feature/ByteSwap.c b/test/Feature/ByteSwap.c -index a22289059bb2..da764fc0c7c9 100644 ---- a/test/Feature/ByteSwap.c -+++ b/test/Feature/ByteSwap.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --libc=klee --exit-on-error %t1.bc - -diff --git a/test/Feature/CheckForImpliedValue.c.failing b/test/Feature/CheckForImpliedValue.c.failing -index 0aa50f0bc1e8..2f45ec2e5261 100644 ---- a/test/Feature/CheckForImpliedValue.c.failing -+++ b/test/Feature/CheckForImpliedValue.c.failing -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -f %t1.log - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --log-file %t1.log --debug-check-for-implied-values %t1.bc -diff --git a/test/Feature/CompressedExprLogging.c b/test/Feature/CompressedExprLogging.c -index ba20428d9992..d2eafca8ebb4 100644 ---- a/test/Feature/CompressedExprLogging.c -+++ b/test/Feature/CompressedExprLogging.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t1.bc - // We disable the cex-cache to eliminate nondeterminism across different - // solvers, in particular when counting the number of queries in the last two - // commands -diff --git a/test/Feature/DanglingConcreteReadExpr.c b/test/Feature/DanglingConcreteReadExpr.c -index 861f93ebc4a6..d904fd984393 100644 ---- a/test/Feature/DanglingConcreteReadExpr.c -+++ b/test/Feature/DanglingConcreteReadExpr.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --optimize=false --output-dir=%t.klee-out %t1.bc - // RUN: grep "total queries = 2" %t.klee-out/info -diff --git a/test/Feature/DoubleFree.c b/test/Feature/DoubleFree.c -index b24de17d8bac..3dbe4b24975b 100644 ---- a/test/Feature/DoubleFree.c -+++ b/test/Feature/DoubleFree.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc 2>&1 | FileCheck %s - // RUN: test -f %t.klee-out/test000001.ptr.err -diff --git a/test/Feature/DumpStatesOnHalt.c b/test/Feature/DumpStatesOnHalt.c -index bc30245603be..2176779888e3 100644 ---- a/test/Feature/DumpStatesOnHalt.c -+++ b/test/Feature/DumpStatesOnHalt.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -g -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -g -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --stop-after-n-instructions=1 --dump-states-on-halt=true %t1.bc 2>&1 | FileCheck %s - // RUN: test -f %t.klee-out/test000001.ktest -diff --git a/test/Feature/ExitOnErrorType.c b/test/Feature/ExitOnErrorType.c -index a68a92e06f63..0cbde8aa2247 100644 ---- a/test/Feature/ExitOnErrorType.c -+++ b/test/Feature/ExitOnErrorType.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -g -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -g -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out -exit-on-error-type Assert %t1.bc 2>&1 - -diff --git a/test/Feature/ExprLogging.c b/test/Feature/ExprLogging.c -index a85afc1bf3ef..142c41674ea1 100644 ---- a/test/Feature/ExprLogging.c -+++ b/test/Feature/ExprLogging.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t1.bc - // We disable the cex-cache to eliminate nondeterminism across different solvers, in particular when counting the number of queries in the last two commands - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --use-cex-cache=false --use-query-log=all:kquery,all:smt2,solver:kquery,solver:smt2 --write-kqueries --write-cvcs --write-smt2s %t1.bc 2> %t2.log -diff --git a/test/Feature/FloatingPt.c b/test/Feature/FloatingPt.c -index be0879358028..e6e695ca2cb7 100644 ---- a/test/Feature/FloatingPt.c -+++ b/test/Feature/FloatingPt.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --exit-on-error %t1.bc - -diff --git a/test/Feature/InAndOutOfBounds.c b/test/Feature/InAndOutOfBounds.c -index 9b913609c046..3c6fe37ec8aa 100644 ---- a/test/Feature/InAndOutOfBounds.c -+++ b/test/Feature/InAndOutOfBounds.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -g -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -g -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc 2>&1 | FileCheck %s - // RUN: test -f %t.klee-out/test000001.ptr.err -o -f %t.klee-out/test000002.ptr.err -diff --git a/test/Feature/IsSymbolic.c b/test/Feature/IsSymbolic.c -index 02aa23320075..8e39b99ff894 100644 ---- a/test/Feature/IsSymbolic.c -+++ b/test/Feature/IsSymbolic.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc - -diff --git a/test/Feature/KleeReportError.c b/test/Feature/KleeReportError.c -index 96879a5571f9..b83472549a7b 100644 ---- a/test/Feature/KleeReportError.c -+++ b/test/Feature/KleeReportError.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -g -emit-llvm -O0 -c -o %t2.bc -+// RUN: %llvmgcc %s -g -emit-llvm %O0opt -c -o %t2.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --emit-all-errors %t2.bc 2>&1 | FileCheck %s - // RUN: ls %t.klee-out/ | grep .my.err | wc -l | grep 2 -diff --git a/test/Feature/LargeReturnTypes.cpp b/test/Feature/LargeReturnTypes.cpp -index 84119624372f..92be31c28043 100644 ---- a/test/Feature/LargeReturnTypes.cpp -+++ b/test/Feature/LargeReturnTypes.cpp -@@ -1,5 +1,5 @@ - // REQUIRES: not-darwin --// RUN: %llvmgxx -g -fno-exceptions -emit-llvm -O0 -c -o %t.bc %s -+// RUN: %llvmgxx -g -fno-exceptions -emit-llvm %O0opt -c -o %t.bc %s - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --libc=klee --no-output --exit-on-error %t.bc > %t.log - -diff --git a/test/Feature/LinkLLVMLib.c b/test/Feature/LinkLLVMLib.c -index 349314099886..1ad0fd386662 100644 ---- a/test/Feature/LinkLLVMLib.c -+++ b/test/Feature/LinkLLVMLib.c -@@ -1,7 +1,7 @@ --// RUN: %llvmgcc %s -g -emit-llvm -O0 -c -o %t1.bc -DLINK_LLVM_LIB_TEST_LIB -+// RUN: %llvmgcc %s -g -emit-llvm %O0opt -c -o %t1.bc -DLINK_LLVM_LIB_TEST_LIB - // RUN: %llvmar r %t1.a %t1.bc - // --// RUN: %llvmgcc %s -g -emit-llvm -O0 -c -o %t2.bc -DLINK_LLVM_LIB_TEST_EXEC -+// RUN: %llvmgcc %s -g -emit-llvm %O0opt -c -o %t2.bc -DLINK_LLVM_LIB_TEST_EXEC - // RUN: rm -rf %t.klee-out - // RUN: %klee --link-llvm-lib %t1.a --output-dir=%t.klee-out --emit-all-errors --warnings-only-to-file=false %t2.bc 2>&1 | FileCheck %s - -diff --git a/test/Feature/LongDouble.c b/test/Feature/LongDouble.c -index f69582b87794..19f9360a6f5c 100644 ---- a/test/Feature/LongDouble.c -+++ b/test/Feature/LongDouble.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc -g -emit-llvm -O0 -c -o %t.bc %s -+// RUN: %llvmgcc -g -emit-llvm %O0opt -c -o %t.bc %s - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --libc=klee --no-output --exit-on-error %t.bc > %t.log - // RUN: FileCheck %s --input-file=%t.log -diff --git a/test/Feature/LongDoubleSupport.c b/test/Feature/LongDoubleSupport.c -index 4ea9daee629f..acde2d8ee5bf 100644 ---- a/test/Feature/LongDoubleSupport.c -+++ b/test/Feature/LongDoubleSupport.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --optimize=0 --exit-on-error %t1.bc > %t2.out - -diff --git a/test/Feature/MultipleFreeResolution.c b/test/Feature/MultipleFreeResolution.c -index 5c7dfdd8c941..540324a596a8 100644 ---- a/test/Feature/MultipleFreeResolution.c -+++ b/test/Feature/MultipleFreeResolution.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -g -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -g -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --emit-all-errors %t1.bc 2>&1 | FileCheck %s - // RUN: ls %t.klee-out/ | grep .ktest | wc -l | grep 4 -diff --git a/test/Feature/MultipleReadResolution.c b/test/Feature/MultipleReadResolution.c -index a586a3c8bd50..6226d64a9e4a 100644 ---- a/test/Feature/MultipleReadResolution.c -+++ b/test/Feature/MultipleReadResolution.c -@@ -2,7 +2,7 @@ - // RUN: echo "x" >> %t1.res - // RUN: echo "x" >> %t1.res - // RUN: echo "x" >> %t1.res --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc > %t1.log - // RUN: diff %t1.res %t1.log -diff --git a/test/Feature/MultipleReallocResolution.c b/test/Feature/MultipleReallocResolution.c -index a95d9d754cce..4db6be9f0332 100644 ---- a/test/Feature/MultipleReallocResolution.c -+++ b/test/Feature/MultipleReallocResolution.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc - // RUN: ls %t.klee-out/ | grep .err | wc -l | grep 2 -diff --git a/test/Feature/MultipleWriteResolution.c b/test/Feature/MultipleWriteResolution.c -index 5f9068360df5..22dd973047cc 100644 ---- a/test/Feature/MultipleWriteResolution.c -+++ b/test/Feature/MultipleWriteResolution.c -@@ -2,7 +2,7 @@ - // RUN: echo "x" >> %t1.res - // RUN: echo "x" >> %t1.res - // RUN: echo "x" >> %t1.res --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc > %t1.log - // RUN: diff %t1.res %t1.log -diff --git a/test/Feature/OneFreeError.c b/test/Feature/OneFreeError.c -index 64a0425dc11d..e68f333f7232 100644 ---- a/test/Feature/OneFreeError.c -+++ b/test/Feature/OneFreeError.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -g -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -g -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc 2>&1 | FileCheck %s - // RUN: test -f %t.klee-out/test000001.ptr.err -diff --git a/test/Feature/OneOutOfBounds.c b/test/Feature/OneOutOfBounds.c -index 88a2ae435418..01fa0f922f68 100644 ---- a/test/Feature/OneOutOfBounds.c -+++ b/test/Feature/OneOutOfBounds.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -g -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -g -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc 2>&1 | FileCheck %s - // RUN: test -f %t.klee-out/test000001.ptr.err -diff --git a/test/Feature/Optimize.c b/test/Feature/Optimize.c -index 9aa963efd9c3..c0eb2d33559c 100644 ---- a/test/Feature/Optimize.c -+++ b/test/Feature/Optimize.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t2.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t2.bc - // RUN: rm -f %t2.log - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --stop-after-n-instructions=100 --optimize %t2.bc > %t3.log -diff --git a/test/Feature/OverlappedError.c b/test/Feature/OverlappedError.c -index a1b31f57cbc1..d02d2229dc3a 100644 ---- a/test/Feature/OverlappedError.c -+++ b/test/Feature/OverlappedError.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -g -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -g -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc - // RUN: ls %t.klee-out/ | grep .ktest | wc -l | grep 4 -diff --git a/test/Feature/OvershiftCheck.c b/test/Feature/OvershiftCheck.c -index ace54cee98f4..0a5cfc3b9704 100644 ---- a/test/Feature/OvershiftCheck.c -+++ b/test/Feature/OvershiftCheck.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out -check-overshift %t.bc 2> %t.log - // RUN: FileCheck --input-file %t.log %s -diff --git a/test/Feature/PreferCex.c b/test/Feature/PreferCex.c -index a765eea8b4af..8d88a3ce79bc 100644 ---- a/test/Feature/PreferCex.c -+++ b/test/Feature/PreferCex.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --exit-on-error %t1.bc - // RUN: ktest-tool %t.klee-out/test000001.ktest | FileCheck %s -diff --git a/test/Feature/RaiseAsm.c b/test/Feature/RaiseAsm.c -index f8ba173a10cb..fb30ea5df148 100644 ---- a/test/Feature/RaiseAsm.c -+++ b/test/Feature/RaiseAsm.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --exit-on-error %t1.bc - -diff --git a/test/Feature/Realloc.c b/test/Feature/Realloc.c -index d0c85b212858..4f075e5e3bc9 100644 ---- a/test/Feature/Realloc.c -+++ b/test/Feature/Realloc.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --exit-on-error --warnings-only-to-file=false %t1.bc 2>&1 | FileCheck %s - -diff --git a/test/Feature/ReplayPath.c b/test/Feature/ReplayPath.c -index 4a973dfdfe63..558b0d3c672a 100644 ---- a/test/Feature/ReplayPath.c -+++ b/test/Feature/ReplayPath.c -@@ -1,8 +1,8 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -DCOND_EXIT -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -DCOND_EXIT -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --write-paths %t1.bc > %t3.good - --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t2.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t2.bc - // RUN: rm -rf %t.klee-out-2 - // RUN: %klee --output-dir=%t.klee-out-2 --replay-path %t.klee-out/test000001.path %t2.bc > %t3.log - // RUN: diff %t3.log %t3.good -diff --git a/test/Feature/RewriteEqualities.c b/test/Feature/RewriteEqualities.c -index b3cc0ef78eae..5384c5c8faac 100644 ---- a/test/Feature/RewriteEqualities.c -+++ b/test/Feature/RewriteEqualities.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --search=dfs --write-kqueries --rewrite-equalities=false %t.bc - // RUN: grep "N0:(Read w8 2 x)" %t.klee-out/test000003.kquery -diff --git a/test/Feature/Searchers.c b/test/Feature/Searchers.c -index a24cb7a306d1..efc2f376e2f6 100644 ---- a/test/Feature/Searchers.c -+++ b/test/Feature/Searchers.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t2.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t2.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t2.bc - // RUN: rm -rf %t.klee-out -diff --git a/test/Feature/SolverTimeout.c b/test/Feature/SolverTimeout.c -index aa86a856d299..a2faf08a81ee 100644 ---- a/test/Feature/SolverTimeout.c -+++ b/test/Feature/SolverTimeout.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --max-solver-time=1 %t1.bc - // FIXME: This test occasionally fails when using Z3 4.4.1 but -diff --git a/test/Feature/SourceMapping.c b/test/Feature/SourceMapping.c -index bc13652d91e4..aa849c5f88c4 100644 ---- a/test/Feature/SourceMapping.c -+++ b/test/Feature/SourceMapping.c -@@ -1,7 +1,7 @@ - // Check that we properly associate instruction level statistics with source - // file and line. - // --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --exit-on-error %t1.bc - // RUN: FileCheck < %t.klee-out/run.istats %s -diff --git a/test/Feature/VarArgLongDouble.c b/test/Feature/VarArgLongDouble.c -index ae5531319d45..63ba85c8a337 100644 ---- a/test/Feature/VarArgLongDouble.c -+++ b/test/Feature/VarArgLongDouble.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t.bc | FileCheck %s - -diff --git a/test/Feature/Vararg.c b/test/Feature/Vararg.c -index 9f4e9dabb00e..239ec9a35bde 100644 ---- a/test/Feature/Vararg.c -+++ b/test/Feature/Vararg.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -g -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -g -o %t1.bc - // RUN: rm -rf %t.klee-out - // This test needs deterministic allocation with enough spacing between the allocations. - // Otherwise, if by coincidence the allocated vararg memory object is directly before another valid memory object, -diff --git a/test/Feature/WithLibc.c b/test/Feature/WithLibc.c -index 0eca8213f384..8c07041d89f6 100644 ---- a/test/Feature/WithLibc.c -+++ b/test/Feature/WithLibc.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t2.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t2.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --libc=klee %t2.bc > %t3.log - // RUN: echo "good" > %t3.good -diff --git a/test/Feature/arithmetic-right-overshift-sym-conc.c b/test/Feature/arithmetic-right-overshift-sym-conc.c -index 6a9bbc2113ac..4a0bc36f1989 100644 ---- a/test/Feature/arithmetic-right-overshift-sym-conc.c -+++ b/test/Feature/arithmetic-right-overshift-sym-conc.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out -use-cex-cache=1 -check-overshift=0 %t.bc - // RUN: not grep "ASSERTION FAIL" %t.klee-out/messages.txt -diff --git a/test/Feature/consecutive_divide_by_zero.c b/test/Feature/consecutive_divide_by_zero.c -index ebe0dcb54307..b44572aa7187 100644 ---- a/test/Feature/consecutive_divide_by_zero.c -+++ b/test/Feature/consecutive_divide_by_zero.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc -emit-llvm -c -g -O0 %s -o %t.bc -+// RUN: %llvmgcc -emit-llvm -c -g %O0opt %s -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out -check-div-zero -emit-all-errors=0 %t.bc 2> %t.log - // RUN: FileCheck --input-file=%t.log %s -diff --git a/test/Feature/const_array_opt1.c b/test/Feature/const_array_opt1.c -index ac43bdf7fd4b..b466e56ce784 100644 ---- a/test/Feature/const_array_opt1.c -+++ b/test/Feature/const_array_opt1.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --const-array-opt --max-time=10 --only-output-states-covering-new %t.bc >%t.log - // grep -q "Finished successfully!\n" -diff --git a/test/Feature/left-overshift-sym-conc.c b/test/Feature/left-overshift-sym-conc.c -index 8859c46cae71..05b89c683381 100644 ---- a/test/Feature/left-overshift-sym-conc.c -+++ b/test/Feature/left-overshift-sym-conc.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out -use-cex-cache=1 -check-overshift=0 %t.bc - // RUN: not grep "ASSERTION FAIL" %t.klee-out/messages.txt -diff --git a/test/Feature/logical-right-overshift-sym-conc.c b/test/Feature/logical-right-overshift-sym-conc.c -index 950b5992ccd0..b499cce6f46f 100644 ---- a/test/Feature/logical-right-overshift-sym-conc.c -+++ b/test/Feature/logical-right-overshift-sym-conc.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out -use-cex-cache=1 -check-overshift=0 %t.bc - // RUN: not grep "ASSERTION FAIL" %t.klee-out/messages.txt -diff --git a/test/Feature/srem.c b/test/Feature/srem.c -index f4fa8aa5c4b7..4c331dd0e76b 100644 ---- a/test/Feature/srem.c -+++ b/test/Feature/srem.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out -use-cex-cache=1 %t.bc - // RUN: grep "KLEE: done: explored paths = 5" %t.klee-out/info -diff --git a/test/Feature/ubsan_signed_overflow.c b/test/Feature/ubsan_signed_overflow.c -index 8d01f7d36045..f4636c335f90 100644 ---- a/test/Feature/ubsan_signed_overflow.c -+++ b/test/Feature/ubsan_signed_overflow.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -fsanitize=signed-integer-overflow -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -fsanitize=signed-integer-overflow -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t.bc 2>&1 | FileCheck %s - -diff --git a/test/Feature/ubsan_unsigned_overflow.c b/test/Feature/ubsan_unsigned_overflow.c -index e2d9592c37f2..4c783b4c32e7 100644 ---- a/test/Feature/ubsan_unsigned_overflow.c -+++ b/test/Feature/ubsan_unsigned_overflow.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -fsanitize=unsigned-integer-overflow -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -fsanitize=unsigned-integer-overflow -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t.bc 2>&1 | FileCheck %s - -diff --git a/test/Programs/pcregrep.c b/test/Programs/pcregrep.c -index 634e1cc626d7..e2cb5362d089 100644 ---- a/test/Programs/pcregrep.c -+++ b/test/Programs/pcregrep.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc -m32 %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc -m32 %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --libc=klee --exit-on-error %t1.bc 2 2 - // XFAIL: x86_64 -diff --git a/test/Replay/libkleeruntest/replay_invalid_klee_assume.c b/test/Replay/libkleeruntest/replay_invalid_klee_assume.c -index 10da56152bcf..2257d31d07da 100644 ---- a/test/Replay/libkleeruntest/replay_invalid_klee_assume.c -+++ b/test/Replay/libkleeruntest/replay_invalid_klee_assume.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc -DASSUME_VALUE=1 %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc -DASSUME_VALUE=1 %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --search=dfs %t.bc - // RUN: test -f %t.klee-out/test000001.ktest -diff --git a/test/Replay/libkleeruntest/replay_invalid_klee_choose.c b/test/Replay/libkleeruntest/replay_invalid_klee_choose.c -index c64f913d7a1b..4cc3676591fa 100644 ---- a/test/Replay/libkleeruntest/replay_invalid_klee_choose.c -+++ b/test/Replay/libkleeruntest/replay_invalid_klee_choose.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc -DBOUND_VALUE=32 -DFORCE_VALUE=20 %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc -DBOUND_VALUE=32 -DFORCE_VALUE=20 %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --search=dfs %t.bc - // RUN: test -f %t.klee-out/test000001.ktest -diff --git a/test/Replay/libkleeruntest/replay_invalid_klee_range.c b/test/Replay/libkleeruntest/replay_invalid_klee_range.c -index 6542199e931e..7ae348996fea 100644 ---- a/test/Replay/libkleeruntest/replay_invalid_klee_range.c -+++ b/test/Replay/libkleeruntest/replay_invalid_klee_range.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc -DBOUND_VALUE=32 -DFORCE_VALUE=20 %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc -DBOUND_VALUE=32 -DFORCE_VALUE=20 %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --libc=klee --search=dfs %t.bc - // RUN: test -f %t.klee-out/test000001.ktest -diff --git a/test/Replay/libkleeruntest/replay_invalid_num_objects.c b/test/Replay/libkleeruntest/replay_invalid_num_objects.c -index 39b389df42f4..438830678ab0 100644 ---- a/test/Replay/libkleeruntest/replay_invalid_num_objects.c -+++ b/test/Replay/libkleeruntest/replay_invalid_num_objects.c -@@ -1,5 +1,5 @@ - // Compile program that only makes one klee_make_symbolic() call --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --search=dfs %t.bc - // RUN: test -f %t.klee-out/test000001.ktest -diff --git a/test/Replay/libkleeruntest/replay_invalid_object_names.c b/test/Replay/libkleeruntest/replay_invalid_object_names.c -index 0285024c9746..67383a360b3a 100644 ---- a/test/Replay/libkleeruntest/replay_invalid_object_names.c -+++ b/test/Replay/libkleeruntest/replay_invalid_object_names.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc -DOBJ_NAME=simple_name %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc -DOBJ_NAME=simple_name %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --search=dfs %t.bc - // RUN: test -f %t.klee-out/test000001.ktest -diff --git a/test/Replay/libkleeruntest/replay_invalid_object_size.c b/test/Replay/libkleeruntest/replay_invalid_object_size.c -index 504a3bd07e27..7619cd62c339 100644 ---- a/test/Replay/libkleeruntest/replay_invalid_object_size.c -+++ b/test/Replay/libkleeruntest/replay_invalid_object_size.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc -DINT_TYPE=uint8_t %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc -DINT_TYPE=uint8_t %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --search=dfs %t.bc - // RUN: test -f %t.klee-out/test000001.ktest -diff --git a/test/Replay/libkleeruntest/replay_klee_prefer_cex.c b/test/Replay/libkleeruntest/replay_klee_prefer_cex.c -index df441ea8347b..852554b0e3b2 100644 ---- a/test/Replay/libkleeruntest/replay_klee_prefer_cex.c -+++ b/test/Replay/libkleeruntest/replay_klee_prefer_cex.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t.bc - -diff --git a/test/Replay/libkleeruntest/replay_posix_runtime.c b/test/Replay/libkleeruntest/replay_posix_runtime.c -index ac56179b03b4..5956c918e811 100644 ---- a/test/Replay/libkleeruntest/replay_posix_runtime.c -+++ b/test/Replay/libkleeruntest/replay_posix_runtime.c -@@ -1,6 +1,6 @@ - // REQUIRES: posix-runtime - // FIXME: We need to fix a bug in libkleeRuntest --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --posix-runtime --search=dfs %t.bc - // RUN: test -f %t.klee-out/test000001.ktest -diff --git a/test/Replay/libkleeruntest/replay_simple.c b/test/Replay/libkleeruntest/replay_simple.c -index 77e2f5d2567f..8155060d4266 100644 ---- a/test/Replay/libkleeruntest/replay_simple.c -+++ b/test/Replay/libkleeruntest/replay_simple.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --search=dfs %t.bc - // RUN: test -f %t.klee-out/test000001.ktest -diff --git a/test/Replay/libkleeruntest/replay_two_objects.c b/test/Replay/libkleeruntest/replay_two_objects.c -index 7cbfe3063910..a8f1b87b8bd7 100644 ---- a/test/Replay/libkleeruntest/replay_two_objects.c -+++ b/test/Replay/libkleeruntest/replay_two_objects.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --search=dfs %t.bc 2>&1 | FileCheck %s - // RUN: test -f %t.klee-out/test000001.ktest -diff --git a/test/Runtime/POSIX/DirConsistency.c b/test/Runtime/POSIX/DirConsistency.c -index 8faa9778ca41..43216d5470b5 100644 ---- a/test/Runtime/POSIX/DirConsistency.c -+++ b/test/Runtime/POSIX/DirConsistency.c -@@ -1,8 +1,8 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out %t.klee-out-tmp - // RUN: %gentmp %t.klee-out-tmp - // RUN: %klee --output-dir=%t.klee-out --run-in=%t.klee-out-tmp --search=random-state --libc=uclibc --posix-runtime --exit-on-error %t.bc --sym-files 1 1 > %t1.log --// RUN: %llvmgcc -D_FILE_OFFSET_BITS=64 %s -emit-llvm -O0 -c -o %t.bc -+// RUN: %llvmgcc -D_FILE_OFFSET_BITS=64 %s -emit-llvm %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out %t.klee-out-tmp - // RUN: %gentmp %t.klee-out-tmp - // RUN: %klee --output-dir=%t.klee-out --run-in=%t.klee-out-tmp --search=random-state --libc=uclibc --posix-runtime --exit-on-error %t.bc --sym-files 1 1 > %t2.log -diff --git a/test/Runtime/POSIX/DirSeek.c b/test/Runtime/POSIX/DirSeek.c -index 821ff8f58a89..449714b95b9f 100644 ---- a/test/Runtime/POSIX/DirSeek.c -+++ b/test/Runtime/POSIX/DirSeek.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -g -o %t2.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -g -o %t2.bc - // RUN: rm -rf %t.klee-out %t.klee-out-tmp - // RUN: %gentmp %t.klee-out-tmp - // RUN: %klee --output-dir=%t.klee-out --run-in=%t.klee-out-tmp --libc=uclibc --posix-runtime --exit-on-error %t2.bc --sym-files 2 2 -diff --git a/test/Runtime/POSIX/FDNumbers.c b/test/Runtime/POSIX/FDNumbers.c -index c012174cdc1f..dc5e17344ed4 100644 ---- a/test/Runtime/POSIX/FDNumbers.c -+++ b/test/Runtime/POSIX/FDNumbers.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t2.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t2.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --posix-runtime --exit-on-error %t2.bc --sym-files 1 10 - -diff --git a/test/Runtime/POSIX/FD_Fail.c b/test/Runtime/POSIX/FD_Fail.c -index 018f43f8a552..74f94bf6e754 100644 ---- a/test/Runtime/POSIX/FD_Fail.c -+++ b/test/Runtime/POSIX/FD_Fail.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --libc=uclibc --posix-runtime %t1.bc --max-fail 1 | FileCheck %s - -diff --git a/test/Runtime/POSIX/FD_Fail2.c b/test/Runtime/POSIX/FD_Fail2.c -index c1c2cc5fd9de..8fef1eda6df1 100644 ---- a/test/Runtime/POSIX/FD_Fail2.c -+++ b/test/Runtime/POSIX/FD_Fail2.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --libc=uclibc --posix-runtime --search=dfs %t1.bc --sym-files 1 10 --max-fail 2 - // -diff --git a/test/Runtime/POSIX/Fcntl.c b/test/Runtime/POSIX/Fcntl.c -index 13f6de781dce..e7a4cc4f31d3 100644 ---- a/test/Runtime/POSIX/Fcntl.c -+++ b/test/Runtime/POSIX/Fcntl.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t2.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t2.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --posix-runtime --exit-on-error %t2.bc --sym-files 1 10 - -diff --git a/test/Runtime/POSIX/FilePerm.c b/test/Runtime/POSIX/FilePerm.c -index c66e35de0cce..2a18037f46f5 100644 ---- a/test/Runtime/POSIX/FilePerm.c -+++ b/test/Runtime/POSIX/FilePerm.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --posix-runtime %t.bc --sym-files 1 10 --sym-stdout 2>%t.log - // RUN: test -f %t.klee-out/test000001.ktest -diff --git a/test/Runtime/POSIX/FileTime.c b/test/Runtime/POSIX/FileTime.c -index 489c09ed9ff2..34fd346865fb 100644 ---- a/test/Runtime/POSIX/FileTime.c -+++ b/test/Runtime/POSIX/FileTime.c -@@ -1,5 +1,5 @@ - // Tests the functionality of setting and getting file access and modification times --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --libc=uclibc --posix-runtime %t1.bc --sym-files 1 1 - -diff --git a/test/Runtime/POSIX/FreeArgv.c b/test/Runtime/POSIX/FreeArgv.c -index 7a5445a3a206..fff1b2c46280 100644 ---- a/test/Runtime/POSIX/FreeArgv.c -+++ b/test/Runtime/POSIX/FreeArgv.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -g -emit-llvm -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -g -emit-llvm %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --posix-runtime %t.bc --sym-args 1 1 1 2>&1 | FileCheck %s - // RUN: test -f %t.klee-out/test000001.free.err -diff --git a/test/Runtime/POSIX/Futimesat.c b/test/Runtime/POSIX/Futimesat.c -index a6d9dc048a7a..eecaa8808d1d 100644 ---- a/test/Runtime/POSIX/Futimesat.c -+++ b/test/Runtime/POSIX/Futimesat.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -g -c -DTDIR=%T -o %t2.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -g -c -DTDIR=%T -o %t2.bc - // RUN: touch %T/futimesat-dummy - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --posix-runtime --exit-on-error %t2.bc --sym-files 1 10 -diff --git a/test/Runtime/POSIX/Getenv.c b/test/Runtime/POSIX/Getenv.c -index eb3a611a2be5..7b890b6729b9 100644 ---- a/test/Runtime/POSIX/Getenv.c -+++ b/test/Runtime/POSIX/Getenv.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t2.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t2.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --libc=klee --posix-runtime --exit-on-error %t2.bc --sym-files 1 10 - -diff --git a/test/Runtime/POSIX/Ioctl.c b/test/Runtime/POSIX/Ioctl.c -index c8937a371fd0..61af8662132a 100644 ---- a/test/Runtime/POSIX/Ioctl.c -+++ b/test/Runtime/POSIX/Ioctl.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --posix-runtime --exit-on-error %t.bc --sym-stdin 4 - -diff --git a/test/Runtime/POSIX/Isatty.c b/test/Runtime/POSIX/Isatty.c -index b9232e01eb7f..6501a4a39252 100644 ---- a/test/Runtime/POSIX/Isatty.c -+++ b/test/Runtime/POSIX/Isatty.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --libc=uclibc --posix-runtime %t.bc --sym-stdin 10 --sym-stdout > %t.log 2>&1 - // RUN: test -f %t.klee-out/test000001.ktest -diff --git a/test/Runtime/POSIX/MixedConcreteSymbolic.c b/test/Runtime/POSIX/MixedConcreteSymbolic.c -index 48e06934f60d..c32a8f546719 100644 ---- a/test/Runtime/POSIX/MixedConcreteSymbolic.c -+++ b/test/Runtime/POSIX/MixedConcreteSymbolic.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out -allow-external-sym-calls --exit-on-error --libc=uclibc --posix-runtime %t.bc --sym-stdin 10 2>%t.log | FileCheck %s - -diff --git a/test/Runtime/POSIX/Openat.c b/test/Runtime/POSIX/Openat.c -index c46c1269b2e4..648380dc2cdf 100644 ---- a/test/Runtime/POSIX/Openat.c -+++ b/test/Runtime/POSIX/Openat.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t2.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t2.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --posix-runtime --exit-on-error %t2.bc --sym-files 1 10 - // RUN: test -f %t.klee-out/test000001.ktest -diff --git a/test/Runtime/POSIX/PrgName.c b/test/Runtime/POSIX/PrgName.c -index d62fe0fab353..2273c0d06fc2 100644 ---- a/test/Runtime/POSIX/PrgName.c -+++ b/test/Runtime/POSIX/PrgName.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t2.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t2.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --posix-runtime --exit-on-error %t2.bc --sym-arg 10 >%t.log - // RUN: test -f %t.klee-out/test000001.ktest -diff --git a/test/Runtime/POSIX/Read1.c b/test/Runtime/POSIX/Read1.c -index 2b8cfa9d3858..00deab5f08e2 100644 ---- a/test/Runtime/POSIX/Read1.c -+++ b/test/Runtime/POSIX/Read1.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --exit-on-error --posix-runtime %t.bc --sym-files 1 8 >%t.log - -diff --git a/test/Runtime/POSIX/Replay.c b/test/Runtime/POSIX/Replay.c -index 2b166e1f84c0..f98028377d51 100644 ---- a/test/Runtime/POSIX/Replay.c -+++ b/test/Runtime/POSIX/Replay.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc -DKLEE_EXECUTION %s -emit-llvm -O0 -c -o %t.bc -+// RUN: %llvmgcc -DKLEE_EXECUTION %s -emit-llvm %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --posix-runtime %t.bc --sym-files 1 3 - // RUN: %klee-replay --create-files-only %t.klee-out/test000001.ktest -diff --git a/test/Runtime/POSIX/SELinux/SELinux.c b/test/Runtime/POSIX/SELinux/SELinux.c -index 21bebc4dd97f..d3a73e724002 100644 ---- a/test/Runtime/POSIX/SELinux/SELinux.c -+++ b/test/Runtime/POSIX/SELinux/SELinux.c -@@ -1,5 +1,5 @@ - /* Very basic test, as right now SELinux support is extremely basic */ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --posix-runtime --exit-on-error %t1.bc --sym-arg 2 > %t.log - // XFAIL: no-selinux -diff --git a/test/Runtime/POSIX/SeedAndFail.c b/test/Runtime/POSIX/SeedAndFail.c -index 964ec500501e..891921f0ee22 100644 ---- a/test/Runtime/POSIX/SeedAndFail.c -+++ b/test/Runtime/POSIX/SeedAndFail.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --libc=uclibc --posix-runtime %t.bc --sym-files 1 10 2>%t.log - // RUN: rm -rf %t.klee-out-2 -diff --git a/test/Runtime/POSIX/Stdin.c b/test/Runtime/POSIX/Stdin.c -index 09eed6d2aee4..036fecaa17d3 100644 ---- a/test/Runtime/POSIX/Stdin.c -+++ b/test/Runtime/POSIX/Stdin.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --libc=uclibc --posix-runtime --exit-on-error %t.bc --sym-stdin 4 > %t.log - // RUN: grep "mode:file" %t.log -diff --git a/test/Runtime/POSIX/Write1.c b/test/Runtime/POSIX/Write1.c -index d260f2c34cc0..19b3e81fac27 100644 ---- a/test/Runtime/POSIX/Write1.c -+++ b/test/Runtime/POSIX/Write1.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --exit-on-error --libc=uclibc --posix-runtime %t.bc --sym-files 1 10 --sym-stdout 2>%t.log - -diff --git a/test/Runtime/POSIX/Write2.c b/test/Runtime/POSIX/Write2.c -index edb3e5b2aa6d..03501c3a2361 100644 ---- a/test/Runtime/POSIX/Write2.c -+++ b/test/Runtime/POSIX/Write2.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --exit-on-error --libc=uclibc --posix-runtime %t.bc --sym-files 1 10 --sym-stdout 2>%t.log - -diff --git a/test/Runtime/Uclibc/2007-10-08-optimization-calls-wrong-libc-functions.c b/test/Runtime/Uclibc/2007-10-08-optimization-calls-wrong-libc-functions.c -index d82f0eb9a60d..f3de99c1e27c 100644 ---- a/test/Runtime/Uclibc/2007-10-08-optimization-calls-wrong-libc-functions.c -+++ b/test/Runtime/Uclibc/2007-10-08-optimization-calls-wrong-libc-functions.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --exit-on-error --optimize --libc=uclibc %t1.bc - -diff --git a/test/Runtime/Uclibc/2008-03-04-libc-atexit-uses-dso-handle.c b/test/Runtime/Uclibc/2008-03-04-libc-atexit-uses-dso-handle.c -index 47ee3a4d05c5..299cbb12c871 100644 ---- a/test/Runtime/Uclibc/2008-03-04-libc-atexit-uses-dso-handle.c -+++ b/test/Runtime/Uclibc/2008-03-04-libc-atexit-uses-dso-handle.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --exit-on-error --libc=uclibc %t1.bc - -diff --git a/test/Solver/Z3ConstantArray.c b/test/Solver/Z3ConstantArray.c -index 482679e923ef..041e675dc4f1 100644 ---- a/test/Solver/Z3ConstantArray.c -+++ b/test/Solver/Z3ConstantArray.c -@@ -1,5 +1,5 @@ - // REQUIRES: z3 --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out -solver-backend=z3 -write-cvcs -write-smt2s -debug-z3-dump-queries=%t.smt2 %t1.bc - // RUN: cat %t.klee-out/test000001.smt2 | FileCheck --check-prefix=TEST-CASE %s -diff --git a/test/VectorInstructions/extract_element.c b/test/VectorInstructions/extract_element.c -index 5507d1d9ac5e..76034f183cfb 100644 ---- a/test/VectorInstructions/extract_element.c -+++ b/test/VectorInstructions/extract_element.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -g -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -g -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // NOTE: Have to pass `--optimize=false` to avoid vector operations being - // constant folded away. -diff --git a/test/VectorInstructions/extract_element_symbolic.c b/test/VectorInstructions/extract_element_symbolic.c -index 268a63f6ab4e..1833eb34edcb 100644 ---- a/test/VectorInstructions/extract_element_symbolic.c -+++ b/test/VectorInstructions/extract_element_symbolic.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -g -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -g -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: not %klee --output-dir=%t.klee-out --exit-on-error %t1.bc > %t.log 2>&1 - // RUN: FileCheck -input-file=%t.log %s -diff --git a/test/VectorInstructions/floating_point_ops_constant.c b/test/VectorInstructions/floating_point_ops_constant.c -index c9777fa9c8fa..3d9fd098408e 100644 ---- a/test/VectorInstructions/floating_point_ops_constant.c -+++ b/test/VectorInstructions/floating_point_ops_constant.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -g -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -g -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // NOTE: Have to pass `--optimize=false` to avoid vector operations being - // constant folded away. -diff --git a/test/VectorInstructions/insert_element.c b/test/VectorInstructions/insert_element.c -index 7e79250d5ecc..772da9874987 100644 ---- a/test/VectorInstructions/insert_element.c -+++ b/test/VectorInstructions/insert_element.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -g -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -g -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // NOTE: Have to pass `--optimize=false` to avoid vector operations being - // constant folded away. -diff --git a/test/VectorInstructions/insert_element_symbolic.c b/test/VectorInstructions/insert_element_symbolic.c -index 66666a71cd07..f75d3a09b0ac 100644 ---- a/test/VectorInstructions/insert_element_symbolic.c -+++ b/test/VectorInstructions/insert_element_symbolic.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -g -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -g -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: not %klee --output-dir=%t.klee-out --exit-on-error %t1.bc > %t.log 2>&1 - // RUN: FileCheck -input-file=%t.log %s -diff --git a/test/VectorInstructions/integer_ops_constant.c b/test/VectorInstructions/integer_ops_constant.c -index 8993ff2e9486..920465ff2e06 100644 ---- a/test/VectorInstructions/integer_ops_constant.c -+++ b/test/VectorInstructions/integer_ops_constant.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -g -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -g -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // NOTE: Have to pass `--optimize=false` to avoid vector operations being - // constant folded away. -diff --git a/test/VectorInstructions/integer_ops_signed_symbolic.c b/test/VectorInstructions/integer_ops_signed_symbolic.c -index c2f6b5f9af31..10ede925ce68 100644 ---- a/test/VectorInstructions/integer_ops_signed_symbolic.c -+++ b/test/VectorInstructions/integer_ops_signed_symbolic.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -g -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -g -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // NOTE: Have to pass `--optimize=false` to avoid vector operations being - // optimized away. -diff --git a/test/VectorInstructions/integer_ops_unsigned_symbolic.c b/test/VectorInstructions/integer_ops_unsigned_symbolic.c -index 8a7330c0d02b..aadeb585990d 100644 ---- a/test/VectorInstructions/integer_ops_unsigned_symbolic.c -+++ b/test/VectorInstructions/integer_ops_unsigned_symbolic.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -g -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -g -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // NOTE: Have to pass `--optimize=false` to avoid vector operations being - // optimized away. -diff --git a/test/VectorInstructions/shuffle_element.c b/test/VectorInstructions/shuffle_element.c -index 32653490934b..bf1f83f646d8 100644 ---- a/test/VectorInstructions/shuffle_element.c -+++ b/test/VectorInstructions/shuffle_element.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -g -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -g -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // NOTE: Have to pass `--optimize=false` to avoid vector operations being - // constant folded away. -diff --git a/test/lit.cfg b/test/lit.cfg -index 780973d79086..11f3992c5eec 100644 ---- a/test/lit.cfg -+++ b/test/lit.cfg -@@ -84,7 +84,7 @@ if config.test_exec_root is None: - - - # Add substitutions from lit.site.cfg --subs = [ 'llvmgcc', 'llvmgxx', 'cc', 'cxx'] -+subs = [ 'llvmgcc', 'llvmgxx', 'cc', 'cxx', 'O0opt' ] - for name in subs: - value = getattr(config, name, None) - if value == None: -diff --git a/test/lit.site.cfg.in b/test/lit.site.cfg.in -index 6a90bb4cacbc..dbc292fb68a0 100644 ---- a/test/lit.site.cfg.in -+++ b/test/lit.site.cfg.in -@@ -21,6 +21,10 @@ config.llvmgxx = "@LLVMCXX@" - config.cc = "@NATIVE_CC@" - config.cxx = "@NATIVE_CXX@" - -+config.O0opt = "-O0" -+if @LLVM_VERSION_MAJOR@ >= 5: -+ config.O0opt += " -Xclang -disable-O0-optnone" -+ - # Features - config.enable_uclibc = True if @ENABLE_UCLIBC@ == 1 else False - config.enable_posix_runtime = True if @ENABLE_POSIX_RUNTIME@ == 1 else False -diff --git a/test/regression/2007-07-25-invalid-stp-array-binding-to-objectstate.c b/test/regression/2007-07-25-invalid-stp-array-binding-to-objectstate.c -index 9b06a797112b..e933d926eab1 100644 ---- a/test/regression/2007-07-25-invalid-stp-array-binding-to-objectstate.c -+++ b/test/regression/2007-07-25-invalid-stp-array-binding-to-objectstate.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc - -diff --git a/test/regression/2007-07-30-unflushed-byte.c b/test/regression/2007-07-30-unflushed-byte.c -index b9f6b2377472..ddbfecd7581b 100644 ---- a/test/regression/2007-07-30-unflushed-byte.c -+++ b/test/regression/2007-07-30-unflushed-byte.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc - -diff --git a/test/regression/2007-08-01-cache-unclear-on-overwrite-flushed.c b/test/regression/2007-08-01-cache-unclear-on-overwrite-flushed.c -index 47cd87d8d041..050b6393306a 100644 ---- a/test/regression/2007-08-01-cache-unclear-on-overwrite-flushed.c -+++ b/test/regression/2007-08-01-cache-unclear-on-overwrite-flushed.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc - -diff --git a/test/regression/2007-08-06-64bit-shift.c b/test/regression/2007-08-06-64bit-shift.c -index c6c1f34d7a3b..95a719a7d729 100644 ---- a/test/regression/2007-08-06-64bit-shift.c -+++ b/test/regression/2007-08-06-64bit-shift.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc - -diff --git a/test/regression/2007-08-06-access-after-free.c b/test/regression/2007-08-06-access-after-free.c -index 783b38858f1a..bba7b97cb1ab 100644 ---- a/test/regression/2007-08-06-access-after-free.c -+++ b/test/regression/2007-08-06-access-after-free.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc - -diff --git a/test/regression/2007-08-08-free-zero.c b/test/regression/2007-08-08-free-zero.c -index 3718f3cfd32e..192b2841413a 100644 ---- a/test/regression/2007-08-08-free-zero.c -+++ b/test/regression/2007-08-08-free-zero.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc - // RUN: ls %t.klee-out | not grep *.err -diff --git a/test/regression/2007-08-16-valid-write-to-freed-object.c b/test/regression/2007-08-16-valid-write-to-freed-object.c -index b32571009110..18dec41f8770 100644 ---- a/test/regression/2007-08-16-valid-write-to-freed-object.c -+++ b/test/regression/2007-08-16-valid-write-to-freed-object.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc - -diff --git a/test/regression/2007-10-11-free-of-alloca.c b/test/regression/2007-10-11-free-of-alloca.c -index cfd633dc954a..b6b38328ccac 100644 ---- a/test/regression/2007-10-11-free-of-alloca.c -+++ b/test/regression/2007-10-11-free-of-alloca.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -g -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -g -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc 2>&1 | FileCheck %s - // RUN: test -f %t.klee-out/test000001.free.err -diff --git a/test/regression/2007-10-12-failed-make-symbolic-after-copy.c b/test/regression/2007-10-12-failed-make-symbolic-after-copy.c -index 800b57e7446d..85cc7c5b8f38 100644 ---- a/test/regression/2007-10-12-failed-make-symbolic-after-copy.c -+++ b/test/regression/2007-10-12-failed-make-symbolic-after-copy.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc - // RUN: test -f %t.klee-out/test000001.ktest -diff --git a/test/regression/2008-03-04-free-of-global.c b/test/regression/2008-03-04-free-of-global.c -index 3416fd61f0ba..ac9cb7dec349 100644 ---- a/test/regression/2008-03-04-free-of-global.c -+++ b/test/regression/2008-03-04-free-of-global.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -g -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -g -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc 2>&1 | FileCheck %s - // RUN: test -f %t.klee-out/test000001.free.err -diff --git a/test/regression/2008-03-11-free-of-malloc-zero.c b/test/regression/2008-03-11-free-of-malloc-zero.c -index 07ec29182b59..6089df94c969 100644 ---- a/test/regression/2008-03-11-free-of-malloc-zero.c -+++ b/test/regression/2008-03-11-free-of-malloc-zero.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --exit-on-error %t1.bc - -diff --git a/test/regression/2008-04-10-bad-alloca-free.c b/test/regression/2008-04-10-bad-alloca-free.c -index 3404a42e54be..afff42103f7a 100644 ---- a/test/regression/2008-04-10-bad-alloca-free.c -+++ b/test/regression/2008-04-10-bad-alloca-free.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --exit-on-error %t1.bc - -diff --git a/test/regression/2008-05-23-gep-with-global-const.c b/test/regression/2008-05-23-gep-with-global-const.c -index 6bd78dd29131..e93692f95aa0 100644 ---- a/test/regression/2008-05-23-gep-with-global-const.c -+++ b/test/regression/2008-05-23-gep-with-global-const.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc -emit-llvm -O0 -c -o %t.bc %s -+// RUN: %llvmgcc -emit-llvm %O0opt -c -o %t.bc %s - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --exit-on-error %t.bc - -diff --git a/test/regression/2012-05-13-asm-causes-aborts.c b/test/regression/2012-05-13-asm-causes-aborts.c -index 322e5bb8746d..cc73f0b35583 100644 ---- a/test/regression/2012-05-13-asm-causes-aborts.c -+++ b/test/regression/2012-05-13-asm-causes-aborts.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t1.bc - -diff --git a/test/regression/2014-07-04-unflushed-error-report.c b/test/regression/2014-07-04-unflushed-error-report.c -index 0b98944ac78f..a0404db68c0a 100644 ---- a/test/regression/2014-07-04-unflushed-error-report.c -+++ b/test/regression/2014-07-04-unflushed-error-report.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out -check-overshift %t.bc 2> %t.log - // RUN: FileCheck -input-file=%t.klee-out/test000001.overshift.err %s -diff --git a/test/regression/2014-09-13-debug-info.c b/test/regression/2014-09-13-debug-info.c -index e372e89e2cc6..ddf8461d179d 100644 ---- a/test/regression/2014-09-13-debug-info.c -+++ b/test/regression/2014-09-13-debug-info.c -@@ -1,6 +1,6 @@ - // Check that we properly detect states covering new instructions. - // --// RUN: %llvmgcc -I../../../include %s -emit-llvm -O0 -c -o %t1.bc -+// RUN: %llvmgcc -I../../../include %s -emit-llvm %O0opt -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --only-output-states-covering-new %t1.bc - -diff --git a/test/regression/2014-12-08-ashr.c b/test/regression/2014-12-08-ashr.c -index 3fe7f62b42e6..be3507297b54 100644 ---- a/test/regression/2014-12-08-ashr.c -+++ b/test/regression/2014-12-08-ashr.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out -exit-on-error %t.bc - -diff --git a/test/regression/2015-06-22-struct-write.c b/test/regression/2015-06-22-struct-write.c -index 6efc4ee6df83..54bb5d1fcbaa 100644 ---- a/test/regression/2015-06-22-struct-write.c -+++ b/test/regression/2015-06-22-struct-write.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out -exit-on-error %t.bc - -diff --git a/test/regression/2015-08-05-invalid-fork.c b/test/regression/2015-08-05-invalid-fork.c -index 7c35872cfcd8..d089ed118cbc 100644 ---- a/test/regression/2015-08-05-invalid-fork.c -+++ b/test/regression/2015-08-05-invalid-fork.c -@@ -3,7 +3,7 @@ - is printed a single time. - */ - --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t.bc | FileCheck %s - -diff --git a/test/regression/2015-08-30-empty-constraints.c b/test/regression/2015-08-30-empty-constraints.c -index b07beccd92d6..a75dd8a40f0d 100644 ---- a/test/regression/2015-08-30-empty-constraints.c -+++ b/test/regression/2015-08-30-empty-constraints.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t.bc 2> %t.log - // RUN: FileCheck -input-file=%t.log %s -diff --git a/test/regression/2015-08-30-sdiv-1.c b/test/regression/2015-08-30-sdiv-1.c -index a90df30880a8..6994dbdb0fd2 100644 ---- a/test/regression/2015-08-30-sdiv-1.c -+++ b/test/regression/2015-08-30-sdiv-1.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out -exit-on-error -solver-optimize-divides=true %t.bc - // RUN: rm -rf %t.klee-out -diff --git a/test/regression/2016-04-14-sdiv-2.c b/test/regression/2016-04-14-sdiv-2.c -index 974036ee100a..aab14c462bb5 100644 ---- a/test/regression/2016-04-14-sdiv-2.c -+++ b/test/regression/2016-04-14-sdiv-2.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out -exit-on-error -solver-optimize-divides=true %t.bc >%t1.log - // RUN: grep "m is 2" %t1.log -diff --git a/test/regression/2016-06-28-div-zero-bug.c b/test/regression/2016-06-28-div-zero-bug.c -index 76e70ad1e0f6..f2214039612b 100644 ---- a/test/regression/2016-06-28-div-zero-bug.c -+++ b/test/regression/2016-06-28-div-zero-bug.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --use-cex-cache=false %t.bc >%t1.log - -diff --git a/test/regression/2016-08-06-klee-get-obj-size.c b/test/regression/2016-08-06-klee-get-obj-size.c -index df4114ff33f7..3d3dc357150e 100644 ---- a/test/regression/2016-08-06-klee-get-obj-size.c -+++ b/test/regression/2016-08-06-klee-get-obj-size.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out %t.bc - // RUN: test -f %t.klee-out/test000001.assert.err -diff --git a/test/regression/2016-08-11-entry-point-internalize-pass.c b/test/regression/2016-08-11-entry-point-internalize-pass.c -index 4cd8ff8d2a0d..195806015a59 100644 ---- a/test/regression/2016-08-11-entry-point-internalize-pass.c -+++ b/test/regression/2016-08-11-entry-point-internalize-pass.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --entry-point=entry %t.bc - -diff --git a/test/regression/2016-08-12-empty-file.c b/test/regression/2016-08-12-empty-file.c -index 56695fe1200c..8165f9242223 100644 ---- a/test/regression/2016-08-12-empty-file.c -+++ b/test/regression/2016-08-12-empty-file.c -@@ -1,5 +1,5 @@ - // REQUIRES: posix-runtime --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: not %klee --output-dir=%t.klee-out %t.bc >%t1.log 2>&1 - // RUN: FileCheck -input-file=%t1.log -check-prefix=CHECK-MAIN-NOT-FOUND %s -diff --git a/test/regression/2016-11-24-bitcast-weak-alias.c b/test/regression/2016-11-24-bitcast-weak-alias.c -index b20e205ee750..d420ac5295e2 100644 ---- a/test/regression/2016-11-24-bitcast-weak-alias.c -+++ b/test/regression/2016-11-24-bitcast-weak-alias.c -@@ -1,5 +1,5 @@ - // REQUIRES: not-darwin --// RUN: %llvmgcc %s -Wall -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -Wall -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out -exit-on-error -search=nurs:covnew %t.bc DUMMY_ARG >%t1.log 2>&1 - // RUN: FileCheck -input-file=%t1.log %s -diff --git a/test/regression/2016-12-14-alloc-alignment.c b/test/regression/2016-12-14-alloc-alignment.c -index db66d1911bcd..8c58d6f9a294 100644 ---- a/test/regression/2016-12-14-alloc-alignment.c -+++ b/test/regression/2016-12-14-alloc-alignment.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -Wall -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -Wall -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out --exit-on-error %t.bc - #include -diff --git a/test/regression/2017-02-21-pathOS-id.c b/test/regression/2017-02-21-pathOS-id.c -index d3bffbe04bf6..9be321de06b2 100644 ---- a/test/regression/2017-02-21-pathOS-id.c -+++ b/test/regression/2017-02-21-pathOS-id.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee --output-dir=%t.klee-out -write-paths %t.bc 2> %t.log - // RUN: cat %t.klee-out/test000001.path | wc -l | grep -q 1 -diff --git a/test/regression/2017-03-23-early-exit-log-stats.c b/test/regression/2017-03-23-early-exit-log-stats.c -index 96d3c30f23c6..d68bfa8f8c42 100644 ---- a/test/regression/2017-03-23-early-exit-log-stats.c -+++ b/test/regression/2017-03-23-early-exit-log-stats.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -g -O0 -c -o %t.bc -+// RUN: %llvmgcc %s -emit-llvm -g %O0opt -c -o %t.bc - // RUN: rm -rf %t.klee-out - // Delay writing instructions so that we ensure on exit that flush happens - // RUN: not %klee --output-dir=%t.klee-out -exit-on-error -stats-write-interval=0 -stats-write-after-instructions=999999 %t.bc 2> %t.log -diff --git a/test/regression/2018-05-05-number-instructions-dumped-states.c b/test/regression/2018-05-05-number-instructions-dumped-states.c -index 5f2af61e0d89..8d183b77a010 100644 ---- a/test/regression/2018-05-05-number-instructions-dumped-states.c -+++ b/test/regression/2018-05-05-number-instructions-dumped-states.c -@@ -1,4 +1,4 @@ --// RUN: %llvmgcc %s -emit-llvm -O0 -g -c -o %t1.bc -+// RUN: %llvmgcc %s -emit-llvm %O0opt -g -c -o %t1.bc - // RUN: rm -rf %t.klee-out - // RUN: %klee -stop-after-n-instructions=1 --output-dir=%t.klee-out %t1.bc 2>&1 | FileCheck %s - --- -2.19.0 - diff --git a/0010-llvm5-CallSite.paramHasAttr-is-indexed-from-0.patch b/0010-llvm5-CallSite.paramHasAttr-is-indexed-from-0.patch deleted file mode 100644 index 635f256..0000000 --- a/0010-llvm5-CallSite.paramHasAttr-is-indexed-from-0.patch +++ /dev/null @@ -1,46 +0,0 @@ -From: Jiri Slaby -Date: Fri, 20 Jul 2018 10:06:29 +0200 -Subject: llvm5: CallSite.paramHasAttr is indexed from 0 -Patch-mainline: no - -Since LLVM 5 commit 1f8f0490690b, CallSite.paramHasAttr is indexed from -0, so make sure we use correct indexing in klee. And use -CallSite.hasRetAttr for return attributes. - -Signed-off-by: Jiri Slaby ---- - lib/Core/Executor.cpp | 10 +++++++++- - 1 file changed, 9 insertions(+), 1 deletion(-) - -diff --git a/lib/Core/Executor.cpp b/lib/Core/Executor.cpp -index b5d7e6ce8f6c..96285f74a462 100644 ---- a/lib/Core/Executor.cpp -+++ b/lib/Core/Executor.cpp -@@ -1543,7 +1543,11 @@ void Executor::executeInstruction(ExecutionState &state, KInstruction *ki) { - CallSite(cast(caller))); - - // XXX need to check other param attrs ? -- bool isSExt = cs.paramHasAttr(0, llvm::Attribute::SExt); -+#if LLVM_VERSION_CODE >= LLVM_VERSION(5, 0) -+ bool isSExt = cs.hasRetAttr(llvm::Attribute::SExt); -+#else -+ bool isSExt = cs.paramHasAttr(0, llvm::Attribute::SExt); -+#endif - if (isSExt) { - result = SExtExpr::create(result, to); - } else { -@@ -1837,7 +1841,11 @@ void Executor::executeInstruction(ExecutionState &state, KInstruction *ki) { - - if (from != to) { - // XXX need to check other param attrs ? -+#if LLVM_VERSION_CODE >= LLVM_VERSION(5, 0) -+ bool isSExt = cs.paramHasAttr(i, llvm::Attribute::SExt); -+#else - bool isSExt = cs.paramHasAttr(i+1, llvm::Attribute::SExt); -+#endif - if (isSExt) { - arguments[i] = SExtExpr::create(arguments[i], to); - } else { --- -2.19.0 - diff --git a/0011-llvm6-SetVersionPrinter-now-passes-down-a-stream.patch b/0011-llvm6-SetVersionPrinter-now-passes-down-a-stream.patch deleted file mode 100644 index dfb0edd..0000000 --- a/0011-llvm6-SetVersionPrinter-now-passes-down-a-stream.patch +++ /dev/null @@ -1,85 +0,0 @@ -From: Jiri Slaby -Date: Mon, 21 May 2018 15:12:44 +0200 -Subject: llvm6: SetVersionPrinter now passes down a stream -Patch-mainline: no - -I.e. klee::printVersion should now have a parameter -- the output -stream. Change both the prototype and the implementation to handle this -properly. - -Signed-off-by: Jiri Slaby ---- - include/klee/Internal/Support/PrintVersion.h | 8 +++++++ - lib/Support/PrintVersion.cpp | 23 ++++++++++++++------ - 2 files changed, 24 insertions(+), 7 deletions(-) - -diff --git a/include/klee/Internal/Support/PrintVersion.h b/include/klee/Internal/Support/PrintVersion.h -index 2c375ad2b946..87f73a002914 100644 ---- a/include/klee/Internal/Support/PrintVersion.h -+++ b/include/klee/Internal/Support/PrintVersion.h -@@ -10,8 +10,16 @@ - #ifndef KLEE_PRINT_VERSION_H - #define KLEE_PRINT_VERSION_H - -+#include "llvm/Support/raw_ostream.h" -+ -+#include "klee/Config/Version.h" -+ - namespace klee { -+#if LLVM_VERSION_CODE >= LLVM_VERSION(6, 0) -+ void printVersion(llvm::raw_ostream &OS); -+#else - void printVersion(); -+#endif - } - - #endif -diff --git a/lib/Support/PrintVersion.cpp b/lib/Support/PrintVersion.cpp -index d39249df023f..b7f2b6ff347a 100644 ---- a/lib/Support/PrintVersion.cpp -+++ b/lib/Support/PrintVersion.cpp -@@ -9,25 +9,34 @@ - - #include "klee/Internal/Support/PrintVersion.h" - #include "klee/Config/config.h" -+#include "klee/Config/Version.h" - #include "llvm/Support/raw_ostream.h" - #include "llvm/Support/CommandLine.h" - - #include "klee/Config/CompileTimeInfo.h" - -+#if LLVM_VERSION_CODE >= LLVM_VERSION(6, 0) -+void klee::printVersion(llvm::raw_ostream &OS) -+#else - void klee::printVersion() -+#endif - { -- llvm::outs() << PACKAGE_STRING " (" PACKAGE_URL ")\n"; -+#if LLVM_VERSION_CODE < LLVM_VERSION(6, 0) -+ llvm::raw_ostream &OS = llvm::outs(); -+#endif -+ -+ OS << PACKAGE_STRING " (" PACKAGE_URL ")\n"; - #ifdef KLEE_ENABLE_TIMESTAMP -- llvm::outs() << " Built " __DATE__ " (" __TIME__ ")\n"; -+ OS << " Built " __DATE__ " (" __TIME__ ")\n"; - #endif -- llvm::outs() << " Build mode: " << KLEE_BUILD_MODE "\n"; -- llvm::outs() << " Build revision: "; -+ OS << " Build mode: " << KLEE_BUILD_MODE "\n"; -+ OS << " Build revision: "; - #ifdef KLEE_BUILD_REVISION -- llvm::outs() << KLEE_BUILD_REVISION "\n"; -+ OS << KLEE_BUILD_REVISION "\n"; - #else -- llvm::outs() << "unknown\n"; -+ OS << "unknown\n"; - #endif - // Show LLVM version information -- llvm::outs() << "\n"; -+ OS << "\n"; - llvm::cl::PrintVersionMessage(); - } --- -2.19.0 - diff --git a/0012-llvm6-handle-headers-renaming.patch b/0012-llvm6-handle-headers-renaming.patch deleted file mode 100644 index fabc9ed..0000000 --- a/0012-llvm6-handle-headers-renaming.patch +++ /dev/null @@ -1,37 +0,0 @@ -From: Jiri Slaby -Date: Mon, 21 May 2018 15:14:41 +0200 -Subject: llvm6: handle headers renaming -Patch-mainline: no - -Some headers were moved from llvm/Target/ to llvm/CodeGen/. Handle that. - -Signed-off-by: Jiri Slaby ---- - lib/Module/RaiseAsm.cpp | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/lib/Module/RaiseAsm.cpp b/lib/Module/RaiseAsm.cpp -index 4967a2fa8578..eef22fb81553 100644 ---- a/lib/Module/RaiseAsm.cpp -+++ b/lib/Module/RaiseAsm.cpp -@@ -18,10 +18,16 @@ - #include "llvm/Support/raw_ostream.h" - #include "llvm/Support/Host.h" - #include "llvm/Support/TargetRegistry.h" -+#if LLVM_VERSION_CODE >= LLVM_VERSION(6, 0) -+#include "llvm/CodeGen/TargetLowering.h" -+#include "llvm/CodeGen/TargetSubtargetInfo.h" -+#include "llvm/Target/TargetMachine.h" -+#elif LLVM_VERSION_CODE >= LLVM_VERSION(3, 6) - #include "llvm/Target/TargetLowering.h" --#if LLVM_VERSION_CODE >= LLVM_VERSION(3, 6) - #include "llvm/Target/TargetMachine.h" - #include "llvm/Target/TargetSubtargetInfo.h" -+#else -+#include "llvm/Target/TargetLowering.h" - #endif - - using namespace llvm; --- -2.19.0 - diff --git a/_servicedata b/_servicedata index a26a473..87e15b2 100644 --- a/_servicedata +++ b/_servicedata @@ -1,4 +1,4 @@ git://github.com/klee/klee.git - 4efd7f6b443f187f5a844227339383ce5593e865 \ No newline at end of file + 581dca9276cacc690703cd4962e309661fc71c23 \ No newline at end of file diff --git a/klee-1.4.0+20180920.tar.xz b/klee-1.4.0+20180920.tar.xz deleted file mode 100644 index 866f1fc..0000000 --- a/klee-1.4.0+20180920.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5bb676ee734644ba8e5b3cd125f30b92586db69d1ed1ca18976cc49160be5b31 -size 601236 diff --git a/klee-1.4.0+20181026.tar.xz b/klee-1.4.0+20181026.tar.xz new file mode 100644 index 0000000..1f8e35f --- /dev/null +++ b/klee-1.4.0+20181026.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b89e6b770654058ce876d974d47e4c165da35d72441bd3efaccb815c23d2c817 +size 618460 diff --git a/klee.changes b/klee.changes index 020ae39..84e18f7 100644 --- a/klee.changes +++ b/klee.changes @@ -1,3 +1,87 @@ +------------------------------------------------------------------- +Sat Oct 27 07:24:23 UTC 2018 - opensuse-packaging@opensuse.org + +- Update to version 1.4.0+20181026: + * travis: enable LLVM 7 testing + * llvm7: handle new header files + * llvm7: adapt to new openFileForWrite + * llvm7: WriteBitcodeToFile takes Module & + * Added gen-bout tool to generate ktest file (file.bout) using specified concrete arguments and files. + * travis: enable LLVM 6 testing + * llvm6: handle headers renaming + * llvm6: SetVersionPrinter now passes down a stream + * travis: enable LLVM 5 testing + * llvm5: APInt->getSignBit -> getSignMask + * llvm5: CallSite.paramHasAttr is indexed from 0 + * llvm5: test, add -disable-O0-optnone to -O0 + * llvm5: test, change objectsize + * llvm5: Intrinsic::objectsize has three arguments + * llvm5: use MutableArrayRef for APFloat::convertToInteger + * llvm5: handle new file_magic's location + * llvm5: SwitchInst case functions now return pointers + * llvm5: handle getOrInsertFunction terminator + * llvm5: integerPartWidth is from llvm::APFloatBase + * llvm5: avoid ++ on function->arg_begin() + * Add testcase for shift check + * ShiftChecker: Instrument shift instructions only once + * ShiftChecker: Avoid unneeded checks + * ShiftCheck: Use llvm::Builder instead of Inst::Create* + * Add test case for div checker + * DivCheck do not instrument multiple times + * DivCheck Skip unneeded checks + * Use llvm::Builder for DivCheck instrumentation + * Introduce KLEEIRMetaData to manipulate LLVM-IR metadata + * Added lowering pass + * refactor klee_open_output_file to return std::unique_ptr + * use klee_open_output_file for uncompressed logs + * Updated an include to reflect a recent filename change + * Move unrelated function from ReadExpr class + * Avoid unsafe static downcasts + * Modernize code + * Move optimization specific headers away from the project include directory + * Clean-up headers + * Use std::unordered collections as we use C++11 + * Remove unneeded externs + * Remove condition check before function invocation + * Move ConstantExpr check inside optimizeExpr function + * optimizeExpr: return the result as return value instead as function argument + * Make valueOnly parameter of optimizeExpr explicit + * Fixed compilation of array optimization patch with LLVM >= 4.0 + * Added missing headers and clang-format the files + * Added support for KLEE value-based array optimization + * Added support for KLEE index-based array optimization + * tests: disable CompressedExprLogging on zlib-less systems + * Small changes to comments + * Added missing header to SolverCmdLine.h and clang-format it + * Renamed klee/CommandLine.h to klee/SolverCmdLine.h, since this file is meant to have only solver options. + * fix handling of failing external calls + * cmake/lit: add asan/non-asan, ubsan/non-ubsan flags + * cleanup headers, whitespaces, and types + * add support for klee-replay on OSX + * Workaround for flaky coverage + * kleeModule: always link irreader (required since llvm 3.3) + * remove obsolete dependency of kleeModule on kleeCore + * config.h.cmin: remove obsolete cmakedefine + * Marking resolve methods as const + * Refactored AddressSpace::resolve() by creating a new function AddressSpace::checkPointerInObject() that is called in both the forward and the backward searches. This makes the code more modular and removes a large part of duplicated code and should also address the non-deterministic coverage in the resolve() function which affects Codecov reports. + * Fix a crash when the last running state is terminated during merging + * Changed code to create up to 100 properly-numbered symbolic arguments, and add a corresponding check. + * Add checks for correct usage of the POSIX model, together with an associated test. + * Revert lit to 0.6.0 version, as 0.7.0 misbehaves +- removed (in upstream): + * 0001-llvm5-avoid-on-function-arg_begin.patch + * 0002-llvm5-integerPartWidth-is-from-llvm-APFloatBase.patch + * 0003-llvm5-handle-getOrInsertFunction-terminator.patch + * 0004-llvm5-SwitchInst-case-functions-now-return-pointers.patch + * 0005-llvm5-handle-new-file_magic-s-location.patch + * 0006-llvm5-use-MutableArrayRef-for-APFloat-convertToInteg.patch + * 0007-llvm5-Intrinsic-objectsize-has-three-arguments.patch + * 0008-llvm5-test-change-objectsize.patch + * 0009-llvm5-test-add-disable-O0-optnone-to-O0.patch + * 0010-llvm5-CallSite.paramHasAttr-is-indexed-from-0.patch + * 0011-llvm6-SetVersionPrinter-now-passes-down-a-stream.patch + * 0012-llvm6-handle-headers-renaming.patch + ------------------------------------------------------------------- Fri Sep 21 11:24:38 UTC 2018 - jslaby@suse.com diff --git a/klee.spec b/klee.spec index 28cdfc3..6e6698f 100644 --- a/klee.spec +++ b/klee.spec @@ -1,7 +1,7 @@ # # spec file for package klee # -# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -15,11 +15,12 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # + %define llvm_version_major 6 %define llvm_version_minor 0 %define llvm_version %{llvm_version_major} -%define version_unconverted 1.4.0+20180920 +%define version_unconverted 1.4.0+20181026 %ifarch %{ix86} x86_64 %define with_uclibc 1 @@ -31,7 +32,7 @@ Name: klee Summary: LLVM Execution Engine License: NCSA Group: Development/Languages/Other -Version: 1.4.0+20180920 +Version: 1.4.0+20181026 Release: 0 Url: http://klee.github.io/ Source0: %{name}-%{version}.tar.xz @@ -39,19 +40,6 @@ Source1: %{name}-rpmlintrc Source2: https://raw.githubusercontent.com/llvm-mirror/llvm/release_%{llvm_version_major}%{llvm_version_minor}/utils/not/not.cpp Source3: https://raw.githubusercontent.com/llvm-mirror/llvm/release_%{llvm_version_major}%{llvm_version_minor}/utils/FileCheck/FileCheck.cpp -Patch201: 0001-llvm5-avoid-on-function-arg_begin.patch -Patch202: 0002-llvm5-integerPartWidth-is-from-llvm-APFloatBase.patch -Patch203: 0003-llvm5-handle-getOrInsertFunction-terminator.patch -Patch204: 0004-llvm5-SwitchInst-case-functions-now-return-pointers.patch -Patch205: 0005-llvm5-handle-new-file_magic-s-location.patch -Patch206: 0006-llvm5-use-MutableArrayRef-for-APFloat-convertToInteg.patch -Patch207: 0007-llvm5-Intrinsic-objectsize-has-three-arguments.patch -Patch208: 0008-llvm5-test-change-objectsize.patch -Patch209: 0009-llvm5-test-add-disable-O0-optnone-to-O0.patch -Patch210: 0010-llvm5-CallSite.paramHasAttr-is-indexed-from-0.patch -Patch211: 0011-llvm6-SetVersionPrinter-now-passes-down-a-stream.patch -Patch212: 0012-llvm6-handle-headers-renaming.patch - BuildRequires: clang%{llvm_version} BuildRequires: cmake BuildRequires: gperftools-devel