Test source: git
Comments: LLVM PR44533
Source: <stdin> ---------------------------------------- define void @slsr_gep(* %input, i64 %s) { %0: %p0 = gep inbounds * %input, 4 x i64 0 call void @foo(* %p0) %p1 = gep inbounds * %input, 4 x i64 %s call void @foo(* %p1) %s2 = shl nsw i64 %s, 1 %p2 = gep inbounds * %input, 4 x i64 %s2 call void @foo(* %p2) ret void } => define void @slsr_gep(* %input, i64 %s) { %0: call void @foo(* %input) %p1 = gep inbounds * %input, 4 x i64 %s call void @foo(* %p1) %p2 = gep inbounds * %p1, 4 x i64 %s call void @foo(* %p2) ret void } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define void @slsr_gep_sext(* %input, i32 %s) { %0: %p0 = gep inbounds * %input, 4 x i64 0 call void @foo(* %p0) %t = sext i32 %s to i64 %p1 = gep inbounds * %input, 4 x i64 %t call void @foo(* %p1) %s2 = shl nsw i32 %s, 1 %t2 = sext i32 %s2 to i64 %p2 = gep inbounds * %input, 4 x i64 %t2 call void @foo(* %p2) ret void } => define void @slsr_gep_sext(* %input, i32 %s) { %0: call void @foo(* %input) %t = sext i32 %s to i64 %p1 = gep inbounds * %input, 4 x i64 %t call void @foo(* %p1) %p2 = gep inbounds * %p1, 4 x i64 %t call void @foo(* %p2) ret void } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define void @slsr_gep_2d(* %input, i64 %s, i64 %t) { %0: %p0 = gep inbounds * %input, 200 x i64 0, 20 x i64 %s, 4 x i64 %t call void @foo(* %p0) %s2 = shl nsw i64 %s, 1 %p1 = gep inbounds * %input, 200 x i64 0, 20 x i64 %s2, 4 x i64 %t call void @foo(* %p1) %s3 = mul nsw i64 %s, 3 %p2 = gep inbounds * %input, 200 x i64 0, 20 x i64 %s3, 4 x i64 %t call void @foo(* %p2) ret void } => define void @slsr_gep_2d(* %input, i64 %s, i64 %t) { %0: %p0 = gep inbounds * %input, 200 x i64 0, 20 x i64 %s, 4 x i64 %t call void @foo(* %p0) %1 = mul i64 %s, 5 %p1 = gep inbounds * %p0, 4 x i64 %1 call void @foo(* %p1) %p2 = gep inbounds * %p1, 4 x i64 %1 call void @foo(* %p2) ret void } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define void @slsr_gep_uglygep(* %input, i64 %s, i64 %t) { %0: %p0 = gep inbounds * %input, 600 x i64 0, 60 x i64 %s, 12 x i64 %t, 1 x i64 0 call void @bar(* %p0) %s2 = shl nsw i64 %s, 1 %p1 = gep inbounds * %input, 600 x i64 0, 60 x i64 %s2, 12 x i64 %t, 1 x i64 0 call void @bar(* %p1) %s3 = mul nsw i64 %s, 3 %p2 = gep inbounds * %input, 600 x i64 0, 60 x i64 %s3, 12 x i64 %t, 1 x i64 0 call void @bar(* %p2) ret void } => define void @slsr_gep_uglygep(* %input, i64 %s, i64 %t) { %0: %p0 = gep inbounds * %input, 600 x i64 0, 60 x i64 %s, 12 x i64 %t, 1 x i64 0 call void @bar(* %p0) %1 = mul i64 %s, 60 %2 = bitcast * %p0 to * %3 = gep inbounds * %2, 1 x i64 %1 %p1 = bitcast * %3 to * call void @bar(* %p1) %4 = gep inbounds * %3, 1 x i64 %1 %p2 = bitcast * %4 to * call void @bar(* %p2) ret void } Transformation doesn't verify! ERROR: Source is more defined than target Example: * %input = pointer(non-local, block_id=1, offset=8638467038068604928) i64 %s = #x0000400000000000 (70368744177664) i64 %t = #xf600000000000000 (17726168133330272256, -720575940379279360) Source: * %p0 = poison i64 %s2 = #x0000800000000000 (140737488355328) * %p1 = pointer(non-local, block_id=1, offset=2818572288) i64 %s3 = #x0000c00000000000 (211106232532992) * %p2 = pointer(non-local, block_id=1, offset=4222127469232128) SOURCE MEMORY STATE =================== NON-LOCAL BLOCKS: Block 0 > size: 0 align: 1 alloc type: 0 Block 1 > size: 8791026472627208194 align: 8 alloc type: 2 Block 2 > align: 8 alloc type: 2 Target: * %p0 = poison i64 %1 = #x000f000000000000 (4222124650659840) * %2 = poison * %3 = poison * %p1 = poison * %4 = poison * %p2 = poison ------------------- SMT STATS ------------------- Num queries: 10 Num invalid: 0 Num skips: 0 Num trivial: 6 (37.5%) Num timeout: 3 (30.0%) Num errors: 0 (0.0%) Num SAT: 5 (50.0%) Num UNSAT: 2 (20.0%)
+ : 'RUN: at line 1' + /home/nlopes/alive2/scripts/opt-alive.sh -slsr -gvn -S + /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/StraightLineStrengthReduce/slsr-gep.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/StraightLineStrengthReduce/slsr-gep.ll