Skip to content

Conversation

vzakhari
Copy link
Contributor

@vzakhari vzakhari commented Sep 4, 2025

Move AddAliasTags after BoxedProcedurePass to be able to compute
the size of Fortran variables by converting their types to LLVM
types and applying DL size/alignment computations.
This is one of the approaches to unblock #156558.

This change does not affect performance in my testing.

Move AddAliasTags after BoxedProcedurePass to be able to compute
the size of Fortran variables by converting their types to LLVM
types and applying DL size/alignment computations.
This is one of the approaches to unblock llvm#156558.

This change does not affect performance in my testing.
@vzakhari vzakhari requested review from tblah and jeanPerier September 4, 2025 00:17
@llvmbot llvmbot added flang:driver flang Flang issues not falling into any other category flang:fir-hlfir labels Sep 4, 2025
@llvmbot
Copy link
Member

llvmbot commented Sep 4, 2025

@llvm/pr-subscribers-flang-driver

@llvm/pr-subscribers-flang-fir-hlfir

Author: Slava Zakharin (vzakhari)

Changes

Move AddAliasTags after BoxedProcedurePass to be able to compute
the size of Fortran variables by converting their types to LLVM
types and applying DL size/alignment computations.
This is one of the approaches to unblock #156558.

This change does not affect performance in my testing.


Full diff: https://github.com/llvm/llvm-project/pull/156780.diff

3 Files Affected:

  • (modified) flang/lib/Optimizer/Passes/Pipelines.cpp (+3-3)
  • (modified) flang/test/Driver/mlir-pass-pipeline.f90 (+1-1)
  • (modified) flang/test/Fir/basic-program.fir (+1-1)
