[llvm-commits] [llvm] r45605 - in /llvm/trunk/lib/Target/X86: X86ATTAsmPrinter.cpp X86CodeEmitter.cpp X86ISelDAGToDAG.cpp X86InstrInfo.td X86MachineFunctionInfo.h
Chris Lattner
clattner at apple.com
Fri Jan 4 17:04:45 PST 2008
On Jan 4, 2008, at 4:41 PM, Evan Cheng wrote:
> Author: evancheng
> Date: Fri Jan 4 18:41:47 2008
> New Revision: 45605
>
> URL: http://llvm.org/viewvc/llvm-project?rev=45605&view=rev
> Log:
> Combine MovePCtoStack + POP32r into one instruction MOVPC32r so it
> can be moved if needed.
Nice evan! With this, sinking is now able to compile code like this:
int G;
int test(int X, int Y) {
if (X)
return G+Y;
return 0;
}
into:
_test:
cmpl $0, 4(%esp)
je LBB2_2 # UnifiedReturnBlock
LBB2_1: # cond_true
call "L2$pb"
"L2$pb":
popl %ecx
movl 8(%esp), %eax
movl L_G$non_lazy_ptr-"L2$pb"(%ecx), %ecx
addl (%ecx), %eax
ret
LBB2_2: # UnifiedReturnBlock
xorl %eax, %eax
ret
instead of:
_test:
call "L2$pb"
"L2$pb":
popl %ecx
cmpl $0, 4(%esp)
movl 8(%esp), %eax
je LBB2_2 # UnifiedReturnBlock
LBB2_1: # cond_true
movl L_G$non_lazy_ptr-"L2$pb"(%ecx), %ecx
addl (%ecx), %eax
ret
LBB2_2: # UnifiedReturnBlock
xorl %eax, %eax
ret
-Chris
More information about the llvm-commits
mailing list