Test source: git
Source: <stdin> ---------------------------------------- define i1 @test1(* %a, * %b) { %0: %cond1 = icmp ne * %a, %b %a2 = gep inbounds * %a, 1 x i64 -1 %cond2 = icmp ugt * %a2, %b %res = select i1 %cond1, i1 %cond2, i1 0 ret i1 %res } => define i1 @test1(* %a, * %b) { %0: %a2 = gep inbounds * %a, 1 x i64 -1 %cond2 = icmp ugt * %a2, %b ret i1 %cond2 } Transformation doesn't verify! ERROR: Target is more poisonous than source Example: * %a = null * %b = null Source: i1 %cond1 = #x0 (0) * %a2 = poison i1 %cond2 = poison i1 %res = #x0 (0) SOURCE MEMORY STATE =================== NON-LOCAL BLOCKS: Block 0 > size: 0 align: 1 alloc type: 0 Block 1 > align: 262144 alloc type: 0 Block 2 > align: 2 alloc type: 0 Target: * %a2 = poison i1 %cond2 = poison Source value: #x0 (0) Target value: poison ------------------- SMT STATS ------------------- Num queries: 2 Num invalid: 0 Num skips: 0 Num trivial: 2 (50.0%) Num timeout: 0 (0.0%) Num errors: 0 (0.0%) Num SAT: 2 (100.0%) Num UNSAT: 0 (0.0%)
+ : 'RUN: at line 2' + /home/nlopes/alive2/build/opt-alive.sh -instsimplify -S + /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/InstSimplify/pr49495.ll Alive2: Transform doesn't verify; aborting! FileCheck error: '<stdin>' is empty. FileCheck command line: /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/InstSimplify/pr49495.ll