llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-backend-risc-v Author: Fangrui Song (MaskRay) <details> <summary>Changes</summary> ... instead of silently parsing and ignoring it without leaving an error message. While here, remove an unreachable `@<!-- -->plt`. --- Full diff: https://github.com/llvm/llvm-project/pull/135509.diff 3 Files Affected: - (modified) llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp (+2-4) - (modified) llvm/test/MC/RISCV/function-call-invalid.s (+1) - (modified) llvm/test/MC/RISCV/tail-call-invalid.s (+1) ``````````diff diff --git a/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp b/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp index 952587171ffce..5804706baea9b 100644 --- a/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp +++ b/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp @@ -2070,9 +2070,6 @@ ParseStatus RISCVAsmParser::parseBareSymbol(OperandVector &Operands) { SMLoc E = SMLoc::getFromPointer(S.getPointer() + Identifier.size()); - if (Identifier.consume_back("@plt")) - return Error(getLoc(), "'@plt' operand not valid for instruction"); - MCSymbol *Sym = getContext().getOrCreateSymbol(Identifier); if (Sym->isVariable()) { @@ -2120,8 +2117,9 @@ ParseStatus RISCVAsmParser::parseCallSymbol(OperandVector &Operands) { Lex(); Lex(); StringRef PLT; + SMLoc Loc = getLoc(); if (getParser().parseIdentifier(PLT) || PLT != "plt") - return ParseStatus::Failure; + return Error(Loc, "@ (except the deprecated/ignored @plt) is disallowed"); } else if (!getLexer().peekTok().is(AsmToken::EndOfStatement)) { // Avoid parsing the register in `call rd, foo` as a call symbol. return ParseStatus::NoMatch; diff --git a/llvm/test/MC/RISCV/function-call-invalid.s b/llvm/test/MC/RISCV/function-call-invalid.s index 2b7a85245880d..d429c4e27ba14 100644 --- a/llvm/test/MC/RISCV/function-call-invalid.s +++ b/llvm/test/MC/RISCV/function-call-invalid.s @@ -10,3 +10,4 @@ call %lo(1234) # CHECK: :[[@LINE]]:6: error: operand must be a bare symbol name call %hi(foo) # CHECK: :[[@LINE]]:6: error: operand must be a bare symbol name call %lo(foo) # CHECK: :[[@LINE]]:6: error: operand must be a bare symbol name call foo, bar # CHECK: :[[@LINE]]:6: error: operand must be a bare symbol name +call foo@pls # CHECK: :[[@LINE]]:10: error: @ (except the deprecated/ignored @plt) is disallowed diff --git a/llvm/test/MC/RISCV/tail-call-invalid.s b/llvm/test/MC/RISCV/tail-call-invalid.s index 270d84df58ac4..14ff996b2e4b1 100644 --- a/llvm/test/MC/RISCV/tail-call-invalid.s +++ b/llvm/test/MC/RISCV/tail-call-invalid.s @@ -10,3 +10,4 @@ tail %hi(1234) # CHECK: :[[@LINE]]:6: error: operand must be a bare symbol name tail %lo(1234) # CHECK: :[[@LINE]]:6: error: operand must be a bare symbol name tail %hi(foo) # CHECK: :[[@LINE]]:6: error: operand must be a bare symbol name tail %lo(foo) # CHECK: :[[@LINE]]:6: error: operand must be a bare symbol name +tail foo@pls # CHECK: :[[@LINE]]:10: error: @ (except the deprecated/ignored @plt) is disallowed `````````` </details> https://github.com/llvm/llvm-project/pull/135509 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits