[llvm] [AsmParser] Replace starIsStartOfStatement with tokenIsStartOfStatement. (PR #137997)
Jason Eckhardt via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 30 10:10:03 PDT 2025
https://github.com/nvjle created https://github.com/llvm/llvm-project/pull/137997
Currently `MCTargetAsmParser::starIsStartOfStatement` checks for `*` at the start of the statement. There are other (currently) downstream back-ends that need the same treatment for other tokens. Instead of introducing bespoke APIs for each such token, we generalize (and rename) starIsStartOfStatement as tokenIsStartOfStatement which takes the token of interest as an argument.
Update the BPF AsmParser (the only upstream consumer today) to use the new version.
>From 522417bfd6ede74dd19cce4509de2efb5cf6c971 Mon Sep 17 00:00:00 2001
From: Jason Eckhardt <jeckhardt at nvidia.com>
Date: Wed, 30 Apr 2025 11:57:26 -0500
Subject: [PATCH] [AsmParser] Replace starIsStartOfStatement with
tokenIsStartOfStatement.
Currently `MCTargetAsmParser::starIsStartOfStatement` checks for `*`
at the start of the statement. There are other (currently) downstream
back-ends that need the same treatment for other tokens. Instead of
introducing bespoke APIs for each such token, we generalize (and rename)
starIsStartOfStatement as tokenIsStartOfStatement which takes the token
of interest as an argument.
Update the BPF AsmParser (the only upstream consumer today) to use the
new version.
---
llvm/include/llvm/MC/MCParser/MCTargetAsmParser.h | 6 ++++--
llvm/lib/MC/MCParser/AsmParser.cpp | 6 ++----
llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp | 4 +++-
3 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/llvm/include/llvm/MC/MCParser/MCTargetAsmParser.h b/llvm/include/llvm/MC/MCParser/MCTargetAsmParser.h
index c7f098be70945..c94ae9442f028 100644
--- a/llvm/include/llvm/MC/MCParser/MCTargetAsmParser.h
+++ b/llvm/include/llvm/MC/MCParser/MCTargetAsmParser.h
@@ -508,8 +508,10 @@ class MCTargetAsmParser : public MCAsmParserExtension {
virtual bool equalIsAsmAssignment() { return true; };
// Return whether this start of statement identifier is a label
virtual bool isLabel(AsmToken &Token) { return true; };
- // Return whether this parser accept star as start of statement
- virtual bool starIsStartOfStatement() { return false; };
+ // Return whether this parser accepts the given token as start of statement.
+ virtual bool tokenIsStartOfStatement(AsmToken::TokenKind Token) {
+ return false;
+ }
virtual const MCExpr *applySpecifier(const MCExpr *E, uint32_t,
MCContext &Ctx) {
diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp
index aee1259eeb126..f27a27833858a 100644
--- a/llvm/lib/MC/MCParser/AsmParser.cpp
+++ b/llvm/lib/MC/MCParser/AsmParser.cpp
@@ -1769,11 +1769,9 @@ bool AsmParser::parseStatement(ParseStatementInfo &Info,
// Treat '}' as a valid identifier in this context.
Lex();
IDVal = "}";
- } else if (Lexer.is(AsmToken::Star) &&
- getTargetParser().starIsStartOfStatement()) {
- // Accept '*' as a valid start of statement.
+ } else if (getTargetParser().tokenIsStartOfStatement(ID.getKind())) {
Lex();
- IDVal = "*";
+ IDVal = ID.getString();
} else if (parseIdentifier(IDVal)) {
if (!TheCondState.Ignore) {
Lex(); // always eat a token
diff --git a/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp b/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp
index 494445fa89b5e..2e4819e5ede38 100644
--- a/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp
+++ b/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp
@@ -49,7 +49,9 @@ class BPFAsmParser : public MCTargetAsmParser {
bool equalIsAsmAssignment() override { return false; }
// "*" is used for dereferencing memory that it will be the start of
// statement.
- bool starIsStartOfStatement() override { return true; }
+ bool tokenIsStartOfStatement(AsmToken::TokenKind Token) override {
+ return Token == AsmToken::Star;
+ }
#define GET_ASSEMBLER_HEADER
#include "BPFGenAsmMatcher.inc"
More information about the llvm-commits
mailing list