mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-20 09:30:43 +00:00
39 lines
675 B
LLVM
39 lines
675 B
LLVM
|
; RUN: opt < %s -lcssa -S | FileCheck %s
|
||
|
; CHECK: exit1:
|
||
|
; CHECK: .lcssa =
|
||
|
; CHECK: exit2:
|
||
|
; CHECK: .lcssa2 =
|
||
|
; CHECK: exit3:
|
||
|
; CHECK-NOT: .lcssa1 =
|
||
|
|
||
|
; Test to ensure that when there are multiple exit blocks, PHI nodes are
|
||
|
; only inserted by LCSSA when there is a use dominated by a given exit
|
||
|
; block.
|
||
|
|
||
|
declare void @printf(i32 %i)
|
||
|
|
||
|
define i32 @unused_phis() nounwind {
|
||
|
entry:
|
||
|
br label %loop
|
||
|
|
||
|
loop:
|
||
|
%i = phi i32 [0, %entry], [1, %then2]
|
||
|
br i1 undef, label %exit1, label %then1
|
||
|
|
||
|
then1:
|
||
|
br i1 undef, label %exit2, label %then2
|
||
|
|
||
|
then2:
|
||
|
br i1 undef, label %exit3, label %loop
|
||
|
|
||
|
exit1:
|
||
|
call void @printf(i32 %i)
|
||
|
ret i32 %i
|
||
|
|
||
|
exit2:
|
||
|
ret i32 %i
|
||
|
|
||
|
exit3:
|
||
|
ret i32 0
|
||
|
}
|