Test Failure: Transforms/IndVarSimplify/X86/pr57187.ll

Test source: git

Log:

Source: <stdin>

----------------------------------------
define void @test(i32 %start) denormal-fp-math=ieee,ieee {
%entry:
  br label %loop

%loop:
  %iv = phi i32 [ %start, %entry ], [ %iv.next, %backedge ]
  %iv.next = add i32 %iv, 4294967295
  %loop.exit.cond = icmp slt i32 %iv.next, 11
  br i1 %loop.exit.cond, label %exit, label %stuck

%exit:
  %iv.next.lcssa = phi i32 [ %iv.next, %loop ]
  ret void

%stuck:
  br i1 0, label %backedge, label %stuck

%backedge:
  br label %loop
}
=>
define void @test(i32 %start) denormal-fp-math=ieee,ieee {
%entry:
  %0 = zext i32 %start to i64
  br label %loop

%loop:
  %indvars.iv = phi i64 [ %indvars.iv.next, %backedge ], [ %0, %entry ]
  %indvars.iv.next = add nsw nuw i64 %indvars.iv, -1
  %indvars = trunc i64 %indvars.iv.next to i32
  %loop.exit.cond = icmp slt i32 %indvars, 11
  br i1 %loop.exit.cond, label %exit, label %stuck.preheader

%exit:
  %iv.next.lcssa = phi i32 [ %indvars, %loop ]
  ret void

%stuck.preheader:
  br label %stuck

%stuck:
  br i1 0, label %backedge, label %stuck

%backedge:
  br label %loop
}
Transformation doesn't verify! (unsound)
ERROR: Source is more defined than target

Example:
i32 %start = #xa0000000 (2684354560, -1610612736)

Source:
  >> Jump to %loop
i32 %iv = #xa0000000 (2684354560, -1610612736)
i32 %iv.next = #x9fffffff (2684354559, -1610612737)
i1 %loop.exit.cond = #x1 (1)
  >> Jump to %exit
i32 %iv.next.lcssa = #x9fffffff (2684354559, -1610612737)

Target:
i64 %0 = #x00000000a0000000 (2684354560)
  >> Jump to %loop
i64 %indvars.iv = #x00000000a0000000 (2684354560)
i64 %indvars.iv.next = poison
i32 %indvars = poison
i1 %loop.exit.cond = poison
UB triggered on br


Pass: ModuleToFunctionPassAdaptor
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' '-S' '-passes=module(tv),function(loop(indvars)),module(tv)' '-tv-smt-to=20000' '-tv-report-dir=/home/nlopes/alive2/build/logs' '-tv-smt-stats'


------------------- SMT STATS -------------------
Num queries: 4
Num invalid: 0
Num skips:   0
Num trivial: 7 (63.6%)
Num timeout: 0 (0.0%)
Num errors:  0 (0.0%)
Num SAT:     4 (100.0%)
Num UNSAT:   0 (0.0%)
Alive2: Transform doesn't verify; aborting!

stderr:

+ : 'RUN: at line 2'
+ /home/nlopes/alive2/build/opt-alive.sh -S -passes=indvars
+ /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/IndVarSimplify/X86/pr57187.ll

FileCheck error: '<stdin>' is empty.
FileCheck command line:  /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/IndVarSimplify/X86/pr57187.ll

 

<-- Back