mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-14 15:39:06 +00:00
03fdec04d1
can be live out of the block anyway, so it isn't needed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48192 91177308-0d34-0410-b5e6-96231b3b80d8
59 lines
2.4 KiB
LLVM
59 lines
2.4 KiB
LLVM
; Verify that the addl comes before any popl.
|
|
|
|
; RUN: llvm-as < %s | llc -mtriple=i686-pc-linux-gnu -mcpu=i386 | \
|
|
; RUN: %prcontext ret 1 | grep popl
|
|
; PR1573
|
|
|
|
%struct.c34006f__TsB = type { i8, i32, i32, %struct.c34006f__TsB___b___XVN }
|
|
%struct.c34006f__TsB___b___XVN = type { %struct.c34006f__TsB___b___XVN___O }
|
|
%struct.c34006f__TsB___b___XVN___O = type { float }
|
|
|
|
define fastcc i8 @c34006f__pkg__parentEQ.213(%struct.c34006f__TsB* %x, %struct.c34006f__TsB* %y) zeroext {
|
|
entry:
|
|
%tmp190 = icmp eq i8 0, 0 ; <i1> [#uses=1]
|
|
%tmp207 = icmp eq i32 0, 0 ; <i1> [#uses=1]
|
|
%bothcond = and i1 %tmp190, %tmp207 ; <i1> [#uses=1]
|
|
%tmp224 = icmp eq i32 0, 0 ; <i1> [#uses=1]
|
|
%bothcond1 = and i1 %bothcond, %tmp224 ; <i1> [#uses=1]
|
|
br i1 %bothcond1, label %cond_next229, label %UnifiedReturnBlock
|
|
|
|
cond_next229: ; preds = %entry
|
|
%tmp234 = icmp eq i8 0, 0 ; <i1> [#uses=1]
|
|
br i1 %tmp234, label %cond_false391, label %cond_true237
|
|
|
|
cond_true237: ; preds = %cond_next229
|
|
%tmp268 = icmp sgt i32 0, -1 ; <i1> [#uses=2]
|
|
%max269 = select i1 %tmp268, i32 0, i32 0 ; <i32> [#uses=1]
|
|
%tmp305.op = add i32 0, -1 ; <i32> [#uses=1]
|
|
br i1 false, label %bb328, label %cond_next315
|
|
|
|
cond_next315: ; preds = %cond_true237
|
|
ret i8 0
|
|
|
|
bb328: ; preds = %cond_true237
|
|
%tmp337 = select i1 %tmp268, i32 %tmp305.op, i32 -1 ; <i32> [#uses=1]
|
|
%tmp347 = icmp eq i32 %tmp337, 0 ; <i1> [#uses=1]
|
|
br i1 %tmp347, label %cond_next351, label %UnifiedReturnBlock
|
|
|
|
cond_next351: ; preds = %bb328
|
|
%tmp354 = getelementptr %struct.c34006f__TsB* %y, i32 0, i32 3 ; <%struct.c34006f__TsB___b___XVN*> [#uses=1]
|
|
%tmp354355 = bitcast %struct.c34006f__TsB___b___XVN* %tmp354 to i8* ; <i8*> [#uses=1]
|
|
%tmp358 = getelementptr %struct.c34006f__TsB* %x, i32 0, i32 3 ; <%struct.c34006f__TsB___b___XVN*> [#uses=1]
|
|
%tmp358359 = bitcast %struct.c34006f__TsB___b___XVN* %tmp358 to i8* ; <i8*> [#uses=1]
|
|
%tmp360 = tail call i32 (i8*, i8*, i32, ...)* @memcmp( i8* %tmp358359, i8* %tmp354355, i32 %max269 ) ; <i32> [#uses=0]
|
|
ret i8 0
|
|
|
|
cond_false391: ; preds = %cond_next229
|
|
%tmp1 = getelementptr %struct.c34006f__TsB* %y, i32 0, i32 3, i32 0, i32 0
|
|
%tmp2 = load float* %tmp1
|
|
%tmp400 = fcmp une float %tmp2, 0.000000e+00 ; <i1> [#uses=1]
|
|
%not.tmp400 = xor i1 %tmp400, true ; <i1> [#uses=1]
|
|
%retval = zext i1 %not.tmp400 to i8 ; <i8> [#uses=1]
|
|
ret i8 %retval
|
|
|
|
UnifiedReturnBlock: ; preds = %bb328, %entry
|
|
ret i8 0
|
|
}
|
|
|
|
declare i32 @memcmp(i8*, i8*, i32, ...)
|