[llvm] r175576 - [ms-inline asm] Force the use of a base pointer if the MachineFunction includes

Jim Grosbach grosbach at apple.com
Tue Feb 19 17:38:48 PST 2013


Hi Chad,

Looks good, but perhaps elaborate in the comment about why this is needed?

Jim 

On Feb 19, 2013, at 3:50 PM, Chad Rosier <mcrosier at apple.com> wrote:

> Author: mcrosier
> Date: Tue Feb 19 17:50:45 2013
> New Revision: 175576
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=175576&view=rev
> Log:
> [ms-inline asm] Force the use of a base pointer if the MachineFunction includes
> MS-style inline assembly.
> 
> This is a follow-on to r175334.  Forcing a FP to be emitted doesn't ensure it
> will be used.  Therefore, force the base pointer as well.  We now treat MS
> inline assembly in the same way we treat functions with dynamic stack
> realignment and VLAs.  This guarantees the BP will be used to reference 
> parameters and locals.
> rdar://13218191
> 
> Modified:
>    llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp
>    llvm/trunk/test/CodeGen/X86/ms-inline-asm.ll
> 
> Modified: llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp?rev=175576&r1=175575&r2=175576&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp (original)
> +++ llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp Tue Feb 19 17:50:45 2013
> @@ -389,8 +389,10 @@ bool X86RegisterInfo::hasBasePointer(con
>      return false;
> 
>    // When we need stack realignment and there are dynamic allocas, we can't
> -   // reference off of the stack pointer, so we reserve a base pointer.
> -   if (needsStackRealignment(MF) && MFI->hasVarSizedObjects())
> +   // reference off of the stack pointer, so we reserve a base pointer.  This
> +   // is also true if the function contain MS-style inline assembly.
> +   if ((needsStackRealignment(MF) && MFI->hasVarSizedObjects()) ||
> +       MF.hasMSInlineAsm())
>      return true;
> 
>    return false;
> 
> Modified: llvm/trunk/test/CodeGen/X86/ms-inline-asm.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/ms-inline-asm.ll?rev=175576&r1=175575&r2=175576&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/ms-inline-asm.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/ms-inline-asm.ll Tue Feb 19 17:50:45 2013
> @@ -103,8 +103,8 @@ entry:
> ; CHECK: {{## InlineAsm End|#NO_APP}}
> ; CHECK: {{## InlineAsm Start|#APP}}
> ; CHECK: .intel_syntax
> -; CHECK: mov dword ptr [ebp - 8], edi
> +; CHECK: mov dword ptr [esi], edi
> ; CHECK: .att_syntax
> ; CHECK: {{## InlineAsm End|#NO_APP}}
> -; CHECK: movl -8(%ebp), %eax
> +; CHECK: movl (%esi), %eax
> }
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list