Test Failure: Transforms/SimpleLoopUnswitch/delete-dead-blocks.ll

Test source: git

Log:

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!

stderr:

+ : '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
>>>>>>

 

<-- Back