Test source: git
Source: <stdin> ---------------------------------------- @G16 = constant 20 bytes, align 16 define i1 @test1(i32 %X) { #init: store [10 x i16] { 35, 82, 69, 81, 85, 73, 82, 69, 68, 0 }, * @G16, align 16 br label %0 %0: %P = gep inbounds * @G16, 20 x i32 0, 2 x i32 %X %Q = load i16, * %P, align 2 %R = icmp eq i16 %Q, 0 ret i1 %R } => @G16 = constant 20 bytes, align 16 define i1 @test1(i32 %X) { #init: store [10 x i16] { 35, 82, 69, 81, 85, 73, 82, 69, 68, 0 }, * @G16, align 16 br label %0 %0: %R = icmp eq i32 %X, 9 ret i1 %R } Transformation seems to be correct! ---------------------------------------- @G16 = constant 20 bytes, align 16 define i1 @test1_noinbounds(i32 %X) { #init: store [10 x i16] { 35, 82, 69, 81, 85, 73, 82, 69, 68, 0 }, * @G16, align 16 br label %0 %0: %P = gep * @G16, 20 x i32 0, 2 x i32 %X %Q = load i16, * %P, align 2 %R = icmp eq i16 %Q, 0 ret i1 %R } => @G16 = constant 20 bytes, align 16 define i1 @test1_noinbounds(i32 %X) { #init: store [10 x i16] { 35, 82, 69, 81, 85, 73, 82, 69, 68, 0 }, * @G16, align 16 br label %0 %0: %R = icmp eq i32 %X, 9 ret i1 %R } Transformation doesn't verify! ERROR: Value mismatch Example: i32 %X = #x80000009 (2147483657, -2147483639) Source: * %P = pointer(non-local, block_id=0, offset=18) i16 %Q = #x0000 (0) i1 %R = #x1 (1) SOURCE MEMORY STATE =================== NON-LOCAL BLOCKS: Block 0 > size: 20 align: 16 alloc type: 0 Target: i1 %R = #x0 (0) Source value: #x1 (1) Target value: #x0 (0) ------------------- SMT STATS ------------------- Num queries: 5 Num invalid: 0 Num skips: 0 Num trivial: 4 (44.4%) Num timeout: 0 (0.0%) Num errors: 0 (0.0%) Num SAT: 3 (60.0%) Num UNSAT: 2 (40.0%)
+ : 'RUN: at line 2' + /home/nlopes/alive2/scripts/opt-alive.sh -instcombine -S -data-layout=p:32:32:32-p1:16:16:16-n8:16:32:64 + /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/InstCombine/load-cmp.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/InstCombine/load-cmp.ll