diff options
author | jeanPerier <jperier@nvidia.com> | 2023-12-06 14:20:06 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-06 14:20:06 +0100 |
commit | e59e848805f57bd52ebbb0f7f7d4d951e6af597c (patch) | |
tree | e83a8776a07bd467dc9d44547b1af660b2303f8d /llvm/lib/Analysis/ModuleSummaryAnalysis.cpp | |
parent | d77067d08a3f56dc2d0e6c95bd2852c943df743a (diff) | |
download | llvm-e59e848805f57bd52ebbb0f7f7d4d951e6af597c.zip llvm-e59e848805f57bd52ebbb0f7f7d4d951e6af597c.tar.gz llvm-e59e848805f57bd52ebbb0f7f7d4d951e6af597c.tar.bz2 |
[flang] Updating drivers to create data layout before semantics (#73301)
Preliminary patch to change lowering/code generation to use
llvm::DataLayout information instead of generating "sizeof" GEP (see
https://github.com/llvm/llvm-project/issues/71507).
Fortran Semantic analysis needs to know about the target type size and
alignment to deal with common blocks, and intrinsics like
C_SIZEOF/TRANSFER. This information should be obtained from the
llvm::DataLayout so that it is consistent during the whole compilation
flow.
This change is changing flang-new and bbc drivers to:
1. Create the llvm::TargetMachine so that the data layout of the target
can be obtained before semantics.
2. Sharing bbc/flang-new set-up of the
SemanticConstext.targetCharateristics from the llvm::TargetMachine. For
now, the actual part that set-up the Fortran type size and alignment
from the llvm::DataLayout is left TODO so that this change is mostly an
NFC impacting the drivers.
3. Let the lowering bridge set-up the mlir::Module datalayout attributes
since it is doing it for the target attribute, and that allows the llvm
data layout information to be available during lowering.
For flang-new, the changes are code shuffling: the `llvm::TargetMachine`
instance is moved to `CompilerInvocation` class so that it can be used
to set-up the semantic contexts. `setMLIRDataLayout` is moved to
`flang/Optimizer/Support/DataLayout.h` (it will need to be used from
codegen pass for fir-opt target independent testing.)), and the code
setting-up semantics targetCharacteristics is moved to
`Tools/TargetSetup.h` so that it can be shared with bbc.
As a consequence, LLVM targets must be registered when running
semantics, and it is not possible to run semantics for a target that is
not registered with the -triple option (hence the power pc specific
modules can only be built if the PowerPC target is available.
Diffstat (limited to 'llvm/lib/Analysis/ModuleSummaryAnalysis.cpp')
0 files changed, 0 insertions, 0 deletions