Test Failure: Transforms/SROA/select-load.ll

Test source: git

Log:

Source: <stdin>

----------------------------------------
define <2 x i16> @test_load_bitcast_select(i1 %cond1, i1 %cond2) denormal-fp-math=ieee,ieee {
%entry:
  %true = alloca i64 2, align 2
  %false = alloca i64 2, align 2
  store half 65535, ptr %true, align 2
  store half 0, ptr %false, align 2
  %sel1 = select i1 %cond1, ptr %true, ptr %false
  %ld1 = load i16, ptr %sel1, align 2
  %v1 = insertelement <2 x i16> poison, i16 %ld1, i32 0
  %sel2 = select i1 %cond2, ptr %true, ptr %false
  %ld2 = load i16, ptr %sel2, align 2
  %v2 = insertelement <2 x i16> %v1, i16 %ld2, i32 1
  ret <2 x i16> %v2
}
=>
define <2 x i16> @test_load_bitcast_select(i1 %cond1, i1 %cond2) denormal-fp-math=ieee,ieee {
%entry:
  %0 = bitcast half 65535 to i16
  %1 = bitcast half 0 to i16
  %ld1.sroa.speculated = select i1 %cond1, i16 %0, i16 %1
  %v1 = insertelement <2 x i16> poison, i16 %ld1.sroa.speculated, i32 0
  %2 = bitcast half 65535 to i16
  %3 = bitcast half 0 to i16
  %ld2.sroa.speculated = select i1 %cond2, i16 %2, i16 %3
  %v2 = insertelement <2 x i16> %v1, i16 %ld2.sroa.speculated, i32 1
  ret <2 x i16> %v2
}
Transformation doesn't verify!
ERROR: Value mismatch

Example:
i1 %cond1 = #x1 (1)
i1 %cond2 = #x1 (1)

Source:
ptr %true = pointer(local, block_id=0, offset=0)
ptr %false = pointer(local, block_id=1, offset=0)
ptr %sel1 = pointer(local, block_id=0, offset=0)
i16 %ld1 = #x7c00 (31744)
<2 x i16> %v1 = < #x7c00 (31744), poison >
ptr %sel2 = pointer(local, block_id=0, offset=0)
i16 %ld2 = #x7c00 (31744)
<2 x i16> %v2 = < #x7c00 (31744), #x7c00 (31744) >

SOURCE MEMORY STATE
===================
LOCAL BLOCKS:
Block 0 >	size: 2	align: 2	alloc type: 1
Block 1 >	size: 2	align: 2	alloc type: 1

Target:
i16 %0 = #x7c20 (31776)
i16 %1 = #x0000 (0)
i16 %ld1.sroa.speculated = #x7c20 (31776)
<2 x i16> %v1 = < #x7c20 (31776), poison >
i16 %2 = #x7c02 (31746)
i16 %3 = #x0000 (0)
i16 %ld2.sroa.speculated = #x7c02 (31746)
<2 x i16> %v2 = < #x7c20 (31776), #x7c02 (31746) >
Source value: < #x7c00 (31744), #x7c00 (31744) >
Target value: < #x7c20 (31776), #x7c02 (31746) >


------------------- SMT STATS -------------------
Num queries: 6
Num invalid: 0
Num skips:   0
Num trivial: 26 (81.2%)
Num timeout: 0 (0.0%)
Num errors:  0 (0.0%)
Num SAT:     4 (66.7%)
Num UNSAT:   2 (33.3%)
Alive2: Transform doesn't verify; aborting!

stderr:

+ : 'RUN: at line 2'
+ /home/nlopes/alive2/build/opt-alive.sh -S -passes=sroa
+ /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/SROA/select-load.ll

FileCheck error: '<stdin>' is empty.
FileCheck command line:  /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/SROA/select-load.ll

 

<-- Back