Test Failure: Transforms/GVN/PRE/rle.ll

Test source: git

Log:

Source: <stdin>
-- 1. ModuleToFunctionPassAdaptor
ERROR: Unsupported instruction:   %__constexpr_0 = bitcast void ()* @helper to i8*
ERROR: Unsupported instruction:   %ttmp = load i8, i8* bitcast (void ()* @helper to i8*), align 1
ERROR: Unsupported instruction:   tail call void @llvm.memcpy.p0i8.p1i8.i64(i8* %conv, i8 addrspace(1)* bitcast 
ERROR: Unsupported attribute: noalias
ERROR: Unsupported attribute: noalias
ERROR: Unsupported attribute: noalias
ERROR: Unsupported instruction:   %tmp6.1 = load atomic i8, i8* @global acquire, align 4
-- 1. PassManager<Function> : Skipping NOP
-- 2. GVNPass

----------------------------------------
define i32 @test0(i32 %V, ptr %P) {
%0:
  store i32 %V, ptr %P, align 4
  %A = load i32, ptr %P, align 4
  ret i32 %A
}
Transformation seems to be correct! (syntactically equal)

-- 3. GVNPass

----------------------------------------
define i32 @test0(i32 %V, ptr %P) {
%0:
  store i32 %V, ptr %P, align 4
  %A = load i32, ptr %P, align 4
  ret i32 %A
}
=>
define i32 @test0(i32 %V, ptr %P) {
%0:
  store i32 %V, ptr %P, align 4
  ret i32 %V
}
Transformation seems to be correct!

-- 4. DCEPass

----------------------------------------
define i32 @test0(i32 %V, ptr %P) {
%0:
  store i32 %V, ptr %P, align 4
  ret i32 %V
}
Transformation seems to be correct! (syntactically equal)

-- 5. DCEPass

----------------------------------------
define i32 @test0(i32 %V, ptr %P) {
%0:
  store i32 %V, ptr %P, align 4
  ret i32 %V
}
Transformation seems to be correct! (syntactically equal)

-- 6. PassManager<Function> : Skipping NOP
-- 7. PassManager<Function> : Skipping NOP
-- 8. GVNPass

----------------------------------------
define i8 @crash0({i32, i32} %A, ptr %P) {
%0:
  store {i32, i32} %A, ptr %P, align 4
  %X = bitcast ptr %P to ptr
  %Y = load i8, ptr %X, align 1
  ret i8 %Y
}
Transformation seems to be correct! (syntactically equal)

-- 9. GVNPass

----------------------------------------
define i8 @crash0({i32, i32} %A, ptr %P) {
%0:
  store {i32, i32} %A, ptr %P, align 4
  %X = bitcast ptr %P to ptr
  %Y = load i8, ptr %X, align 1
  ret i8 %Y
}
Transformation seems to be correct! (syntactically equal)

-- 10. DCEPass

----------------------------------------
define i8 @crash0({i32, i32} %A, ptr %P) {
%0:
  store {i32, i32} %A, ptr %P, align 4
  %X = bitcast ptr %P to ptr
  %Y = load i8, ptr %X, align 1
  ret i8 %Y
}
Transformation seems to be correct! (syntactically equal)

-- 11. DCEPass

----------------------------------------
define i8 @crash0({i32, i32} %A, ptr %P) {
%0:
  store {i32, i32} %A, ptr %P, align 4
  %X = bitcast ptr %P to ptr
  %Y = load i8, ptr %X, align 1
  ret i8 %Y
}
Transformation seems to be correct! (syntactically equal)

-- 12. PassManager<Function> : Skipping NOP
-- 13. PassManager<Function> : Skipping NOP
ERROR: Unsupported instruction:   %__constexpr_0 = bitcast void ()* @helper to i8*
ERROR: Unsupported instruction:   %ttmp = load i8, i8* bitcast (void ()* @helper to i8*), align 1
-- 14. GVNPass
ERROR: Unsupported instruction:   %__constexpr_0 = bitcast void ()* @helper to i8*
ERROR: Unsupported instruction:   %ttmp = load i8, i8* bitcast (void ()* @helper to i8*), align 1
-- 15. GVNPass
ERROR: Unsupported instruction:   %__constexpr_0 = bitcast void ()* @helper to i8*
ERROR: Unsupported instruction:   %ttmp = load i8, i8* bitcast (void ()* @helper to i8*), align 1
-- 16. DCEPass
ERROR: Unsupported instruction:   %__constexpr_0 = bitcast void ()* @helper to i8*
ERROR: Unsupported instruction:   %ttmp = load i8, i8* bitcast (void ()* @helper to i8*), align 1
-- 17. DCEPass
-- 18. PassManager<Function> : Skipping NOP
-- 19. PassManager<Function> : Skipping NOP
-- 20. GVNPass

----------------------------------------
define float @coerce_mustalias1(i32 %V, ptr %P) {
%0:
  store i32 %V, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %A = load float, ptr %P2, align 4
  ret float %A
}
Transformation seems to be correct! (syntactically equal)

-- 21. GVNPass

----------------------------------------
define float @coerce_mustalias1(i32 %V, ptr %P) {
%0:
  store i32 %V, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %A = load float, ptr %P2, align 4
  ret float %A
}
=>
define float @coerce_mustalias1(i32 %V, ptr %P) {
%0:
  store i32 %V, ptr %P, align 4
  %1 = bitcast i32 %V to float
  ret float %1
}
Transformation seems to be correct!

-- 22. DCEPass

----------------------------------------
define float @coerce_mustalias1(i32 %V, ptr %P) {
%0:
  store i32 %V, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %1 = bitcast i32 %V to float
  ret float %1
}
Transformation seems to be correct! (syntactically equal)

-- 23. DCEPass

----------------------------------------
define float @coerce_mustalias1(i32 %V, ptr %P) {
%0:
  store i32 %V, ptr %P, align 4
  %1 = bitcast i32 %V to float
  ret float %1
}
=>
define float @coerce_mustalias1(i32 %V, ptr %P) {
%0:
  store i32 %V, ptr %P, align 4
  %1 = bitcast i32 %V to float
  ret float %1
}
Transformation seems to be correct!

-- 24. PassManager<Function> : Skipping NOP
-- 25. PassManager<Function> : Skipping NOP
-- 26. GVNPass

----------------------------------------
define float @coerce_mustalias2(ptr %V, ptr %P) {
%0:
  store ptr %V, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %A = load float, ptr %P2, align 4
  ret float %A
}
Transformation seems to be correct! (syntactically equal)

-- 27. GVNPass

----------------------------------------
define float @coerce_mustalias2(ptr %V, ptr %P) {
%0:
  store ptr %V, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %A = load float, ptr %P2, align 4
  ret float %A
}
=>
define float @coerce_mustalias2(ptr %V, ptr %P) {
%0:
  store ptr %V, ptr %P, align 4
  %1 = ptrtoint ptr %V to i32
  %2 = bitcast i32 %1 to float
  ret float %2
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 28. DCEPass

----------------------------------------
define float @coerce_mustalias2(ptr %V, ptr %P) {
%0:
  store ptr %V, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %1 = ptrtoint ptr %V to i32
  %2 = bitcast i32 %1 to float
  ret float %2
}
Transformation seems to be correct! (syntactically equal)

-- 29. DCEPass

----------------------------------------
define float @coerce_mustalias2(ptr %V, ptr %P) {
%0:
  store ptr %V, ptr %P, align 4
  %1 = ptrtoint ptr %V to i32
  %2 = bitcast i32 %1 to float
  ret float %2
}
=>
define float @coerce_mustalias2(ptr %V, ptr %P) {
%0:
  store ptr %V, ptr %P, align 4
  %1 = ptrtoint ptr %V to i32
  %2 = bitcast i32 %1 to float
  ret float %2
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 30. PassManager<Function> : Skipping NOP
-- 31. PassManager<Function> : Skipping NOP
-- 32. GVNPass

----------------------------------------
define ptr @coerce_mustalias3(float %V, ptr %P) {
%0:
  store float %V, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %A = load ptr, ptr %P2, align 4
  ret ptr %A
}
Transformation seems to be correct! (syntactically equal)

-- 33. GVNPass

----------------------------------------
define ptr @coerce_mustalias3(float %V, ptr %P) {
%0:
  store float %V, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %A = load ptr, ptr %P2, align 4
  ret ptr %A
}
=>
define ptr @coerce_mustalias3(float %V, ptr %P) {
%0:
  store float %V, ptr %P, align 4
  %1 = bitcast float %V to i32
  %2 = int2ptr i32 %1 to ptr
  ret ptr %2
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 34. DCEPass

----------------------------------------
define ptr @coerce_mustalias3(float %V, ptr %P) {
%0:
  store float %V, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %1 = bitcast float %V to i32
  %2 = int2ptr i32 %1 to ptr
  ret ptr %2
}
Transformation seems to be correct! (syntactically equal)

-- 35. DCEPass

----------------------------------------
define ptr @coerce_mustalias3(float %V, ptr %P) {
%0:
  store float %V, ptr %P, align 4
  %1 = bitcast float %V to i32
  %2 = int2ptr i32 %1 to ptr
  ret ptr %2
}
=>
define ptr @coerce_mustalias3(float %V, ptr %P) {
%0:
  store float %V, ptr %P, align 4
  %1 = bitcast float %V to i32
  %2 = int2ptr i32 %1 to ptr
  ret ptr %2
}
Transformation seems to be correct!

-- 36. PassManager<Function> : Skipping NOP
-- 37. PassManager<Function> : Skipping NOP
-- 38. GVNPass

----------------------------------------
define float @coerce_mustalias4(ptr %P, i1 %cond) {
%0:
  %A = load i32, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %B = load float, ptr %P2, align 4
  br i1 %cond, label %T, label %F

%F:
  %X = bitcast i32 %A to float
  ret float %X

%T:
  ret float %B
}
Transformation seems to be correct! (syntactically equal)

-- 39. GVNPass

----------------------------------------
define float @coerce_mustalias4(ptr %P, i1 %cond) {
%0:
  %A = load i32, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %B = load float, ptr %P2, align 4
  br i1 %cond, label %T, label %F

%F:
  %X = bitcast i32 %A to float
  ret float %X

%T:
  ret float %B
}
=>
define float @coerce_mustalias4(ptr %P, i1 %cond) {
%0:
  %A = load i32, ptr %P, align 4
  %1 = bitcast i32 %A to float
  br i1 %cond, label %T, label %F

%F:
  ret float %1

%T:
  ret float %1
}
Transformation seems to be correct!

-- 40. DCEPass

----------------------------------------
define float @coerce_mustalias4(ptr %P, i1 %cond) {
%0:
  %A = load i32, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %1 = bitcast i32 %A to float
  br i1 %cond, label %T, label %F

%F:
  ret float %1

%T:
  ret float %1
}
Transformation seems to be correct! (syntactically equal)

-- 41. DCEPass

----------------------------------------
define float @coerce_mustalias4(ptr %P, i1 %cond) {
%0:
  %A = load i32, ptr %P, align 4
  %1 = bitcast i32 %A to float
  br i1 %cond, label %T, label %F

%F:
  ret float %1

%T:
  ret float %1
}
=>
define float @coerce_mustalias4(ptr %P, i1 %cond) {
%0:
  %A = load i32, ptr %P, align 4
  %1 = bitcast i32 %A to float
  br i1 %cond, label %T, label %F

%F:
  ret float %1

%T:
  ret float %1
}
Transformation seems to be correct!

-- 42. PassManager<Function> : Skipping NOP
-- 43. PassManager<Function> : Skipping NOP
-- 44. GVNPass

----------------------------------------
define i8 @coerce_mustalias5(i32 %V, ptr %P) {
%0:
  store i32 %V, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %A = load i8, ptr %P2, align 1
  ret i8 %A
}
Transformation seems to be correct! (syntactically equal)

-- 45. GVNPass

----------------------------------------
define i8 @coerce_mustalias5(i32 %V, ptr %P) {
%0:
  store i32 %V, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %A = load i8, ptr %P2, align 1
  ret i8 %A
}
=>
define i8 @coerce_mustalias5(i32 %V, ptr %P) {
%0:
  store i32 %V, ptr %P, align 4
  %1 = trunc i32 %V to i8
  ret i8 %1
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 46. DCEPass

----------------------------------------
define i8 @coerce_mustalias5(i32 %V, ptr %P) {
%0:
  store i32 %V, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %1 = trunc i32 %V to i8
  ret i8 %1
}
Transformation seems to be correct! (syntactically equal)

-- 47. DCEPass

----------------------------------------
define i8 @coerce_mustalias5(i32 %V, ptr %P) {
%0:
  store i32 %V, ptr %P, align 4
  %1 = trunc i32 %V to i8
  ret i8 %1
}
=>
define i8 @coerce_mustalias5(i32 %V, ptr %P) {
%0:
  store i32 %V, ptr %P, align 4
  %1 = trunc i32 %V to i8
  ret i8 %1
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 48. PassManager<Function> : Skipping NOP
-- 49. PassManager<Function> : Skipping NOP
-- 50. GVNPass

----------------------------------------
define float @coerce_mustalias6(i64 %V, ptr %P) {
%0:
  store i64 %V, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %A = load float, ptr %P2, align 4
  ret float %A
}
Transformation seems to be correct! (syntactically equal)

-- 51. GVNPass

----------------------------------------
define float @coerce_mustalias6(i64 %V, ptr %P) {
%0:
  store i64 %V, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %A = load float, ptr %P2, align 4
  ret float %A
}
=>
define float @coerce_mustalias6(i64 %V, ptr %P) {
%0:
  store i64 %V, ptr %P, align 4
  %1 = trunc i64 %V to i32
  %2 = bitcast i32 %1 to float
  ret float %2
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 52. DCEPass

----------------------------------------
define float @coerce_mustalias6(i64 %V, ptr %P) {
%0:
  store i64 %V, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %1 = trunc i64 %V to i32
  %2 = bitcast i32 %1 to float
  ret float %2
}
Transformation seems to be correct! (syntactically equal)

-- 53. DCEPass

----------------------------------------
define float @coerce_mustalias6(i64 %V, ptr %P) {
%0:
  store i64 %V, ptr %P, align 4
  %1 = trunc i64 %V to i32
  %2 = bitcast i32 %1 to float
  ret float %2
}
=>
define float @coerce_mustalias6(i64 %V, ptr %P) {
%0:
  store i64 %V, ptr %P, align 4
  %1 = trunc i64 %V to i32
  %2 = bitcast i32 %1 to float
  ret float %2
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 54. PassManager<Function> : Skipping NOP
-- 55. PassManager<Function> : Skipping NOP
-- 56. GVNPass

----------------------------------------
define ptr @coerce_mustalias7(i64 %V, ptr %P) {
%0:
  store i64 %V, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %A = load ptr, ptr %P2, align 4
  ret ptr %A
}
Transformation seems to be correct! (syntactically equal)

-- 57. GVNPass

----------------------------------------
define ptr @coerce_mustalias7(i64 %V, ptr %P) {
%0:
  store i64 %V, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %A = load ptr, ptr %P2, align 4
  ret ptr %A
}
=>
define ptr @coerce_mustalias7(i64 %V, ptr %P) {
%0:
  store i64 %V, ptr %P, align 4
  %1 = trunc i64 %V to i32
  %2 = int2ptr i32 %1 to ptr
  ret ptr %2
}
Transformation seems to be correct!

-- 58. DCEPass

----------------------------------------
define ptr @coerce_mustalias7(i64 %V, ptr %P) {
%0:
  store i64 %V, ptr %P, align 4
  %P2 = bitcast ptr %P to ptr
  %1 = trunc i64 %V to i32
  %2 = int2ptr i32 %1 to ptr
  ret ptr %2
}
Transformation seems to be correct! (syntactically equal)

-- 59. DCEPass

----------------------------------------
define ptr @coerce_mustalias7(i64 %V, ptr %P) {
%0:
  store i64 %V, ptr %P, align 4
  %1 = trunc i64 %V to i32
  %2 = int2ptr i32 %1 to ptr
  ret ptr %2
}
=>
define ptr @coerce_mustalias7(i64 %V, ptr %P) {
%0:
  store i64 %V, ptr %P, align 4
  %1 = trunc i64 %V to i32
  %2 = int2ptr i32 %1 to ptr
  ret ptr %2
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 60. PassManager<Function> : Skipping NOP
-- 61. PassManager<Function> : Skipping NOP
-- 62. GVNPass

----------------------------------------
define i16 @memset_to_i16_local(ptr %A) {
%entry:
  %conv = bitcast ptr %A to ptr
  memset ptr %conv align 1, i8 1, i64 200
  %arrayidx = gep inbounds ptr %A, 2 x i64 42
  %ttmp2 = load i16, ptr %arrayidx, align 2
  ret i16 %ttmp2
}
Transformation seems to be correct! (syntactically equal)

-- 63. GVNPass

----------------------------------------
define i16 @memset_to_i16_local(ptr %A) {
%entry:
  %conv = bitcast ptr %A to ptr
  memset ptr %conv align 1, i8 1, i64 200
  %arrayidx = gep inbounds ptr %A, 2 x i64 42
  %ttmp2 = load i16, ptr %arrayidx, align 2
  ret i16 %ttmp2
}
=>
define i16 @memset_to_i16_local(ptr %A) {
%entry:
  %conv = bitcast ptr %A to ptr
  memset ptr %conv align 1, i8 1, i64 200
  ret i16 257
}
Transformation seems to be correct!

-- 64. DCEPass

----------------------------------------
define i16 @memset_to_i16_local(ptr %A) {
%entry:
  %conv = bitcast ptr %A to ptr
  memset ptr %conv align 1, i8 1, i64 200
  %arrayidx = gep inbounds ptr %A, 2 x i64 42
  ret i16 257
}
Transformation seems to be correct! (syntactically equal)

-- 65. DCEPass

----------------------------------------
define i16 @memset_to_i16_local(ptr %A) {
%entry:
  %conv = bitcast ptr %A to ptr
  memset ptr %conv align 1, i8 1, i64 200
  ret i16 257
}
=>
define i16 @memset_to_i16_local(ptr %A) {
%entry:
  %conv = bitcast ptr %A to ptr
  memset ptr %conv align 1, i8 1, i64 200
  ret i16 257
}
Transformation seems to be correct!

-- 66. PassManager<Function> : Skipping NOP
-- 67. PassManager<Function> : Skipping NOP
-- 68. GVNPass

----------------------------------------
define float @memset_to_float_local(ptr %A, i8 %Val) {
%entry:
  %conv = bitcast ptr %A to ptr
  memset ptr %conv align 1, i8 %Val, i64 400
  %arrayidx = gep inbounds ptr %A, 4 x i64 42
  %ttmp2 = load float, ptr %arrayidx, align 4
  ret float %ttmp2
}
Transformation seems to be correct! (syntactically equal)

-- 69. GVNPass

----------------------------------------
define float @memset_to_float_local(ptr %A, i8 %Val) {
%entry:
  %conv = bitcast ptr %A to ptr
  memset ptr %conv align 1, i8 %Val, i64 400
  %arrayidx = gep inbounds ptr %A, 4 x i64 42
  %ttmp2 = load float, ptr %arrayidx, align 4
  ret float %ttmp2
}
=>
define float @memset_to_float_local(ptr %A, i8 %Val) {
%entry:
  %conv = bitcast ptr %A to ptr
  memset ptr %conv align 1, i8 %Val, i64 400
  %0 = zext i8 %Val to i32
  %1 = shl i32 %0, 8
  %2 = or i32 %0, %1
  %3 = shl i32 %2, 16
  %4 = or i32 %2, %3
  %5 = bitcast i32 %4 to float
  ret float %5
}
Transformation doesn't verify! (unsound)
ERROR: Value mismatch

Example:
ptr %A = pointer(non-local, block_id=1, offset=808)
i8 %Val = undef

Source:
ptr %conv = pointer(non-local, block_id=1, offset=808)
ptr %arrayidx = pointer(non-local, block_id=1, offset=976)
float %ttmp2 = #x00000000 (+0.0)	[based on undef value]

SOURCE MEMORY STATE
===================
NON-LOCAL BLOCKS:
Block 0 >	size: 0	align: 1	alloc type: 0
Block 1 >	size: 2048	align: 16	alloc type: 0

Target:
ptr %conv = pointer(non-local, block_id=1, offset=808)
i32 %0 = #x00000002 (2)
i32 %1 = #x00000200 (512)
i32 %2 = #x00000202 (514)
i32 %3 = #x02020000 (33685504)
i32 %4 = #x02020200 (33686016)
float %5 = #x02020200 (0.000000000000?)
Source value: #x00000000 (+0.0)
Target value: #x02020200 (0.000000000000?)

Pass: GVNPass
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' '-data-layout=e-p:32:32:32-p1:16:16:16-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-n8:16:32' '-passes=gvn,dce' '-enable-split-backedge-in-load-pre' '-S' '-tv-smt-to=20000' '-tv-report-dir=/home/nlopes/alive2/build/logs' '-tv-smt-stats'


------------------- SMT STATS -------------------
Num queries: 108
Num invalid: 0
Num skips:   0
Num trivial: 62 (36.5%)
Num timeout: 8 (7.4%)
Num errors:  0 (0.0%)
Num SAT:     55 (50.9%)
Num UNSAT:   45 (41.7%)
Alive2: Transform doesn't verify; aborting!

stderr:

+ : 'RUN: at line 2'
+ /home/nlopes/alive2/build/opt-alive.sh -data-layout=e-p:32:32:32-p1:16:16:16-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-n8:16:32 -passes=gvn,dce -enable-split-backedge-in-load-pre -S
+ /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/GVN/PRE/rle.ll --check-prefixes=CHECK,LE

FileCheck error: '<stdin>' is empty.
FileCheck command line:  /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/GVN/PRE/rle.ll --check-prefixes=CHECK,LE

 

NOTE: This test would pass if undef didn't exist!

 

<-- Back