[llvm] [AArch64] Don't run loop-idiom-vectorize pass in the O0 pipeline (PR #156802)

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 4 20:28:36 PDT 2025


https://github.com/MaskRay updated https://github.com/llvm/llvm-project/pull/156802

>From f6181ec619752de5403176d33ae9159aba649a97 Mon Sep 17 00:00:00 2001
From: Fangrui Song <i at maskray.me>
Date: Wed, 3 Sep 2025 21:49:42 -0700
Subject: [PATCH 1/3] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20in?=
 =?UTF-8?q?itial=20version?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Created using spr 1.3.5-bogner
---
 llvm/lib/Target/AArch64/AArch64TargetMachine.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
index e67bd5869ccd1..4650b2d0c8151 100644
--- a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
+++ b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
@@ -589,7 +589,8 @@ void AArch64TargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
 
   PB.registerLateLoopOptimizationsEPCallback(
       [=](LoopPassManager &LPM, OptimizationLevel Level) {
-        LPM.addPass(LoopIdiomVectorizePass());
+        if (Level != OptimizationLevel::O0)
+          LPM.addPass(LoopIdiomVectorizePass());
       });
   if (getTargetTriple().isOSWindows())
     PB.registerPipelineEarlySimplificationEPCallback(

>From c6e1bc010de0dce77dda2afe47cc4181d2acd960 Mon Sep 17 00:00:00 2001
From: Fangrui Song <i at maskray.me>
Date: Wed, 3 Sep 2025 22:16:48 -0700
Subject: [PATCH 2/3] .

Created using spr 1.3.5-bogner
---
 llvm/lib/Target/AArch64/CMakeLists.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/llvm/lib/Target/AArch64/CMakeLists.txt b/llvm/lib/Target/AArch64/CMakeLists.txt
index 803943fd57c4d..4eb9a6c689efe 100644
--- a/llvm/lib/Target/AArch64/CMakeLists.txt
+++ b/llvm/lib/Target/AArch64/CMakeLists.txt
@@ -107,6 +107,7 @@ add_llvm_target(AArch64CodeGen
   Core
   GlobalISel
   MC
+  Passes
   Scalar
   SelectionDAG
   Support

>From 6a92b3fee7026ece611a2ca3f6184c5da7fba043 Mon Sep 17 00:00:00 2001
From: Fangrui Song <i at maskray.me>
Date: Thu, 4 Sep 2025 20:28:27 -0700
Subject: [PATCH 3/3] add test

Created using spr 1.3.5-bogner
---
 llvm/test/CodeGen/AArch64/print-pipeline-passes.ll | 10 ++++++++++
 1 file changed, 10 insertions(+)
 create mode 100644 llvm/test/CodeGen/AArch64/print-pipeline-passes.ll

diff --git a/llvm/test/CodeGen/AArch64/print-pipeline-passes.ll b/llvm/test/CodeGen/AArch64/print-pipeline-passes.ll
new file mode 100644
index 0000000000000..0e709870d0f4e
--- /dev/null
+++ b/llvm/test/CodeGen/AArch64/print-pipeline-passes.ll
@@ -0,0 +1,10 @@
+; RUN: opt -mtriple=aarch64 -S -passes='default<O0>' -print-pipeline-passes < %s | FileCheck --check-prefix=O0 %s
+; RUN: opt -mtriple=aarch64 -S -passes='default<O2>' -print-pipeline-passes < %s | FileCheck %s
+
+; CHECK: loop-idiom-vectorize
+; O0-NOT: loop-idiom-vectorize
+
+define void @foo() {
+entry:
+  ret void
+}



More information about the llvm-commits mailing list