[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