[flang-commits] [clang] [flang] [llvm] [Flang][LoopUnroll][Transforms] Add LoopUnrollForVectorization pass (PR #202444)
Jason Van Beusekom via flang-commits
flang-commits at lists.llvm.org
Tue Jun 16 08:19:33 PDT 2026
================
@@ -1247,6 +1241,32 @@ void Flang::ConstructJob(Compilation &C, const JobAction &JA,
assert(FPKeepKindStr && "unknown FramePointerKind");
CmdArgs.push_back(FPKeepKindStr);
+ bool IsO3OrHigher = false;
+ if (const Arg *A = Args.getLastArg(options::OPT_O_Group)) {
+ if (A->getOption().matches(options::OPT_O4)) {
+ CmdArgs.push_back("-O3");
+ D.Diag(diag::warn_O4_is_O3);
+ IsO3OrHigher = true;
+ } else if (A->getOption().matches(options::OPT_Ofast)) {
+ CmdArgs.push_back("-O3");
+ D.Diag(diag::warn_drv_deprecated_arg_ofast_for_flang);
+ IsO3OrHigher = true;
+ } else if (A->getOption().matches(options::OPT_O)) {
+ StringRef S(A->getValue());
+ unsigned OptLevel = 0;
+ if (!S.getAsInteger(10, OptLevel) && OptLevel >= 3)
+ IsO3OrHigher = true;
+ A->render(Args, CmdArgs);
+ } else {
+ A->render(Args, CmdArgs);
+ }
+ }
+
+ if (IsO3OrHigher) {
+ CmdArgs.push_back("-mllvm");
+ CmdArgs.push_back("-enable-outer-loop-vectorization-prep");
----------------
Jason-Van-Beusekom wrote:
I wanted to keep this change's effects to be limited, I could enable it for clang / generally, but I wanted to limit the scope of this change. thus I made these changes opt in and only turned them on for flang.
https://github.com/llvm/llvm-project/pull/202444
More information about the flang-commits
mailing list