Test source: git
Source: <stdin> -- 1. ModuleToFunctionPassAdaptor ERROR: Unsupported type: <vscale x 4 x ptr> ERROR: Unsupported type: <vscale x 4 x ptr> ERROR: Unsupported type: <vscale x 2 x ptr> -- 1. PassManager<Function> : Skipping NOP -- 2. InstSimplifyPass ---------------------------------------- define ptr @test1(ptr %b, ptr %e) { #0: %e_ptr = ptrtoint ptr %e to i64 %b_ptr = ptrtoint ptr %b to i64 %sub = sub i64 %e_ptr, %b_ptr %sdiv = sdiv exact i64 %sub, 7 %gep = gep inbounds ptr %b, 7 x i64 %sdiv ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 3. InstSimplifyPass ---------------------------------------- define ptr @test1(ptr %b, ptr %e) { #0: %e_ptr = ptrtoint ptr %e to i64 %b_ptr = ptrtoint ptr %b to i64 %sub = sub i64 %e_ptr, %b_ptr %sdiv = sdiv exact i64 %sub, 7 %gep = gep inbounds ptr %b, 7 x i64 %sdiv ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 4. PassManager<Function> : Skipping NOP -- 5. PassManager<Function> : Skipping NOP -- 6. InstSimplifyPass ---------------------------------------- define ptr @test2(ptr %b, ptr %e) { #0: %e_ptr = ptrtoint ptr %e to i64 %b_ptr = ptrtoint ptr %b to i64 %sub = sub i64 %e_ptr, %b_ptr %gep = gep inbounds ptr %b, 1 x i64 %sub ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 7. InstSimplifyPass ---------------------------------------- define ptr @test2(ptr %b, ptr %e) { #0: %e_ptr = ptrtoint ptr %e to i64 %b_ptr = ptrtoint ptr %b to i64 %sub = sub i64 %e_ptr, %b_ptr %gep = gep inbounds ptr %b, 1 x i64 %sub ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 8. PassManager<Function> : Skipping NOP -- 9. PassManager<Function> : Skipping NOP -- 10. InstSimplifyPass ---------------------------------------- define ptr @test3(ptr %b, ptr %e) { #0: %e_ptr = ptrtoint ptr %e to i64 %b_ptr = ptrtoint ptr %b to i64 %sub = sub i64 %e_ptr, %b_ptr %ashr = ashr exact i64 %sub, 3 %gep = gep inbounds ptr %b, 8 x i64 %ashr ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 11. InstSimplifyPass ---------------------------------------- define ptr @test3(ptr %b, ptr %e) { #0: %e_ptr = ptrtoint ptr %e to i64 %b_ptr = ptrtoint ptr %b to i64 %sub = sub i64 %e_ptr, %b_ptr %ashr = ashr exact i64 %sub, 3 %gep = gep inbounds ptr %b, 8 x i64 %ashr ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 12. PassManager<Function> : Skipping NOP -- 13. PassManager<Function> : Skipping NOP -- 14. InstSimplifyPass ---------------------------------------- define ptr @test4(ptr %b) { #0: %b_ptr = ptrtoint ptr %b to i64 %sub = sub i64 0, %b_ptr %sdiv = sdiv exact i64 %sub, 7 %gep = gep ptr %b, 7 x i64 %sdiv ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 15. InstSimplifyPass ---------------------------------------- define ptr @test4(ptr %b) { #0: %b_ptr = ptrtoint ptr %b to i64 %sub = sub i64 0, %b_ptr %sdiv = sdiv exact i64 %sub, 7 %gep = gep ptr %b, 7 x i64 %sdiv ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 16. PassManager<Function> : Skipping NOP -- 17. PassManager<Function> : Skipping NOP -- 18. InstSimplifyPass ---------------------------------------- define ptr @test4_inbounds(ptr %b) { #0: %b_ptr = ptrtoint ptr %b to i64 %sub = sub i64 0, %b_ptr %sdiv = sdiv exact i64 %sub, 7 %gep = gep inbounds ptr %b, 7 x i64 %sdiv ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 19. InstSimplifyPass ---------------------------------------- define ptr @test4_inbounds(ptr %b) { #0: %b_ptr = ptrtoint ptr %b to i64 %sub = sub i64 0, %b_ptr %sdiv = sdiv exact i64 %sub, 7 %gep = gep inbounds ptr %b, 7 x i64 %sdiv ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 20. PassManager<Function> : Skipping NOP -- 21. PassManager<Function> : Skipping NOP -- 22. InstSimplifyPass ---------------------------------------- define ptr @test5(ptr %b) { #0: %b_ptr = ptrtoint ptr %b to i64 %sub = sub i64 0, %b_ptr %gep = gep ptr %b, 1 x i64 %sub ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 23. InstSimplifyPass ---------------------------------------- define ptr @test5(ptr %b) { #0: %b_ptr = ptrtoint ptr %b to i64 %sub = sub i64 0, %b_ptr %gep = gep ptr %b, 1 x i64 %sub ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 24. PassManager<Function> : Skipping NOP -- 25. PassManager<Function> : Skipping NOP -- 26. InstSimplifyPass ---------------------------------------- define ptr @test5_inbounds(ptr %b) { #0: %b_ptr = ptrtoint ptr %b to i64 %sub = sub i64 0, %b_ptr %gep = gep inbounds ptr %b, 1 x i64 %sub ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 27. InstSimplifyPass ---------------------------------------- define ptr @test5_inbounds(ptr %b) { #0: %b_ptr = ptrtoint ptr %b to i64 %sub = sub i64 0, %b_ptr %gep = gep inbounds ptr %b, 1 x i64 %sub ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 28. PassManager<Function> : Skipping NOP -- 29. PassManager<Function> : Skipping NOP -- 30. InstSimplifyPass ---------------------------------------- define ptr @test6(ptr %b) { #0: %b_ptr = ptrtoint ptr %b to i64 %sub = sub i64 0, %b_ptr %ashr = ashr exact i64 %sub, 3 %gep = gep ptr %b, 8 x i64 %ashr ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 31. InstSimplifyPass ---------------------------------------- define ptr @test6(ptr %b) { #0: %b_ptr = ptrtoint ptr %b to i64 %sub = sub i64 0, %b_ptr %ashr = ashr exact i64 %sub, 3 %gep = gep ptr %b, 8 x i64 %ashr ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 32. PassManager<Function> : Skipping NOP -- 33. PassManager<Function> : Skipping NOP -- 34. InstSimplifyPass ---------------------------------------- define ptr @test6_inbounds(ptr %b) { #0: %b_ptr = ptrtoint ptr %b to i64 %sub = sub i64 0, %b_ptr %ashr = ashr exact i64 %sub, 3 %gep = gep inbounds ptr %b, 8 x i64 %ashr ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 35. InstSimplifyPass ---------------------------------------- define ptr @test6_inbounds(ptr %b) { #0: %b_ptr = ptrtoint ptr %b to i64 %sub = sub i64 0, %b_ptr %ashr = ashr exact i64 %sub, 3 %gep = gep inbounds ptr %b, 8 x i64 %ashr ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 36. PassManager<Function> : Skipping NOP -- 37. PassManager<Function> : Skipping NOP -- 38. InstSimplifyPass ---------------------------------------- define ptr @test7(ptr %b, ptr %e) { #0: %e_ptr = ptrtoint ptr %e to i64 %b_ptr = ptrtoint ptr %b to i64 %sub = sub i64 %e_ptr, %b_ptr %gep = gep inbounds ptr %b, 1 x i64 %sub ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 39. InstSimplifyPass ---------------------------------------- define ptr @test7(ptr %b, ptr %e) { #0: %e_ptr = ptrtoint ptr %e to i64 %b_ptr = ptrtoint ptr %b to i64 %sub = sub i64 %e_ptr, %b_ptr %gep = gep inbounds ptr %b, 1 x i64 %sub ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 40. PassManager<Function> : Skipping NOP -- 41. PassManager<Function> : Skipping NOP -- 42. InstSimplifyPass ---------------------------------------- define ptr @undef_inbounds_var_idx(i64 %idx) { #0: %el = gep inbounds ptr undef, 8 x i64 %idx ret ptr %el } Transformation seems to be correct! (syntactically equal) -- 43. InstSimplifyPass ---------------------------------------- define ptr @undef_inbounds_var_idx(i64 %idx) { #0: %el = gep inbounds ptr undef, 8 x i64 %idx ret ptr %el } => define ptr @undef_inbounds_var_idx(i64 %idx) { #0: ret ptr undef } Transformation seems to be correct! -- 44. PassManager<Function> : Skipping NOP -- 45. PassManager<Function> : Skipping NOP -- 46. InstSimplifyPass ---------------------------------------- define ptr @undef_no_inbounds_var_idx(i64 %idx) { #0: %el = gep ptr undef, 8 x i64 %idx ret ptr %el } Transformation seems to be correct! (syntactically equal) -- 47. InstSimplifyPass ---------------------------------------- define ptr @undef_no_inbounds_var_idx(i64 %idx) { #0: %el = gep ptr undef, 8 x i64 %idx ret ptr %el } => define ptr @undef_no_inbounds_var_idx(i64 %idx) { #0: ret ptr undef } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 48. PassManager<Function> : Skipping NOP -- 49. PassManager<Function> : Skipping NOP -- 50. InstSimplifyPass ---------------------------------------- define <8 x ptr> @undef_vec1() { #0: %el = gep inbounds ptr undef, 8 x <8 x i64> undef ret <8 x ptr> %el } Transformation seems to be correct! (syntactically equal) -- 51. InstSimplifyPass ---------------------------------------- define <8 x ptr> @undef_vec1() { #0: %el = gep inbounds ptr undef, 8 x <8 x i64> undef ret <8 x ptr> %el } => define <8 x ptr> @undef_vec1() { #0: ret <8 x ptr> undef } Transformation seems to be correct! -- 52. PassManager<Function> : Skipping NOP -- 53. PassManager<Function> : Skipping NOP -- 54. InstSimplifyPass ---------------------------------------- define <8 x ptr> @undef_vec2() { #0: %el = gep <8 x ptr> undef, 8 x <8 x i64> undef ret <8 x ptr> %el } Transformation seems to be correct! (syntactically equal) -- 55. InstSimplifyPass ---------------------------------------- define <8 x ptr> @undef_vec2() { #0: %el = gep <8 x ptr> undef, 8 x <8 x i64> undef ret <8 x ptr> %el } => define <8 x ptr> @undef_vec2() { #0: ret <8 x ptr> undef } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 56. PassManager<Function> : Skipping NOP -- 57. PassManager<Function> : Skipping NOP -- 58. InstSimplifyPass ---------------------------------------- define ptr @ptr_idx_scalar() { #0: %gep = gep ptr null, 16 x i64 0, 4 x i64 1 ret ptr %gep } Transformation seems to be correct! (syntactically equal) -- 59. InstSimplifyPass ---------------------------------------- define ptr @ptr_idx_scalar() { #0: %gep = gep ptr null, 16 x i64 0, 4 x i64 1 ret ptr %gep } => define ptr @ptr_idx_scalar() { #0: %__constexpr_0 = int2ptr i64 4 to ptr ret ptr %__constexpr_0 } Transformation doesn't verify! (unsound) ERROR: Value mismatch Example: Source: ptr %gep = pointer(non-local, block_id=0, offset=4) / Address=#x0000000000000004 SOURCE MEMORY STATE =================== NON-LOCAL BLOCKS: Block 0 > size: 0 align: 1 alloc type: 0 alive: false address: 0 Target: ptr %__constexpr_0 = phy-ptr(addr=4) / Address=#x0000000000000004 Source value: pointer(non-local, block_id=0, offset=4) / Address=#x0000000000000004 Target value: phy-ptr(addr=4) / Address=#x0000000000000004 Pass: InstSimplifyPass 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' '-S' '-passes=instsimplify' '-tv-smt-to=20000' '-tv-report-dir=/home/nlopes/alive2/build/logs' '-tv-smt-stats' Wrote bitcode to: "/home/nlopes/alive2/build/logs/in_1hZeCZj6_M4QU.bc" ------------------- SMT STATS ------------------- Num queries: 20 Num invalid: 0 Num skips: 0 Num trivial: 22 (52.4%) Num timeout: 2 (10.0%) Num errors: 0 (0.0%) Num SAT: 12 (60.0%) Num UNSAT: 6 (30.0%) Alive2: Transform doesn't verify; aborting!
RUN: at line 2: /home/nlopes/alive2/build/opt-alive.sh -S -passes=instsimplify < /bitbucket/nlopes/llvm/llvm/test/Transforms/InstSimplify/gep.ll | /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/InstSimplify/gep.ll + /home/nlopes/alive2/build/opt-alive.sh -S -passes=instsimplify + /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/InstSimplify/gep.ll FileCheck error: '<stdin>' is empty. FileCheck command line: /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/InstSimplify/gep.ll