Test Failure: Transforms/StraightLineStrengthReduce/slsr-gep.ll

Test source: git

Comments: LLVM PR44533

Log:

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%)

stderr:

+ : '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

 

<-- Back