llvm/flang/lib/Semantics
peter klausler d60a02201d [flang] Include default component initialization in static initializers
The combined initializers constructed from DATA statements and explicit
static initialization in declarations needs to include derived type
component default initializations, overriding those default values
without complaint with values from explicit DATA statement or declaration
initializations when they overlap.  This also has to work for objects
with storage association due to EQUIVALENCE.  When storage association causes
default component initializations to overlap, emit errors if and only
if the values differ (See Fortran 2018 subclause 19.5.3, esp. paragraph
10).

The f18 front-end has a module that analyzes and converts DATA statements
into equivalent static initializers for objects.  For storage-associated
objects, compiler-generated objects are created that overlay the entire
association and fill it with a combined initializer.  This "data-to-inits"
module already exists, and this patch is essentially extension and
clean-up of its machinery to complete the job.

Also: emit EQUIVALENCE to module files; mark compiler-created symbols
and *don't* emit those to module files; check non-static EQUIVALENCE
sets for conflicting default component initializations, so lowering
doesn't have to check them or emit diagnostics.

Differential Revision: https://reviews.llvm.org/D109022
2021-09-01 09:40:37 -07:00
..
assignment.cpp
assignment.h
attr.cpp
canonicalize-acc.cpp [flang] Add clang-tidy check for braces around if 2021-06-16 09:13:53 +00:00
canonicalize-acc.h
canonicalize-do.cpp
canonicalize-do.h
canonicalize-omp.cpp
canonicalize-omp.h
check-acc-structure.cpp [flang] Add clang-tidy check for braces around if 2021-06-16 09:13:53 +00:00
check-acc-structure.h
check-allocate.cpp
check-allocate.h
check-arithmeticif.cpp
check-arithmeticif.h
check-call.cpp [flang] Downgrade inappropriate error message to a warning 2021-08-31 11:28:42 -07:00
check-call.h
check-case.cpp
check-case.h
check-coarray.cpp
check-coarray.h
check-data.cpp
check-data.h
check-deallocate.cpp
check-deallocate.h
check-declarations.cpp [flang] Include default component initialization in static initializers 2021-09-01 09:40:37 -07:00
check-declarations.h
check-directive-structure.h [flang][OpenMP] Add semantic check for teams nesting 2021-08-13 10:42:47 -04:00
check-do-forall.cpp
check-do-forall.h
check-if-stmt.cpp
check-if-stmt.h
check-io.cpp [flang] Disallow BOZ literal constants as output list items 2021-07-27 13:01:26 -07:00
check-io.h
check-namelist.cpp
check-namelist.h
check-nullify.cpp
check-nullify.h
check-omp-structure.cpp [flang][OpenMP] Add semantic check for target nesting 2021-08-18 09:40:52 +08:00
check-omp-structure.h [flang][OpenMP] Add semantic check for target nesting 2021-08-18 09:40:52 +08:00
check-purity.cpp
check-purity.h
check-return.cpp
check-return.h
check-select-rank.cpp
check-select-rank.h
check-select-type.cpp
check-select-type.h
check-stop.cpp
check-stop.h
CMakeLists.txt
compute-offsets.cpp [flang] Include default component initialization in static initializers 2021-09-01 09:40:37 -07:00
compute-offsets.h
data-to-inits.cpp [flang] Include default component initialization in static initializers 2021-09-01 09:40:37 -07:00
data-to-inits.h [flang] Include default component initialization in static initializers 2021-09-01 09:40:37 -07:00
expression.cpp [flang] Extension: reduced scope for some implied DO loop indices 2021-08-24 09:34:18 -07:00
mod-file.cpp [flang] Include default component initialization in static initializers 2021-09-01 09:40:37 -07:00
mod-file.h
pointer-assignment.cpp [flang] Complain about more cases of calls to insufficiently defined procedures 2021-06-16 18:20:59 -07:00
pointer-assignment.h
program-tree.cpp
program-tree.h
resolve-directives.cpp [Flang][Openmp] Upgrade TASKGROUP construct to 5.0. 2021-08-03 10:27:47 +05:30
resolve-directives.h
resolve-labels.cpp
resolve-labels.h
resolve-names-utils.cpp
resolve-names-utils.h
resolve-names.cpp [flang] Include default component initialization in static initializers 2021-09-01 09:40:37 -07:00
resolve-names.h
rewrite-parse-tree.cpp
rewrite-parse-tree.h
runtime-type-info.cpp [flang] Include default component initialization in static initializers 2021-09-01 09:40:37 -07:00
scope.cpp [flang] Support known constant lengths in DynamicType 2021-06-03 14:25:22 -07:00
semantics.cpp
symbol.cpp [flang] Include default component initialization in static initializers 2021-09-01 09:40:37 -07:00
tools.cpp [flang] Include default component initialization in static initializers 2021-09-01 09:40:37 -07:00
type.cpp [flang] Include default component initialization in static initializers 2021-09-01 09:40:37 -07:00
unparse-with-symbols.cpp