summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
index 08b2ea3a424..d78283f53bc 100644
--- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
+++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
@@ -1007,7 +1007,7 @@ std::unique_ptr<X86Operand> X86AsmParser::DefaultMemDIOperand(SMLoc Loc) {
bool X86AsmParser::IsSIReg(unsigned Reg) {
switch (Reg) {
default:
- assert("Only (R|E)SI and (R|E)DI are expected!");
+ llvm_unreachable("Only (R|E)SI and (R|E)DI are expected!");
return false;
case X86::RSI:
case X86::ESI:
@@ -1024,7 +1024,7 @@ unsigned X86AsmParser::GetSIDIForRegClass(unsigned RegClassID, unsigned Reg,
bool IsSIReg) {
switch (RegClassID) {
default:
- assert("Unexpected register class");
+ llvm_unreachable("Unexpected register class");
return Reg;
case X86::GR64RegClassID:
return IsSIReg ? X86::RSI : X86::RDI;
@@ -1090,6 +1090,10 @@ bool X86AsmParser::VerifyAndAdjustOperands(OperandVector &OrigOperands,
RegClassID = X86::GR32RegClassID;
else if (X86MCRegisterClasses[X86::GR16RegClassID].contains(OrigReg))
RegClassID = X86::GR16RegClassID;
+ else
+ // Unexpexted register class type
+ // Return false and let a normal complaint about bogus operands happen
+ return false;
bool IsSI = IsSIReg(FinalReg);
FinalReg = GetSIDIForRegClass(RegClassID, FinalReg, IsSI);
OpenPOWER on IntegriCloud