[llvm] 3e93d9a - Revert -mcpu fix (#174093)

via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 31 07:35:00 PST 2025


Author: Amina Chabane
Date: 2025-12-31T15:34:55Z
New Revision: 3e93d9aeed17636e1b074e70419dc6f6fa819222

URL: https://github.com/llvm/llvm-project/commit/3e93d9aeed17636e1b074e70419dc6f6fa819222
DIFF: https://github.com/llvm/llvm-project/commit/3e93d9aeed17636e1b074e70419dc6f6fa819222.diff

LOG: Revert -mcpu fix (#174093)

Reverts #173399 and #174004.

#173399 moved MemoryBuffer::getFileOrSTDIN below the -mcpu validation to
fix the `-mcpu=help` flag , but on cross builds the first CPU is
rejected before the “file not found” diagnostic is printed. This failed
lit tests. #174004 introduced a host CPU fallback to fix the cross
compilation issue, but this still fails on NVPTX builders.

This can be revisited when a fix is found that works with the NVPTX
builders.

Added: 
    

Modified: 
    llvm/tools/llvm-mca/llvm-mca.cpp

Removed: 
    llvm/test/tools/llvm-mca/AArch64/mcpu-help.test


################################################################################
diff  --git a/llvm/test/tools/llvm-mca/AArch64/mcpu-help.test b/llvm/test/tools/llvm-mca/AArch64/mcpu-help.test
deleted file mode 100644
index 55168b4080c0c..0000000000000
--- a/llvm/test/tools/llvm-mca/AArch64/mcpu-help.test
+++ /dev/null
@@ -1,11 +0,0 @@
-# REQUIRES: aarch64-registered-target
-
-# RUN: llvm-mca -mtriple=aarch64-unknown-linux-gnu -mcpu=help %t.no-input 2>&1 | FileCheck %s
-
-// Ensures -mcpu=help still prints the CPU/features lists even when the input file after the flag is nonexistent.
-
-# CHECK: Available CPUs for this target:
-# CHECK: a64fx           - Select the a64fx processor.
-# CHECK: ampere1         - Select the ampere1 processor.
-# CHECK: Available features for this target:
-# CHECK-NOT: error:

diff  --git a/llvm/tools/llvm-mca/llvm-mca.cpp b/llvm/tools/llvm-mca/llvm-mca.cpp
index 45fa4973d4399..a64539c09b81e 100644
--- a/llvm/tools/llvm-mca/llvm-mca.cpp
+++ b/llvm/tools/llvm-mca/llvm-mca.cpp
@@ -392,6 +392,16 @@ int main(int argc, char **argv) {
   if (!TheTarget)
     return 1;
 
+  ErrorOr<std::unique_ptr<MemoryBuffer>> BufferPtr =
+      MemoryBuffer::getFileOrSTDIN(InputFilename);
+  if (std::error_code EC = BufferPtr.getError()) {
+    WithColor::error() << InputFilename << ": " << EC.message() << '\n';
+    return 1;
+  }
+
+  if (MCPU == "native")
+    MCPU = std::string(llvm::sys::getHostCPUName());
+
   // Package up features to be passed to target/subtarget
   std::string FeaturesStr;
   if (MATTRS.size()) {
@@ -401,57 +411,16 @@ int main(int argc, char **argv) {
     FeaturesStr = Features.getString();
   }
 
-  auto CreateSubtargetInfo = [&](StringRef CPU) {
-    return std::unique_ptr<MCSubtargetInfo>(
-        TheTarget->createMCSubtargetInfo(TheTriple, CPU, FeaturesStr));
-  };
-
-  std::unique_ptr<MCSubtargetInfo> STI;
-  if (MCPU == "native") {
-    std::string HostCPU = std::string(llvm::sys::getHostCPUName());
-    STI = CreateSubtargetInfo("");
-    if (!STI) {
-      WithColor::error() << "unable to create subtarget info\n";
-      return 1;
-    }
-    if (!HostCPU.empty() && STI->isCPUStringValid(HostCPU)) {
-      // Only utilise the detected host CPU when it exists in the processor
-      // table for the requested triple.
-      STI = CreateSubtargetInfo(HostCPU);
-      if (!STI) {
-        WithColor::error() << "unable to create subtarget info\n";
-        return 1;
-      }
-      MCPU = HostCPU;
-    } else {
-      MCPU.clear();
-    }
-  } else {
-    STI = CreateSubtargetInfo(MCPU);
-    if (!STI) {
-      WithColor::error() << "unable to create subtarget info\n";
-      return 1;
-    }
+  std::unique_ptr<MCSubtargetInfo> STI(
+      TheTarget->createMCSubtargetInfo(TheTriple, MCPU, FeaturesStr));
+  if (!STI) {
+    WithColor::error() << "unable to create subtarget info\n";
+    return 1;
   }
 
-  if (MCPU.empty())
-    // MCPU being empty here means the target default was selected above,
-    // which avoids forwarding incompatible host CPUs when cross-compiling.
-    MCPU = std::string(STI->getCPU());
-
-  if (MCPU == "help")
-    return 0;
-
   if (!STI->isCPUStringValid(MCPU))
     return 1;
 
-  ErrorOr<std::unique_ptr<MemoryBuffer>> BufferPtr =
-      MemoryBuffer::getFileOrSTDIN(InputFilename);
-  if (std::error_code EC = BufferPtr.getError()) {
-    WithColor::error() << InputFilename << ": " << EC.message() << '\n';
-    return 1;
-  }
-
   if (!STI->getSchedModel().hasInstrSchedModel()) {
     WithColor::error()
         << "unable to find instruction-level scheduling information for"


        


More information about the llvm-commits mailing list