diff options
author | Reid Kleckner <reid@kleckner.net> | 2013-12-10 18:27:32 +0000 |
---|---|---|
committer | Reid Kleckner <reid@kleckner.net> | 2013-12-10 18:27:32 +0000 |
commit | ee08897fb8d4b59b4609f6e837205e7a089b6fb7 (patch) | |
tree | c2b3f4fa2494bc1195edbd74c4e162e882c73c82 /llvm/lib/MC/MCParser/AsmParser.cpp | |
parent | 6f2f39006ba5b95e6314f83c0a8cd670152892d3 (diff) | |
download | bcm5719-llvm-ee08897fb8d4b59b4609f6e837205e7a089b6fb7.tar.gz bcm5719-llvm-ee08897fb8d4b59b4609f6e837205e7a089b6fb7.zip |
Reland "Fix miscompile of MS inline assembly with stack realignment"
This re-lands commit r196876, which was reverted in r196879.
The tests have been fixed to pass on platforms with a stack alignment
larger than 4.
Update to clang side tests will land shortly.
llvm-svn: 196939
Diffstat (limited to 'llvm/lib/MC/MCParser/AsmParser.cpp')
-rw-r--r-- | llvm/lib/MC/MCParser/AsmParser.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp index fe3969a0a78..a336cb97c66 100644 --- a/llvm/lib/MC/MCParser/AsmParser.cpp +++ b/llvm/lib/MC/MCParser/AsmParser.cpp @@ -4208,6 +4208,11 @@ bool AsmParser::parseMSInlineAsm( AsmStrRewrites.push_back(AsmRewrite(AOK_Input, Start, SymName.size())); } } + + // Consider implicit defs to be clobbers. Think of cpuid and push. + const uint16_t *ImpDefs = Desc.getImplicitDefs(); + for (unsigned I = 0, E = Desc.getNumImplicitDefs(); I != E; ++I) + ClobberRegs.push_back(ImpDefs[I]); } // Set the number of Outputs and Inputs. |