mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-28 15:33:14 +00:00
6edb0eac87
1) Do forward copy propagation. This makes it easier to estimate the cost of the instruction being sunk. 2) Break critical edges on demand, including cases where the value is used by PHI nodes. Critical edge splitting is not yet enabled by default. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114227 91177308-0d34-0410-b5e6-96231b3b80d8
31 lines
767 B
LLVM
31 lines
767 B
LLVM
; RUN: llc < %s -march=x86 -stats |& not grep {instructions sunk}
|
|
; PR3522
|
|
|
|
target triple = "i386-pc-linux-gnu"
|
|
@.str = external constant [13 x i8] ; <[13 x i8]*> [#uses=1]
|
|
|
|
define void @_ada_c34018a() {
|
|
entry:
|
|
%0 = tail call i32 @report__ident_int(i32 90) ; <i32> [#uses=1]
|
|
%1 = trunc i32 %0 to i8 ; <i8> [#uses=1]
|
|
invoke void @__gnat_rcheck_12(i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 32) noreturn
|
|
to label %invcont unwind label %lpad
|
|
|
|
invcont: ; preds = %entry
|
|
unreachable
|
|
|
|
bb22: ; preds = %lpad
|
|
ret void
|
|
|
|
return: ; preds = %lpad
|
|
ret void
|
|
|
|
lpad: ; preds = %entry
|
|
%2 = icmp eq i8 %1, 90 ; <i1> [#uses=1]
|
|
br i1 %2, label %return, label %bb22
|
|
}
|
|
|
|
declare void @__gnat_rcheck_12(i8*, i32) noreturn
|
|
|
|
declare i32 @report__ident_int(i32)
|