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
_______________________________________________
llvm-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits