aboutsummaryrefslogtreecommitdiff
path: root/flang/lib/Frontend
diff options
context:
space:
mode:
authorDavid Truby <david.truby@arm.com>2025-01-16 06:43:32 +0000
committerGitHub <noreply@github.com>2025-01-16 06:43:32 +0000
commit0195ec452e16a0ff4b4f4ff2e2ea5a1dd5a20563 (patch)
treefad6be286d32be76d5743a2876437d0363773edc /flang/lib/Frontend
parent1797fb6b233c548817008b9c39c6af06d12cae99 (diff)
downloadllvm-0195ec452e16a0ff4b4f4ff2e2ea5a1dd5a20563.zip
llvm-0195ec452e16a0ff4b4f4ff2e2ea5a1dd5a20563.tar.gz
llvm-0195ec452e16a0ff4b4f4ff2e2ea5a1dd5a20563.tar.bz2
[flang] Add -f[no-]unroll-loops flag (#122906)
Diffstat (limited to 'flang/lib/Frontend')
-rw-r--r--flang/lib/Frontend/CompilerInvocation.cpp4
-rw-r--r--flang/lib/Frontend/FrontendActions.cpp2
2 files changed, 6 insertions, 0 deletions
diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerInvocation.cpp
index 5e71273..15b1e1e 100644
--- a/flang/lib/Frontend/CompilerInvocation.cpp
+++ b/flang/lib/Frontend/CompilerInvocation.cpp
@@ -246,6 +246,10 @@ static void parseCodeGenArgs(Fortran::frontend::CodeGenOptions &opts,
clang::driver::options::OPT_fno_loop_versioning, false))
opts.LoopVersioning = 1;
+ opts.UnrollLoops = args.hasFlag(clang::driver::options::OPT_funroll_loops,
+ clang::driver::options::OPT_fno_unroll_loops,
+ (opts.OptimizationLevel > 1));
+
opts.AliasAnalysis = opts.OptimizationLevel > 0;
// -mframe-pointer=none/non-leaf/all option.
diff --git a/flang/lib/Frontend/FrontendActions.cpp b/flang/lib/Frontend/FrontendActions.cpp
index 52a18d5..b0545a7 100644
--- a/flang/lib/Frontend/FrontendActions.cpp
+++ b/flang/lib/Frontend/FrontendActions.cpp
@@ -1028,6 +1028,8 @@ void CodeGenAction::runOptimizationPipeline(llvm::raw_pwrite_stream &os) {
si.registerCallbacks(pic, &mam);
if (ci.isTimingEnabled())
si.getTimePasses().setOutStream(ci.getTimingStreamLLVM());
+ pto.LoopUnrolling = opts.UnrollLoops;
+ pto.LoopInterleaving = opts.UnrollLoops;
llvm::PassBuilder pb(targetMachine, pto, pgoOpt, &pic);
// Attempt to load pass plugins and register their callbacks with PB.