diff --git a/flang/lib/Optimizer/Passes/Pipelines.cpp b/flang/lib/Optimizer/Passes/Pipelines.cpp
index 6cc3290ff5cc2..7c2777baebef1 100644
--- a/flang/lib/Optimizer/Passes/Pipelines.cpp
+++ b/flang/lib/Optimizer/Passes/Pipelines.cpp
@@ -217,9 +217,6 @@ void createDefaultFIROptimizerPassPipeline(mlir::PassManager &pm,
   pm.addPass(fir::createSimplifyFIROperations(
       {/*preferInlineImplementation=*/pc.OptLevel.isOptimizingForSpeed()}));
 
-  if (pc.AliasAnalysis && !disableFirAliasTags && !useOldAliasTags)
-    pm.addPass(fir::createAddAliasTags());
-
   addNestedPassToAllTopLevelOperations<PassConstructor>(
       pm, fir::createStackReclaim);
   // convert control flow to CFG form
@@ -345,6 +342,9 @@ void createDefaultFIRCodeGenPassPipeline(mlir::PassManager &pm,
                                          MLIRToLLVMPassPipelineConfig config,
                                          llvm::StringRef inputFilename) {
   fir::addBoxedProcedurePass(pm);
+  if (config.OptLevel.isOptimizingForSpeed() && config.AliasAnalysis &&
+      !disableFirAliasTags && !useOldAliasTags)
+    pm.addPass(fir::createAddAliasTags());
   addNestedPassToAllTopLevelOperations<PassConstructor>(
       pm, fir::createAbstractResultOpt);
   addPassToGPUModuleOperations<PassConstructor>(pm,
diff --git a/flang/test/Driver/mlir-pass-pipeline.f90 b/flang/test/Driver/mlir-pass-pipeline.f90
index 0bcd055a84b87..e85a7728fc9af 100644
--- a/flang/test/Driver/mlir-pass-pipeline.f90
+++ b/flang/test/Driver/mlir-pass-pipeline.f90
@@ -109,7 +109,6 @@
 ! O2-NEXT:    OptimizeArrayRepacking
 ! ALL-NEXT: LowerRepackArraysPass
 ! ALL-NEXT: SimplifyFIROperations
-! O2-NEXT:  AddAliasTags
 
 ! ALL-NEXT: Pipeline Collection : ['fir.global', 'func.func', 'omp.declare_reduction', 'omp.private']
 ! ALL-NEXT:    'fir.global' Pipeline
@@ -134,6 +133,7 @@
 ! O2-NEXT:  'func.func' Pipeline
 ! O2-NEXT:    SetRuntimeCallAttributes
 ! ALL-NEXT: BoxedProcedurePass
+! O2-NEXT:  AddAliasTags
 
 ! ALL-NEXT: Pipeline Collection : ['fir.global', 'func.func', 'gpu.module', 'omp.declare_reduction', 'omp.private']
 ! ALL-NEXT:   'fir.global' Pipeline
diff --git a/flang/test/Fir/basic-program.fir b/flang/test/Fir/basic-program.fir
index c9fe53bf093a1..0a31397efb332 100644
--- a/flang/test/Fir/basic-program.fir
+++ b/flang/test/Fir/basic-program.fir
@@ -107,7 +107,6 @@ func.func @_QQmain() {
 // PASSES-NEXT:   OptimizeArrayRepacking
 // PASSES-NEXT: LowerRepackArraysPass
 // PASSES-NEXT: SimplifyFIROperations
-// PASSES-NEXT: AddAliasTags
 
 // PASSES-NEXT: Pipeline Collection : ['fir.global', 'func.func', 'omp.declare_reduction', 'omp.private']
 // PASSES-NEXT: 'fir.global' Pipeline
@@ -132,6 +131,7 @@ func.func @_QQmain() {
 // PASSES-NEXT: 'func.func' Pipeline
 // PASSES-NEXT:   SetRuntimeCallAttributes
 // PASSES-NEXT: BoxedProcedurePass
+// PASSES-NEXT: AddAliasTags
 
 // PASSES-NEXT: Pipeline Collection : ['fir.global', 'func.func', 'gpu.module', 'omp.declare_reduction', 'omp.private']
 // PASSES-NEXT:  'fir.global' Pipeline

Copy link
Contributor

@jeanPerier jeanPerier left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks.

I am thinking we should have a document to describe the FIR pipeline order and list the constraints so that we do not forget about them (not asking you to create it here).

Copy link
Contributor

@tblah tblah left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM too

@vzakhari vzakhari merged commit 31a6fed into llvm:main Sep 4, 2025
13 checks passed
@llvm-ci
Copy link
Collaborator

llvm-ci commented Sep 4, 2025

LLVM Buildbot has detected a new failure on builder openmp-offload-sles-build-only running on rocm-worker-hw-04-sles while building flang at step 10 "Add check check-lld".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/140/builds/30120

Here is the relevant piece of the build log for the reference
Step 10 (Add check check-lld) failure: test (failure)
******************** TEST 'lld :: MachO/read-workers.s' FAILED ********************
Exit Code: -6

Command Output (stdout):
--
# RUN: at line 2
/home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/bin/llvm-mc -filetype=obj -triple=x86_64-apple-darwin /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/lld/test/MachO/read-workers.s -o /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/MachO/Output/read-workers.s.tmp.o
# executed command: /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/bin/llvm-mc -filetype=obj -triple=x86_64-apple-darwin /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/lld/test/MachO/read-workers.s -o /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/MachO/Output/read-workers.s.tmp.o
# RUN: at line 5
ld64.lld -arch x86_64 -platform_version macos 11.0 11.0 -syslibroot /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/lld/test/MachO/Inputs/MacOSX.sdk -lSystem -fatal_warnings --read-workers=0 /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/MachO/Output/read-workers.s.tmp.o -o /dev/null
# executed command: ld64.lld -arch x86_64 -platform_version macos 11.0 11.0 -syslibroot /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/lld/test/MachO/Inputs/MacOSX.sdk -lSystem -fatal_warnings --read-workers=0 /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/MachO/Output/read-workers.s.tmp.o -o /dev/null
# RUN: at line 6
ld64.lld -arch x86_64 -platform_version macos 11.0 11.0 -syslibroot /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/lld/test/MachO/Inputs/MacOSX.sdk -lSystem -fatal_warnings --read-workers=1 /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/MachO/Output/read-workers.s.tmp.o -o /dev/null
# executed command: ld64.lld -arch x86_64 -platform_version macos 11.0 11.0 -syslibroot /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/lld/test/MachO/Inputs/MacOSX.sdk -lSystem -fatal_warnings --read-workers=1 /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/MachO/Output/read-workers.s.tmp.o -o /dev/null
# .---command stderr------------
# | terminate called after throwing an instance of 'std::bad_alloc'
# |   what():  std::bad_alloc
# | pure virtual method called
# | terminate called recursively
# `-----------------------------
# error: command failed with exit status: -6

--

********************


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
flang:driver flang:fir-hlfir flang Flang issues not falling into any other category
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants