Test source: git
Source: <stdin> -- 1. Annotation2MetadataPass -- 2. Annotation2MetadataPass ---------------------------------------- define double @fabs_fcmp_olt_nsz_func_attr(double %#0, double %#1) { entry: %x = alloca i64 8, align 8 store double %#0, ptr %x, align 8 %cmp = fcmp nnan nsz olt double %#0, 0.000000 br i1 %cmp, label %if.then, label %return if.then: %fneg = fneg nnan nsz double %#0 store double %fneg, ptr %x, align 8 br label %return return: %ret = load double, ptr %x, align 8 ret double %ret } Transformation seems to be correct! (syntactically equal) -- 3. ForceFunctionAttrsPass ---------------------------------------- define double @fabs_fcmp_olt_nsz_func_attr(double %#0, double %#1) { entry: %x = alloca i64 8, align 8 store double %#0, ptr %x, align 8 %cmp = fcmp nnan nsz olt double %#0, 0.000000 br i1 %cmp, label %if.then, label %return if.then: %fneg = fneg nnan nsz double %#0 store double %fneg, ptr %x, align 8 br label %return return: %ret = load double, ptr %x, align 8 ret double %ret } Transformation seems to be correct! (syntactically equal) -- 4. ForceFunctionAttrsPass ---------------------------------------- define double @fabs_fcmp_olt_nsz_func_attr(double %#0, double %#1) { entry: %x = alloca i64 8, align 8 store double %#0, ptr %x, align 8 %cmp = fcmp nnan nsz olt double %#0, 0.000000 br i1 %cmp, label %if.then, label %return if.then: %fneg = fneg nnan nsz double %#0 store double %fneg, ptr %x, align 8 br label %return return: %ret = load double, ptr %x, align 8 ret double %ret } Transformation seems to be correct! (syntactically equal) -- 5. InferFunctionAttrsPass : Skipping unsupported -- 6. InferFunctionAttrsPass : Skipping unsupported -- 7. CoroEarlyPass ---------------------------------------- define double @fabs_fcmp_olt_nsz_func_attr(double %#0, double %#1) { entry: %x = alloca i64 8, align 8 store double %#0, ptr %x, align 8 %cmp = fcmp nnan nsz olt double %#0, 0.000000 br i1 %cmp, label %if.then, label %return if.then: %fneg = fneg nnan nsz double %#0 store double %fneg, ptr %x, align 8 br label %return return: %ret = load double, ptr %x, align 8 ret double %ret } Transformation seems to be correct! (syntactically equal) -- 8. CoroEarlyPass ---------------------------------------- define double @fabs_fcmp_olt_nsz_func_attr(double %#0, double %#1) { entry: %x = alloca i64 8, align 8 store double %#0, ptr %x, align 8 %cmp = fcmp nnan nsz olt double %#0, 0.000000 br i1 %cmp, label %if.then, label %return if.then: %fneg = fneg nnan nsz double %#0 store double %fneg, ptr %x, align 8 br label %return return: %ret = load double, ptr %x, align 8 ret double %ret } Transformation seems to be correct! (syntactically equal) -- 9. ModuleToFunctionPassAdaptor ---------------------------------------- define double @fabs_fcmp_olt_nsz_func_attr(double %#0, double %#1) { entry: %x = alloca i64 8, align 8 store double %#0, ptr %x, align 8 %cmp = fcmp nnan nsz olt double %#0, 0.000000 br i1 %cmp, label %if.then, label %return if.then: %fneg = fneg nnan nsz double %#0 store double %fneg, ptr %x, align 8 br label %return return: %ret = load double, ptr %x, align 8 ret double %ret } Transformation seems to be correct! (syntactically equal) -- 1. PassManager<Function> : Skipping NOP -- 2. EntryExitInstrumenterPass : Skipping unsupported -- 3. EntryExitInstrumenterPass : Skipping unsupported -- 4. LowerExpectIntrinsicPass ---------------------------------------- define double @fabs_fcmp_olt_nsz_func_attr(double %#0, double %#1) { entry: %x = alloca i64 8, align 8 store double %#0, ptr %x, align 8 %cmp = fcmp nnan nsz olt double %#0, 0.000000 br i1 %cmp, label %if.then, label %return if.then: %fneg = fneg nnan nsz double %#0 store double %fneg, ptr %x, align 8 br label %return return: %ret = load double, ptr %x, align 8 ret double %ret } Transformation seems to be correct! (syntactically equal) -- 5. LowerExpectIntrinsicPass ---------------------------------------- define double @fabs_fcmp_olt_nsz_func_attr(double %#0, double %#1) { entry: %x = alloca i64 8, align 8 store double %#0, ptr %x, align 8 %cmp = fcmp nnan nsz olt double %#0, 0.000000 br i1 %cmp, label %if.then, label %return if.then: %fneg = fneg nnan nsz double %#0 store double %fneg, ptr %x, align 8 br label %return return: %ret = load double, ptr %x, align 8 ret double %ret } Transformation seems to be correct! (syntactically equal) -- 6. SimplifyCFGPass ---------------------------------------- define double @fabs_fcmp_olt_nsz_func_attr(double %#0, double %#1) { entry: %x = alloca i64 8, align 8 store double %#0, ptr %x, align 8 %cmp = fcmp nnan nsz olt double %#0, 0.000000 br i1 %cmp, label %if.then, label %return if.then: %fneg = fneg nnan nsz double %#0 store double %fneg, ptr %x, align 8 br label %return return: %ret = load double, ptr %x, align 8 ret double %ret } Transformation seems to be correct! (syntactically equal) -- 7. SimplifyCFGPass ---------------------------------------- define double @fabs_fcmp_olt_nsz_func_attr(double %#0, double %#1) { entry: %x = alloca i64 8, align 8 store double %#0, ptr %x, align 8 %cmp = fcmp nnan nsz olt double %#0, 0.000000 br i1 %cmp, label %if.then, label %return if.then: %fneg = fneg nnan nsz double %#0 store double %fneg, ptr %x, align 8 br label %return return: %ret = load double, ptr %x, align 8 ret double %ret } Transformation seems to be correct! (syntactically equal) -- 8. SROAPass ---------------------------------------- define double @fabs_fcmp_olt_nsz_func_attr(double %#0, double %#1) { entry: %x = alloca i64 8, align 8 store double %#0, ptr %x, align 8 %cmp = fcmp nnan nsz olt double %#0, 0.000000 br i1 %cmp, label %if.then, label %return if.then: %fneg = fneg nnan nsz double %#0 store double %fneg, ptr %x, align 8 br label %return return: %ret = load double, ptr %x, align 8 ret double %ret } Transformation seems to be correct! (syntactically equal) -- 9. SROAPass ---------------------------------------- define double @fabs_fcmp_olt_nsz_func_attr(double %#0, double %#1) { entry: %x = alloca i64 8, align 8 store double %#0, ptr %x, align 8 %cmp = fcmp nnan nsz olt double %#0, 0.000000 br i1 %cmp, label %if.then, label %return if.then: %fneg = fneg nnan nsz double %#0 store double %fneg, ptr %x, align 8 br label %return return: %ret = load double, ptr %x, align 8 ret double %ret } => define double @fabs_fcmp_olt_nsz_func_attr(double %#0, double %#1) { entry: %cmp = fcmp nnan nsz olt double %#0, 0.000000 br i1 %cmp, label %if.then, label %return if.then: %fneg = fneg nnan nsz double %#0 br label %return return: %x.0 = phi nsz double [ %fneg, %if.then ], [ %#0, %entry ] ret double %x.0 } Transformation doesn't verify! (unsound) ERROR: Target's return value is more undefined Example: double %#0 = #x0000000000000000 (+0.0) double %#1 = poison Source: ptr %x = pointer(local, block_id=0, offset=0) / Address=#x100 i1 %cmp = #x0 (0) >> Jump to %return double %ret = #x0000000000000000 (+0.0) SOURCE MEMORY STATE =================== NON-LOCAL BLOCKS: Block 0 > size: 1 alive: true LOCAL BLOCKS: Block 2 > size: 8 align: 8 alloc type: 1 alive: true address: 256 Target: i1 %cmp = #x0 (0) >> Jump to %return double %x.0 = #x8000000000000000 (-0.0) Source value: #x0000000000000000 (+0.0) Target value: #x8000000000000000 (-0.0) Pass: SROAPass Command line: '/home/nlopes/llvm/build/bin/opt' '-load=/home/nlopes/alive2/build/tv/tv.so' '-load-pass-plugin=/home/nlopes/alive2/build/tv/tv.so' '-tv-exit-on-error' '-passes=default<O1>' '-S' '-tv-smt-to=20000' '-tv-report-dir=/home/nlopes/alive2/build/logs' '-tv-smt-stats' Wrote bitcode to: "/home/nlopes/alive2/build/logs/in_1Ey02m75_XESF.bc" ------------------- SMT STATS ------------------- Num queries: 16 Num invalid: 0 Num skips: 0 Num trivial: 8 (33.3%) Num timeout: 0 (0.0%) Num errors: 0 (0.0%) Num SAT: 13 (81.2%) Num UNSAT: 3 (18.8%) Alive2: Transform doesn't verify; aborting!
RUN: at line 2: /home/nlopes/alive2/build/opt-alive.sh -passes='default<O1>' -S < /bitbucket/nlopes/llvm/llvm/test/Transforms/PhaseOrdering/generate-fabs.ll | /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/PhaseOrdering/generate-fabs.ll + /home/nlopes/alive2/build/opt-alive.sh '-passes=default<O1>' -S + /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/PhaseOrdering/generate-fabs.ll FileCheck error: '<stdin>' is empty. FileCheck command line: /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/PhaseOrdering/generate-fabs.ll