Test source: git
Source: <stdin> ---------------------------------------- define void @Test(i32 %0) { %entry: br label %outer %outer: %oi = phi i32 [ 0, %entry ], [ %oinc, %outer_continue ] br label %inner %inner: %ii = phi i32 [ 0, %outer ], [ %iinc, %continue ] call void @foo() switch i32 %0, label %get_out2 [ i32 0, label %continue i32 1, label %case1 i32 2, label %get_out ] %get_out2: assume i1 0 %case1: br label %continue %continue: %iinc = add i32 %ii, 1 %icmp = icmp eq i32 %ii, 100 br i1 %icmp, label %inner, label %outer_continue %outer_continue: %oinc = add i32 %oi, 1 %ocmp = icmp eq i32 %oi, 100 br i1 %ocmp, label %outer, label %get_out %get_out: ret void } => define void @Test(i32 %0) { %entry: switch i32 %0, label %outer.split [ i32 2, label %outer.split.us8 i32 0, label %entry.split i32 1, label %entry.split ] %entry.split: switch i32 %0, label %entry.split.split [ i32 0, label %entry.split.split.us ] %entry.split.split: br label %outer %outer: %oi = phi i32 [ 0, %entry.split.split ], [ %oinc, %outer_continue ] br label %outer.split.us2 %outer.split.us2: br label %inner.us3 %inner.us3: %ii.us4 = phi i32 [ 0, %outer.split.us2 ], [ %iinc.us6, %continue.us5 ] call void @foo() br label %case1.us %case1.us: br label %continue.us5 %continue.us5: %iinc.us6 = add i32 %ii.us4, 1 %icmp.us7 = icmp eq i32 %ii.us4, 100 br i1 %icmp.us7, label %inner.us3, label %outer_continue.split.split.us %outer_continue.split.split.us: br label %outer_continue.split %outer_continue.split: br label %outer_continue %outer_continue: %oinc = add i32 %oi, 1 %ocmp = icmp eq i32 %oi, 100 br i1 %ocmp, label %outer, label %get_out.loopexit1.split %get_out.loopexit1.split: br label %get_out.loopexit1 %entry.split.split.us: br label %outer.us %outer.us: %oi.us = phi i32 [ 0, %entry.split.split.us ], [ %oinc.us, %outer_continue.us ] br label %outer.split.us.us %outer.split.us.us: br label %inner.us.us %inner.us.us: %ii.us.us = phi i32 [ 0, %outer.split.us.us ], [ %iinc.us.us, %continue.us.us ] call void @foo() br label %continue.us.us %continue.us.us: %iinc.us.us = add i32 %ii.us.us, 1 %icmp.us.us = icmp eq i32 %ii.us.us, 100 br i1 %icmp.us.us, label %inner.us.us, label %outer_continue.split.us.us %outer_continue.split.us.us: br label %outer_continue.us %outer_continue.us: %oinc.us = add i32 %oi.us, 1 %ocmp.us = icmp eq i32 %oi.us, 100 br i1 %ocmp.us, label %outer.us, label %get_out.loopexit1.split.us %get_out.loopexit1.split.us: br label %get_out.loopexit1 %get_out.loopexit1: br label %get_out %outer.split.us8: br label %inner.us9 %inner.us9: call void @foo() br label %get_out.loopexit.split.us %get_out.loopexit.split.us: br label %get_out.loopexit %get_out.loopexit: br label %get_out %get_out: ret void %outer.split: br label %inner %inner: call void @foo() br label %get_out2 %get_out2: assume i1 0 } Transformation doesn't verify! ERROR: Source is more defined than target Example: i32 %0 = undef Source: >> Jump to %outer i32 %oi = #x00000000 (0) >> Jump to %inner i32 %ii = #x00000000 (0) void = UB triggered! SOURCE MEMORY STATE =================== NON-LOCAL BLOCKS: Block 0 > size: 0 align: 1 alloc type: 0 Block 1 > size: 0 align: 1 Target: UB triggered on switch ------------------- SMT STATS ------------------- Num queries: 4 Num invalid: 0 Num skips: 0 Num trivial: 3 (42.9%) 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!
+ : 'RUN: at line 1' + /home/nuno/llvm/build/bin/FileCheck /home/nuno/llvm/llvm/test/Transforms/SimpleLoopUnswitch/delete-dead-blocks.ll + /home/nuno/alive2/build/opt-alive.sh -simple-loop-unswitch -enable-nontrivial-unswitch -S /home/nuno/llvm/llvm/test/Transforms/SimpleLoopUnswitch/delete-dead-blocks.ll:9:16: error: CHECK-LABEL: expected string not found in input ; CHECK-LABEL: @Test ^ <stdin>:1:1: note: scanning from here ^ <stdin>:1:46: note: possible intended match here ^ Input file: <stdin> Check file: /home/nuno/llvm/llvm/test/Transforms/SimpleLoopUnswitch/delete-dead-blocks.ll -dump-input=help explains the following input dump. Input was: <<<<<< 1: label:9'0 X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found label:9'1 ? possible intended match >>>>>>