llvm-project/flang/test
Jean Perier f88a9497a2 [flang] Generate PDT runtime type info in the type definition scope
This patches modifies PDT runtime type info generation so that it is
easier to handle derived type descriptor in lowering. It changes three
aspects:

1. The symbol name suffix of runtime type info for PDT instantiation is
   changed from a serial number unrelated to the types to an encoding of
   the instantiated KIND parameters.
2. New runtime type info is not created for each instantiation of PDT without
   KIND parameters (only length parameters). Instead, the runtime type
   info of the type definition is always used. It is updated to contain
   the component descriptions.
3. Runtime type info of PDT instantiation is now always generated in the
   scope where the type is defined. If several PDT type instantiation
   are made in different scope with the same kind parameters, they will
   use the same runtime type info.

Rational of the change:

In lowering, derived type descriptors are not mapped when instantiating derived
type objects. They are mapped later when symbol knowledge is not available anymore.
This mapping is based on the FIR representation of derived types. For
PDT, the FIR type information does not allow deducing the instantiation
scope, it only allows retrieving the type name, the type _definition_
scope, and the kind parameter values. Therefore, in order to be able to
retrieve the derived type descriptor from a FIR type, the derived type
descriptor must be generated in the definition scope and must reflect
the kind parameters. This justifies the need for changes 1. and 3.
above (suffix and scope change). Changes 2. comes from the fact that
all runtime type info of type without kind parameters can be generated
from the type definition, and that because of the suffix change, the
symbol name for type definition and type instantiation are the same.

Although this change is first motivated by how lowering handles derived
types, I believe it is also an improvement from a functional point of
view since this change will allow reducing the number of generated
runtime type info for PDTs, since redundant information (different
instantiations with same kind parameters) will only be generated once.

Differential Revision: https://reviews.llvm.org/D120801
2022-03-03 10:15:21 +01:00
..
Driver [flang][driver] Add support for `--target`/`--triple` 2022-02-25 09:38:10 +00:00
Evaluate Folding in the front end was replacing calls to LEN and dropping 2022-02-09 16:50:28 -08:00
Examples [flang][flang-omp-report] Remove the loop workarounds for nowait clause 2021-11-04 14:23:50 +00:00
Fir [flang] Support PDT type descriptors in codegen 2022-03-03 10:08:18 +01:00
Frontend [flang] Make the frontend driver error out when requesting multiple actions 2021-12-17 10:05:28 +00:00
Lower [flang] Lower more cases of assignments on allocatable variables 2022-03-02 20:05:23 +01:00
NonGtestUnit [flang] Run non-gtest unit tests with lit. 2020-07-24 14:49:39 +01:00
Parser [flang] Catch mismatched parentheses in prescanner 2021-10-06 14:00:15 -07:00
Preprocessing [flang] Fix handling of space between # and name in preprocessor stringification 2022-01-12 16:02:17 -08:00
Runtime Reland "[flang] GET_COMMAND_ARGUMENT runtime implementation" 2021-09-28 12:34:07 +00:00
Semantics [flang] Generate PDT runtime type info in the type definition scope 2022-03-03 10:15:21 +01:00
Unit [flang] unit test support for out-of-tree and in-tree using google tests framework 2020-06-15 22:09:56 +05:30
CMakeLists.txt [flang] Initial lowering for empty program 2022-01-28 22:39:58 +01:00
lit.cfg.py [Flang] Replace notifyMatchFailure with TODO hard failures 2021-12-02 10:25:02 +00:00
lit.site.cfg.py.in [flang] Refine output file generation 2021-08-21 15:18:48 +00:00