Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[flang][NFC] share Constant<SomeDerived> lowering
A previous patch (https://reviews.llvm.org/D136955) already refactored intrinsic constant lowering to place in its own file and allow using it from both the current lowering and the new lowering to HLFIR. This patch does the same for derived types. The core function "genStructComponentInInitializer" is moved from ConvertExpr.cpp and renamed "genInlinedStructureCtorLitImpl" into ConvertConstant.cpp without significant logic change. Then, genScalarLit, genArrayLit (and genInlinedArrayLit/genOutlinedArrayLit) are updated to support derived types. The core aspect of derived type constant lowering that differs between the current lowering and the HLFIR update is the way addresses/initial target descriptors are built when part of a derived type constant. This part happens in ConvertVariable.cpp (since the address of a variable is taken in an initializer and is left TODO). The mangling of derived type global literal constant is fixed: it did not embed the derived type name and could cause "conflicts" between unrelated derived types containing the same data. However, the hash remains unstable between two compilation of the same file. This is not a correctness issue and would require a lot of work to hash the derived type constant data without hashing some irrelevant (but not out of bound) data in the compile time data structure that holds derived type constants (Constant<SomeDerived>). This may have to be revisited later. Differential Revision: https://reviews.llvm.org/D140986
- Loading branch information
1 parent
6aa02f9
commit 2d9b4a5
Showing
11 changed files
with
424 additions
and
258 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.