[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