diff options
author | Sebastian Pop <spop@nvidia.com> | 2025-05-21 08:27:39 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-21 08:27:39 -0500 |
commit | d36028120a6ef6346bfaafe82d4d1a2887cf5e33 (patch) | |
tree | 620f4d522a8fbca7e659c1530ddd4a9f6ea42f8d /flang/lib/Frontend | |
parent | 2cf6099cd5fa9876aa4ac160a8cf88a46c79ee55 (diff) | |
download | llvm-d36028120a6ef6346bfaafe82d4d1a2887cf5e33.zip llvm-d36028120a6ef6346bfaafe82d4d1a2887cf5e33.tar.gz llvm-d36028120a6ef6346bfaafe82d4d1a2887cf5e33.tar.bz2 |
[flang] add -floop-interchange and enable it with opt levels (#140182)
Enable the use of -floop-interchange from the flang driver.
Enable in flang LLVM's loop interchange at levels -O2, -O3, -Ofast, and -Os.
Diffstat (limited to 'flang/lib/Frontend')
-rw-r--r-- | flang/lib/Frontend/CompilerInvocation.cpp | 3 | ||||
-rw-r--r-- | flang/lib/Frontend/FrontendActions.cpp | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerInvocation.cpp index b6c3771..ba25318 100644 --- a/flang/lib/Frontend/CompilerInvocation.cpp +++ b/flang/lib/Frontend/CompilerInvocation.cpp @@ -270,6 +270,9 @@ static void parseCodeGenArgs(Fortran::frontend::CodeGenOptions &opts, clang::driver::options::OPT_fno_stack_arrays, false)) opts.StackArrays = 1; + if (args.getLastArg(clang::driver::options::OPT_floop_interchange)) + opts.InterchangeLoops = 1; + if (args.getLastArg(clang::driver::options::OPT_vectorize_loops)) opts.VectorizeLoop = 1; diff --git a/flang/lib/Frontend/FrontendActions.cpp b/flang/lib/Frontend/FrontendActions.cpp index e5a15c5..38dfaad 100644 --- a/flang/lib/Frontend/FrontendActions.cpp +++ b/flang/lib/Frontend/FrontendActions.cpp @@ -922,6 +922,7 @@ void CodeGenAction::runOptimizationPipeline(llvm::raw_pwrite_stream &os) { if (ci.isTimingEnabled()) si.getTimePasses().setOutStream(ci.getTimingStreamLLVM()); pto.LoopUnrolling = opts.UnrollLoops; + pto.LoopInterchange = opts.InterchangeLoops; pto.LoopInterleaving = opts.UnrollLoops; pto.LoopVectorization = opts.VectorizeLoop; pto.SLPVectorization = opts.VectorizeSLP; |