summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCParser/AsmParser.cpp
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2013-12-10 18:27:32 +0000
committerReid Kleckner <reid@kleckner.net>2013-12-10 18:27:32 +0000
commitee08897fb8d4b59b4609f6e837205e7a089b6fb7 (patch)
treec2b3f4fa2494bc1195edbd74c4e162e882c73c82 /llvm/lib/MC/MCParser/AsmParser.cpp
parent6f2f39006ba5b95e6314f83c0a8cd670152892d3 (diff)
downloadbcm5719-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.cpp5
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.
OpenPOWER on IntegriCloud