summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2018-04-18 05:15:24 +0000
committerCraig Topper <craig.topper@intel.com>2018-04-18 05:15:24 +0000
commit8704612481d20934081ae8fc8be0c39b9bad89e7 (patch)
tree9c32032daee2fa43974d1560e4b88077fe4bd8e0 /llvm/lib/Target
parentaea15131dbaeae56ab2b084a25f4e184dcfeede3 (diff)
downloadbcm5719-llvm-8704612481d20934081ae8fc8be0c39b9bad89e7.tar.gz
bcm5719-llvm-8704612481d20934081ae8fc8be0c39b9bad89e7.zip
[X86] Don't crash on bad operand modifiers in inline assembly
Summary: Previously if a modifer was placed on a non-GPR register class we would hit an assert or crash. Reviewers: echristo Reviewed By: echristo Subscribers: eraman, llvm-commits Differential Revision: https://reviews.llvm.org/D45751 llvm-svn: 330238
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/X86/X86AsmPrinter.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86AsmPrinter.cpp b/llvm/lib/Target/X86/X86AsmPrinter.cpp
index c9be0b98cab..be361d5f93b 100644
--- a/llvm/lib/Target/X86/X86AsmPrinter.cpp
+++ b/llvm/lib/Target/X86/X86AsmPrinter.cpp
@@ -372,6 +372,12 @@ static bool printAsmMRegister(X86AsmPrinter &P, const MachineOperand &MO,
unsigned Reg = MO.getReg();
bool EmitPercent = true;
+ if (!X86::GR8RegClass.contains(Reg) &&
+ !X86::GR16RegClass.contains(Reg) &&
+ !X86::GR32RegClass.contains(Reg) &&
+ !X86::GR64RegClass.contains(Reg))
+ return true;
+
switch (Mode) {
default: return true; // Unknown mode.
case 'b': // Print QImode register
OpenPOWER on IntegriCloud