[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 19:18:50 PDT 2025


https://github.com/alexander-shaposhnikov updated https://github.com/llvm/llvm-project/pull/147228

>From 9495a460744ed21747cbc306983234f19b23205c 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..7068d63e20ebd
--- /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 > %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