Browse Source

[ms-inline asm] Make the comment a bit more verbose.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175641 91177308-0d34-0410-b5e6-96231b3b80d8
Chad Rosier 12 years ago
parent
commit
9b5b8b0b94
1 changed files with 6 additions and 2 deletions
  1. 6 2
      lib/Target/X86/X86RegisterInfo.cpp

+ 6 - 2
lib/Target/X86/X86RegisterInfo.cpp

@@ -389,8 +389,12 @@ bool X86RegisterInfo::hasBasePointer(const MachineFunction &MF) const {
      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.  This
-   // is also true if the function contain MS-style inline assembly.
+   // reference off of the stack pointer, so we reserve a base pointer.
+   //
+   // This is also true if the function contain MS-style inline assembly.  We
+   // do this because if any stack changes occur in the inline assembly, e.g.,
+   // "pusha", then any C local variable or C argument references in the
+   // inline assembly will be wrong because the SP is not properly tracked.
    if ((needsStackRealignment(MF) && MFI->hasVarSizedObjects()) ||
        MF.hasMSInlineAsm())
      return true;