diff options
| author | Craig Topper <craig.topper@intel.com> | 2018-04-18 05:15:24 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2018-04-18 05:15:24 +0000 |
| commit | 8704612481d20934081ae8fc8be0c39b9bad89e7 (patch) | |
| tree | 9c32032daee2fa43974d1560e4b88077fe4bd8e0 /llvm/lib/Target | |
| parent | aea15131dbaeae56ab2b084a25f4e184dcfeede3 (diff) | |
| download | bcm5719-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.cpp | 6 |
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 |

