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

Chad Rosier mcrosier at apple.com
Wed Feb 20 10:08:46 PST 2013


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.

 Chad

> 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