Skip to content

Commit df80f2d

Browse files
sebpopmadhur13490
authored andcommitted
rename -floop-fuse / -fexperimental-fuse-loops
1 parent 3b71a3c commit df80f2d

File tree

10 files changed

+30
-32
lines changed

10 files changed

+30
-32
lines changed

clang/include/clang/Driver/Options.td

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4253,10 +4253,10 @@ def floop_interchange : Flag<["-"], "floop-interchange">, Group<f_Group>,
42534253
HelpText<"Enable the loop interchange pass">, Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>;
42544254
def fno_loop_interchange: Flag<["-"], "fno-loop-interchange">, Group<f_Group>,
42554255
HelpText<"Disable the loop interchange pass">, Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>;
4256-
def floop_fuse : Flag<["-"], "floop-fuse">, Group<f_Group>,
4257-
HelpText<"Enable the loop fuse pass">, Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>;
4258-
def fno_loop_fuse: Flag<["-"], "fno-loop-fuse">, Group<f_Group>,
4259-
HelpText<"Disable the loop fuse pass">, Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>;
4256+
def fexperimental_loop_fuse : Flag<["-"], "fexperimental-loop-fuse">, Group<f_Group>,
4257+
HelpText<"Enable the experimental loop fuse pass">, Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>;
4258+
def fno_experimental_loop_fuse: Flag<["-"], "fno-experimental-loop-fuse">, Group<f_Group>,
4259+
HelpText<"Disable the experimental loop fuse pass">, Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>;
42604260
def funroll_loops : Flag<["-"], "funroll-loops">, Group<f_Group>,
42614261
HelpText<"Turn on loop unroller">, Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>;
42624262
def fno_unroll_loops : Flag<["-"], "fno-unroll-loops">, Group<f_Group>,

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6869,7 +6869,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
68696869
options::OPT_fno_unroll_loops);
68706870
Args.AddLastArg(CmdArgs, options::OPT_floop_interchange,
68716871
options::OPT_fno_loop_interchange);
6872-
Args.AddLastArg(CmdArgs, options::OPT_floop_fuse, options::OPT_fno_loop_fuse);
6872+
Args.AddLastArg(CmdArgs, options::OPT_fexperimental_loop_fuse,
6873+
options::OPT_fno_experimental_loop_fuse);
68736874

68746875
Args.AddLastArg(CmdArgs, options::OPT_fstrict_flex_arrays_EQ);
68756876

