[flang-commits] [clang] [flang] [flang] Disable loop interchange by default (PR #155279)
Nikita Popov via flang-commits
flang-commits at lists.llvm.org
Mon Aug 25 12:26:01 PDT 2025
https://github.com/nikic created https://github.com/llvm/llvm-project/pull/155279
Disable loop interchange by default, while keeping the ability to explicitly enable using `-floop-interchange`. This matches Clang.
See discussion on https://github.com/llvm/llvm-project/pull/140182.
>From 940063e33d4a62920d02bfd138b8a9968e038aec Mon Sep 17 00:00:00 2001
From: Nikita Popov <nikita.ppv at gmail.com>
Date: Mon, 25 Aug 2025 21:24:41 +0200
Subject: [PATCH] [flang] Disable loop interchange by default
---
clang/lib/Driver/ToolChains/CommonArgs.cpp | 10 ++--------
flang/test/Driver/loop-interchange.f90 | 6 +++---
2 files changed, 5 insertions(+), 11 deletions(-)
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index 055906a8d721d..299422328aecf 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -3331,14 +3331,8 @@ void tools::handleVectorizeSLPArgs(const ArgList &Args,
void tools::handleInterchangeLoopsArgs(const ArgList &Args,
ArgStringList &CmdArgs) {
- // FIXME: instead of relying on shouldEnableVectorizerAtOLevel, we may want to
- // implement a separate function to infer loop interchange from opt level.
- // For now, enable loop-interchange at the same opt levels as loop-vectorize.
- bool EnableInterchange = shouldEnableVectorizerAtOLevel(Args, false);
- OptSpecifier InterchangeAliasOption =
- EnableInterchange ? options::OPT_O_Group : options::OPT_floop_interchange;
- if (Args.hasFlag(options::OPT_floop_interchange, InterchangeAliasOption,
- options::OPT_fno_loop_interchange, EnableInterchange))
+ if (Args.hasFlag(options::OPT_floop_interchange,
+ options::OPT_fno_loop_interchange, false))
CmdArgs.push_back("-floop-interchange");
}
diff --git a/flang/test/Driver/loop-interchange.f90 b/flang/test/Driver/loop-interchange.f90
index 5d3ec71c59874..1e5a11902709c 100644
--- a/flang/test/Driver/loop-interchange.f90
+++ b/flang/test/Driver/loop-interchange.f90
@@ -2,9 +2,9 @@
! RUN: %flang -### -S -fno-loop-interchange %s 2>&1 | FileCheck -check-prefix=CHECK-NO-LOOP-INTERCHANGE %s
! RUN: %flang -### -S -O0 %s 2>&1 | FileCheck -check-prefix=CHECK-NO-LOOP-INTERCHANGE %s
! RUN: %flang -### -S -O1 %s 2>&1 | FileCheck -check-prefix=CHECK-NO-LOOP-INTERCHANGE %s
-! RUN: %flang -### -S -O2 %s 2>&1 | FileCheck -check-prefix=CHECK-LOOP-INTERCHANGE %s
-! RUN: %flang -### -S -O3 %s 2>&1 | FileCheck -check-prefix=CHECK-LOOP-INTERCHANGE %s
-! RUN: %flang -### -S -Os %s 2>&1 | FileCheck -check-prefix=CHECK-LOOP-INTERCHANGE %s
+! RUN: %flang -### -S -O2 %s 2>&1 | FileCheck -check-prefix=CHECK-NO-LOOP-INTERCHANGE %s
+! RUN: %flang -### -S -O3 %s 2>&1 | FileCheck -check-prefix=CHECK-NO-LOOP-INTERCHANGE %s
+! RUN: %flang -### -S -Os %s 2>&1 | FileCheck -check-prefix=CHECK-NO-LOOP-INTERCHANGE %s
! RUN: %flang -### -S -Oz %s 2>&1 | FileCheck -check-prefix=CHECK-NO-LOOP-INTERCHANGE %s
! CHECK-LOOP-INTERCHANGE: "-floop-interchange"
! CHECK-NO-LOOP-INTERCHANGE-NOT: "-floop-interchange"
More information about the flang-commits
mailing list