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

Jim Grosbach grosbach at apple.com
Wed Feb 20 10:06:24 PST 2013


On Feb 20, 2013, at 10:08 AM, Chad Rosier <mcrosier at apple.com> wrote:

> 
> On Feb 19, 2013, at 5:38 PM, Jim Grosbach <grosbach at apple.com> wrote:
> 
>> Hi Chad,
>> 
>> Looks good, but perhaps elaborate in the comment about why this is needed?
> 
> That code is so simple it doesn't even need documentation, right?  ;)  (Total sarcasm!!!)
> 
> Sure, committed revision 175641.  Let me know if that suffices.

Yep, exactly the sort of thing I was looking for. Thanks!

-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