clang/lib/Driver/ToolChains/CommonArgs.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3265,7 +3265,7 @@ void tools::handleVectorizeSLPArgs(const ArgList &Args,
32653265

32663266
void tools::handleInterchangeLoopsArgs(const ArgList &Args,
32673267
ArgStringList &CmdArgs) {
3268-
// FIXME: Instead of relying on shouldEnableVectorizerAtOLevel, we may want to
3268+
// FIXME: instead of relying on shouldEnableVectorizerAtOLevel, we may want to
32693269
// implement a separate function to infer loop interchange from opt level.
32703270
// For now, enable loop-interchange at the same opt levels as loop-vectorize.
32713271
bool EnableInterchange = shouldEnableVectorizerAtOLevel(Args, false);

clang/lib/Driver/ToolChains/Flang.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ void Flang::addCodegenOptions(const ArgList &Args,
151151
!stackArrays->getOption().matches(options::OPT_fno_stack_arrays))
152152
CmdArgs.push_back("-fstack-arrays");
153153

154-
Args.AddLastArg(CmdArgs, options::OPT_floop_fuse, options::OPT_fno_loop_fuse);
154+
Args.AddLastArg(CmdArgs, options::OPT_fexperimental_loop_fuse, options::OPT_fno_experimental_loop_fuse);
155155

156156
handleInterchangeLoopsArgs(Args, CmdArgs);
157157
handleVectorizeLoopsArgs(Args, CmdArgs);

clang/lib/Frontend/CompilerInvocation.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1672,9 +1672,9 @@ void CompilerInvocationBase::GenerateCodeGenArgs(const CodeGenOptions &Opts,
16721672
GenerateArg(Consumer, OPT_fno_loop_interchange);
16731673

16741674
if (Opts.FuseLoops)
1675-
GenerateArg(Consumer, OPT_floop_fuse);
1675+
GenerateArg(Consumer, OPT_fexperimental_loop_fuse);
16761676
else
1677-
GenerateArg(Consumer, OPT_fno_loop_fuse);
1677+
GenerateArg(Consumer, OPT_fno_experimental_loop_fuse);
16781678

16791679
if (!Opts.BinutilsVersion.empty())
16801680
GenerateArg(Consumer, OPT_fbinutils_version_EQ, Opts.BinutilsVersion);
@@ -1996,7 +1996,7 @@ bool CompilerInvocation::ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args,
19961996
(Opts.OptimizationLevel > 1));
19971997
Opts.InterchangeLoops =
19981998
Args.hasFlag(OPT_floop_interchange, OPT_fno_loop_interchange, false);
1999-
Opts.FuseLoops = Args.hasFlag(OPT_floop_fuse, OPT_fno_loop_fuse, false);
1999+
Opts.FuseLoops = Args.hasFlag(OPT_fexperimental_loop_fuse, OPT_fno_experimental_loop_fuse, false);
20002000
Opts.BinutilsVersion =
20012001
std::string(Args.getLastArgValue(OPT_fbinutils_version_EQ));
20022002

clang/test/Driver/clang_f_opts.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,12 @@
5252
// CHECK-INTERCHANGE-LOOPS: "-floop-interchange"
5353
// CHECK-NO-INTERCHANGE-LOOPS: "-fno-loop-interchange"
5454

55-
// RUN: %clang -### -S -floop-fuse %s 2>&1 | FileCheck -check-prefix=CHECK-FUSE-LOOPS %s
56-
// RUN: %clang -### -S -fno-loop-fuse %s 2>&1 | FileCheck -check-prefix=CHECK-NO-FUSE-LOOPS %s
57-
// RUN: %clang -### -S -fno-loop-fuse -floop-fuse %s 2>&1 | FileCheck -check-prefix=CHECK-FUSE-LOOPS %s
58-
// RUN: %clang -### -S -floop-fuse -fno-loop-fuse %s 2>&1 | FileCheck -check-prefix=CHECK-NO-FUSE-LOOPS %s
59-
// CHECK-FUSE-LOOPS: "-floop-fuse"
60-
// CHECK-NO-FUSE-LOOPS: "-fno-loop-fuse"
55+
// RUN: %clang -### -S -fexperimental-loop-fuse %s 2>&1 | FileCheck -check-prefix=CHECK-FUSE-LOOPS %s
56+
// RUN: %clang -### -S -fno-experimental-loop-fuse %s 2>&1 | FileCheck -check-prefix=CHECK-NO-FUSE-LOOPS %s
57+
// RUN: %clang -### -S -fno-experimental-loop-fuse -fexperimental-loop-fuse %s 2>&1 | FileCheck -check-prefix=CHECK-FUSE-LOOPS %s
58+
// RUN: %clang -### -S -fexperimental-loop-fuse -fno-experimental-loop-fuse %s 2>&1 | FileCheck -check-prefix=CHECK-NO-FUSE-LOOPS %s
59+
// CHECK-FUSE-LOOPS: "-fexperimental-loop-fuse"
60+
// CHECK-NO-FUSE-LOOPS: "-fno-experimental-loop-fuse"
6161

6262
// RUN: %clang -### -S -fprofile-sample-accurate %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-SAMPLE-ACCURATE %s
6363
// CHECK-PROFILE-SAMPLE-ACCURATE: "-fprofile-sample-accurate"

flang/docs/ReleaseNotes.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@ page](https://llvm.org/releases/).
3333
## New Compiler Flags
3434

3535
* -floop-interchange is now recognized by flang.
36-
* -floop-interchange is enabled by default at -O2 and above.
37-
* -floop-fuse is now recognized by flang.
36+
* -fexperimental-loop-fuse is now recognized by flang.
3837

3938
## Windows Support
4039

flang/lib/Frontend/CompilerInvocation.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ static void parseCodeGenArgs(Fortran::frontend::CodeGenOptions &opts,
275275
if (args.getLastArg(clang::driver::options::OPT_floop_interchange))
276276
opts.InterchangeLoops = 1;
277277

278-
if (args.getLastArg(clang::driver::options::OPT_floop_fuse))
278+
if (args.getLastArg(clang::driver::options::OPT_fexperimental_loop_fuse))
279279
opts.FuseLoops = 1;
280280

281281
if (args.getLastArg(clang::driver::options::OPT_vectorize_loops))

flang/test/Driver/loop-fuse.f90

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
! RUN: %flang -### -S -floop-fuse %s 2>&1 | FileCheck -check-prefix=CHECK-LOOP-FUSE %s
2-
! RUN: %flang -### -S -fno-loop-fuse %s 2>&1 | FileCheck -check-prefix=CHECK-NO-LOOP-FUSE %s
1+
! RUN: %flang -### -S -fexperimental-loop-fuse %s 2>&1 | FileCheck -check-prefix=CHECK-LOOP-FUSE %s
2+
! RUN: %flang -### -S -fno-experimental-loop-fuse %s 2>&1 | FileCheck -check-prefix=CHECK-NO-LOOP-FUSE %s
33
! RUN: %flang -### -S -O0 %s 2>&1 | FileCheck -check-prefix=CHECK-NO-LOOP-FUSE %s
44
! RUN: %flang -### -S -O1 %s 2>&1 | FileCheck -check-prefix=CHECK-NO-LOOP-FUSE %s
55
! RUN: %flang -### -S -O2 %s 2>&1 | FileCheck -check-prefix=CHECK-NO-LOOP-FUSE %s
66
! RUN: %flang -### -S -O3 %s 2>&1 | FileCheck -check-prefix=CHECK-NO-LOOP-FUSE %s
77
! RUN: %flang -### -S -Os %s 2>&1 | FileCheck -check-prefix=CHECK-NO-LOOP-FUSE %s
88
! RUN: %flang -### -S -Oz %s 2>&1 | FileCheck -check-prefix=CHECK-NO-LOOP-FUSE %s
9-
! CHECK-LOOP-FUSE: "-floop-fuse"
10-
! CHECK-NO-LOOP-FUSE-NOT: "-floop-fuse"
11-
! RUN: %flang_fc1 -emit-llvm -O2 -floop-fuse -mllvm -print-pipeline-passes -o /dev/null %s 2>&1 | FileCheck -check-prefix=CHECK-LOOP-FUSE-PASS %s
12-
! RUN: %flang_fc1 -emit-llvm -O2 -fno-loop-fuse -mllvm -print-pipeline-passes -o /dev/null %s 2>&1 | FileCheck -check-prefix=CHECK-NO-LOOP-FUSE-PASS %s
9+
! CHECK-LOOP-FUSE: "-fexperimental-loop-fuse"
10+
! CHECK-NO-LOOP-FUSE-NOT: "-fexperimental-loop-fuse"
11+
! RUN: %flang_fc1 -emit-llvm -O2 -fexperimental-loop-fuse -mllvm -print-pipeline-passes -o /dev/null %s 2>&1 | FileCheck -check-prefix=CHECK-LOOP-FUSE-PASS %s
12+
! RUN: %flang_fc1 -emit-llvm -O2 -fno-experimental-loop-fuse -mllvm -print-pipeline-passes -o /dev/null %s 2>&1 | FileCheck -check-prefix=CHECK-NO-LOOP-FUSE-PASS %s
1313
! CHECK-LOOP-FUSE-PASS: loop-fusion
1414
! CHECK-NO-LOOP-FUSE-PASS-NOT: loop-fusion
1515

llvm/lib/Passes/PassBuilderPipelines.cpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -520,9 +520,6 @@ PassBuilder::buildO1FunctionSimplificationPipeline(OptimizationLevel Level,
520520

521521
invokeLoopOptimizerEndEPCallbacks(LPM2, Level);
522522

523-
if (PTO.LoopFuse)
524-
FPM.addPass(LoopFusePass());
525-
526523
FPM.addPass(createFunctionToLoopPassAdaptor(std::move(LPM1),
527524
/*UseMemorySSA=*/true,
528525
/*UseBlockFrequencyInfo=*/true));
@@ -647,6 +644,9 @@ PassBuilder::buildFunctionSimplificationPipeline(OptimizationLevel Level,
647644
if (EnableConstraintElimination)
648645
FPM.addPass(ConstraintEliminationPass());
649646

647+
if (PTO.LoopFuse)
648+
FPM.addPass(LoopFusePass());
649+
650650
// Add the primary loop simplification pipeline.
651651
// FIXME: Currently this is split into two loop pass pipelines because we run
652652
// some function passes in between them. These can and should be removed
@@ -712,9 +712,6 @@ PassBuilder::buildFunctionSimplificationPipeline(OptimizationLevel Level,
712712

713713
invokeLoopOptimizerEndEPCallbacks(LPM2, Level);
714714

715-
if (PTO.LoopFuse)
716-
FPM.addPass(LoopFusePass());
717-
718715
FPM.addPass(createFunctionToLoopPassAdaptor(std::move(LPM1),
719716
/*UseMemorySSA=*/true,
720717
/*UseBlockFrequencyInfo=*/true));
@@ -2127,6 +2124,7 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
21272124
LPM.addPass(LoopFlattenPass());
21282125
LPM.addPass(IndVarSimplifyPass());
21292126
LPM.addPass(LoopDeletionPass());
2127+
// FIXME: Add loop interchange.
21302128

21312129
// Unroll small loops and perform peeling.
21322130
LPM.addPass(LoopFullUnrollPass(Level.getSpeedupLevel(),
@@ -2366,4 +2364,4 @@ AAManager PassBuilder::buildDefaultAAPipeline() {
23662364
bool PassBuilder::isInstrumentedPGOUse() const {
23672365
return (PGOOpt && PGOOpt->Action == PGOOptions::IRUse) ||
23682366
!UseCtxProfile.empty();
2369-
}
2367+
}

0 commit comments

Comments
 (0)