diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp index 2c53eade6cd59..b12437b2afed6 100644 --- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp @@ -453,8 +453,6 @@ static void EmitGCCInlineAsmStr(const char *AsmStr, const MachineInstr *MI, } else if (MI->getOperand(OpNo).isMBB()) { const MCSymbol *Sym = MI->getOperand(OpNo).getMBB()->getSymbol(); Sym->print(OS, AP->MAI); - } else if (Modifier[0] == 'l') { - Error = true; } else if (InlineAsm::isMemKind(OpFlags)) { Error = AP->PrintAsmMemoryOperand( MI, OpNo, Modifier[0] ? Modifier : nullptr, OS); diff --git a/llvm/lib/Target/AVR/AVRAsmPrinter.cpp b/llvm/lib/Target/AVR/AVRAsmPrinter.cpp index 73f0a0961d6bd..259ab1bc7aec7 100644 --- a/llvm/lib/Target/AVR/AVRAsmPrinter.cpp +++ b/llvm/lib/Target/AVR/AVRAsmPrinter.cpp @@ -144,9 +144,8 @@ bool AVRAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNum, bool AVRAsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNum, const char *ExtraCode, raw_ostream &O) { - if (ExtraCode && ExtraCode[0]) { - llvm_unreachable("This branch is not implemented yet"); - } + if (ExtraCode && ExtraCode[0]) + return true; // Unknown modifier const MachineOperand &MO = MI->getOperand(OpNum); (void)MO; diff --git a/llvm/test/CodeGen/AVR/inline-asm/inline-asm-invalid.ll b/llvm/test/CodeGen/AVR/inline-asm/inline-asm-invalid.ll new file mode 100644 index 0000000000000..81b0f6e9b2832 --- /dev/null +++ b/llvm/test/CodeGen/AVR/inline-asm/inline-asm-invalid.ll @@ -0,0 +1,10 @@ +; RUN: not llc < %s -march=avr -no-integrated-as 2>&1 | FileCheck %s + +define void @foo(i16 %a) { + ; CHECK: error: invalid operand in inline asm: 'jl ${0:l}' + %i.addr = alloca i32, align 4 + call void asm sideeffect "jl ${0:l}", "*m"(i32* %i.addr) + + ret void +} +