Test source: git
Source: /home/nlopes/llvm/llvm/test/Transforms/Scalarizer/scatter-order.ll ---------------------------------------- define <2 x i32> @test1(i1 %b, <2 x i32> %i, <2 x i32> %j) { %0: %res = select i1 %b, <2 x i32> %i, <2 x i32> %j ret <2 x i32> %res } => define <2 x i32> @test1(i1 %b, <2 x i32> %i, <2 x i32> %j) { %0: %i.i0 = extractelement <2 x i32> %i, i32 0 %j.i0 = extractelement <2 x i32> %j, i32 0 %res.i0 = select i1 %b, i32 %i.i0, i32 %j.i0 %i.i1 = extractelement <2 x i32> %i, i32 1 %j.i1 = extractelement <2 x i32> %j, i32 1 %res.i1 = select i1 %b, i32 %i.i1, i32 %j.i1 %res.upto0 = insertelement <2 x i32> poison, i32 %res.i0, i32 0 %res = insertelement <2 x i32> %res.upto0, i32 %res.i1, i32 1 ret <2 x i32> %res } Transformation doesn't verify! ERROR: Target is more poisonous than source Example: i1 %b = undef <2 x i32> %i = < poison, any > <2 x i32> %j = < any, poison > Source: <2 x i32> %res = < poison, poison > Target: i32 %i.i0 = poison i32 %j.i0 = any i32 %res.i0 = poison i32 %i.i1 = any i32 %j.i1 = poison i32 %res.i1 = poison <2 x i32> %res.upto0 = < poison, poison > <2 x i32> %res = < poison, poison > Source value: < poison, poison > Target value: < poison, poison > ------------------- SMT STATS ------------------- Num queries: 10 Num invalid: 0 Num skips: 0 Num trivial: 7 (41.2%) Num timeout: 0 (0.0%) Num errors: 0 (0.0%) Num SAT: 6 (60.0%) Num UNSAT: 4 (40.0%) Alive2: Transform doesn't verify; aborting!
+ : 'RUN: at line 2' + /home/nlopes/alive2/build/opt-alive.sh /home/nlopes/llvm/llvm/test/Transforms/Scalarizer/scatter-order.ll -scalarizer -scalarize-load-store -S + /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/Scalarizer/scatter-order.ll FileCheck error: '<stdin>' is empty. FileCheck command line: /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/Scalarizer/scatter-order.ll
NOTE: This test would pass if undef didn't exist!