Test source: git
Source: <stdin> -- 1. ModuleToFunctionPassAdaptor ERROR: Unsupported instruction: invoke void @test8a() to label %invoke.cont unwind label %try.handle ERROR: Unsupported instruction: call void @test10a_mixed_as(<2 x ptr> %A) ERROR: Unsupported instruction: %X = call ptr @test11a_mixed_as() ERROR: Unsupported instruction: %X = call <2 x ptr> @test12a_mixed_as() -- 1. PassManager<Function> : Skipping NOP -- 2. InstCombinePass ---------------------------------------- declare void @test1a(ptr) define void @test1(ptr %A) { #0: call void @test1a(ptr %A) ret void } Transformation seems to be correct! (syntactically equal) -- 3. InstCombinePass ---------------------------------------- declare void @test1a(ptr) define void @test1(ptr %A) { #0: call void @test1a(ptr %A) ret void } Transformation seems to be correct! (syntactically equal) -- 4. PassManager<Function> : Skipping NOP -- 5. PassManager<Function> : Skipping NOP -- 6. InstCombinePass -- 7. InstCombinePass -- 8. PassManager<Function> : Skipping NOP -- 9. PassManager<Function> : Skipping NOP -- 10. InstCombinePass -- 11. InstCombinePass -- 12. PassManager<Function> : Skipping NOP -- 13. PassManager<Function> : Skipping NOP -- 14. InstCombinePass ---------------------------------------- define void @test2a(i8 %A) { #0: ret void } Transformation seems to be correct! (syntactically equal) -- 15. InstCombinePass ---------------------------------------- define void @test2a(i8 %A) { #0: ret void } Transformation seems to be correct! (syntactically equal) -- 16. PassManager<Function> : Skipping NOP -- 17. PassManager<Function> : Skipping NOP -- 18. InstCombinePass ---------------------------------------- declare void @test2a(i8) @test2a = constant ? bytes, exec, align 8 define i32 @test2(i32 %A) { #0: call void @test2a(i32 %A) ret i32 %A } Transformation seems to be correct! (syntactically equal) -- 19. InstCombinePass ---------------------------------------- declare void @test2a(i8) @test2a = constant ? bytes, exec, align 8 define i32 @test2(i32 %A) { #0: call void @test2a(i32 %A) ret i32 %A } Transformation seems to be correct! (syntactically equal) -- 20. PassManager<Function> : Skipping NOP -- 21. PassManager<Function> : Skipping NOP -- 22. InstCombinePass ---------------------------------------- define void @test3a(i8 %#0, ...) { #1: assume i1 0 } Transformation seems to be correct! (syntactically equal) -- 23. InstCombinePass ---------------------------------------- define void @test3a(i8 %#0, ...) { #1: assume i1 0 } Transformation seems to be correct! (syntactically equal) -- 24. PassManager<Function> : Skipping NOP -- 25. PassManager<Function> : Skipping NOP -- 26. InstCombinePass ---------------------------------------- declare void @test3a(i8, ...) @test3a = constant ? bytes, exec, align 8 define void @test3(i8 %A, i8 %B) { #0: call void @test3a(i8 %A..., i8 %B) ret void } Transformation seems to be correct! (syntactically equal) -- 27. InstCombinePass ---------------------------------------- declare void @test3a(i8, ...) @test3a = constant ? bytes, exec, align 8 define void @test3(i8 %A, i8 %B) { #0: call void @test3a(i8 %A..., i8 %B) ret void } => declare void @test3a(i8, ...) @test3a = constant ? bytes, exec, align 8 define void @test3(i8 %A, i8 %B) { #0: %#1 = zext i8 %B to i32 call void @test3a(i8 %A..., i32 %#1) ret void } Transformation doesn't verify! (unsound) ERROR: Source is more defined than target Example: i8 %A = poison i8 %B = poison Source: void = function did not return! SOURCE MEMORY STATE =================== NON-LOCAL BLOCKS: Block 0 > size: 0 align: 1 alloc type: 0 alive: false address: 0 Block 1 > size: 14 align: 8 alloc type: 0 alive: true address: 32 const Block 2 > size: 1 align: 1 alloc type: 0 alive: true address: 8 Block 3 > size: 3 align: 1 alloc type: 0 alive: true address: 10 Target: i32 %#1 = poison Function @test3a triggered UB Pass: InstCombinePass 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=instcombine' '-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_48hDQCRr_qr8I.bc" ------------------- SMT STATS ------------------- Num queries: 19 Num invalid: 0 Num skips: 0 Num trivial: 0 (0.0%) Num timeout: 0 (0.0%) Num errors: 0 (0.0%) Num SAT: 17 (89.5%) Num UNSAT: 2 (10.5%) Alive2: Transform doesn't verify; aborting!
RUN: at line 2: /home/nlopes/alive2/build/opt-alive.sh < /bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/call.ll -passes=instcombine -S | /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/call.ll + /home/nlopes/alive2/build/opt-alive.sh -passes=instcombine -S + /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/call.ll FileCheck error: '<stdin>' is empty. FileCheck command line: /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/call.ll