[llvm] [AsmParser][MCA] Fix handling of multi-character comments (PR #147228)
Alexander Shaposhnikov via llvm-commits
llvm-commits at lists.llvm.org
Sun Jul 6 23:34:18 PDT 2025
https://github.com/alexander-shaposhnikov updated https://github.com/llvm/llvm-project/pull/147228
>From 9f23068edb564d144a4452ffec3f130bd37cb0f2 Mon Sep 17 00:00:00 2001
From: Alexander Shaposhnikov <ashaposhnikov at google.com>
Date: Mon, 7 Jul 2025 01:21:24 +0000
Subject: [PATCH] [AsmParser][MCA] Fix handling of multicharacter comments
---
llvm/lib/MC/MCParser/AsmLexer.cpp | 4 ++-
.../preserve-comments-aarch64-linux.s | 11 ++++++
.../AArch64/Neoverse/llvm-mca-markers.s | 36 +++++++++++++++++++
3 files changed, 50 insertions(+), 1 deletion(-)
create mode 100644 llvm/test/MC/AsmParser/preserve-comments-aarch64-linux.s
create mode 100644 llvm/test/tools/llvm-mca/AArch64/Neoverse/llvm-mca-markers.s
diff --git a/llvm/lib/MC/MCParser/AsmLexer.cpp b/llvm/lib/MC/MCParser/AsmLexer.cpp
index 3db9ed3199dd8..968ccf776440b 100644
--- a/llvm/lib/MC/MCParser/AsmLexer.cpp
+++ b/llvm/lib/MC/MCParser/AsmLexer.cpp
@@ -834,8 +834,10 @@ AsmToken AsmLexer::LexToken() {
return LexLineComment();
}
- if (isAtStartOfComment(TokStart))
+ if (isAtStartOfComment(TokStart)) {
+ CurPtr += MAI.getCommentString().size() - 1;
return LexLineComment();
+ }
if (isAtStatementSeparator(TokStart)) {
CurPtr += strlen(MAI.getSeparatorString()) - 1;
diff --git a/llvm/test/MC/AsmParser/preserve-comments-aarch64-linux.s b/llvm/test/MC/AsmParser/preserve-comments-aarch64-linux.s
new file mode 100644
index 0000000000000..7efb821a0c6e6
--- /dev/null
+++ b/llvm/test/MC/AsmParser/preserve-comments-aarch64-linux.s
@@ -0,0 +1,11 @@
+// REQUIRES: aarch64-registered-target
+// The format of this file (i.e. tabs) matches the output of `llvm-mc`.
+// RUN: llvm-mc -preserve-comments -n -triple aarch64-unknown-linux-gnu %s -o %t
+// RUN: diff -b %s %t
+
+.text
+
+foo:
+// comment here
+nop
+// comment here too
diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/llvm-mca-markers.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/llvm-mca-markers.s
new file mode 100644
index 0000000000000..d5a291b1d7102
--- /dev/null
+++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/llvm-mca-markers.s
@@ -0,0 +1,36 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+// RUN: llvm-mca -mtriple=aarch64-unknown-linux-gnu -mcpu=neoverse-v2 -iterations=1 -resource-pressure=false < %s | FileCheck %s
+
+.text
+// LLVM-MCA-BEGIN Empty
+// Empty sequence
+// LLVM-MCA-END
+
+ mul x1, x1, x1
+// LLVM-MCA-BEGIN NotEmpty
+ add x0, x0, x1
+// LLVM-MCA-END
+ mul x2, x2, x2
+
+# CHECK: [0] Code Region - NotEmpty
+
+# CHECK: Iterations: 1
+# CHECK-NEXT: Instructions: 1
+# CHECK-NEXT: Total Cycles: 4
+# CHECK-NEXT: Total uOps: 1
+
+# CHECK: Dispatch Width: 6
+# CHECK-NEXT: uOps Per Cycle: 0.25
+# CHECK-NEXT: IPC: 0.25
+# CHECK-NEXT: Block RThroughput: 0.2
+
+# CHECK: Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
+# CHECK-NEXT: 1 1 0.17 add x0, x0, x1
More information about the llvm-commits
mailing list