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 llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits