9#ifndef FORTRAN_SEMANTICS_DATA_TO_INITS_H_
10#define FORTRAN_SEMANTICS_DATA_TO_INITS_H_
12#include "flang/Common/default-kinds.h"
13#include "flang/Common/interval.h"
14#include "flang/Evaluate/fold-designator.h"
15#include "flang/Evaluate/initial-image.h"
24class ExpressionAnalyzer;
26namespace Fortran::semantics {
35 void NoteInitializedRange(
Range range) {
36 if (initializedRanges.empty() ||
37 !initializedRanges.back().AnnexIfPredecessor(range)) {
38 initializedRanges.emplace_back(range);
41 void NoteInitializedRange(
42 common::ConstantSubscript offset, std::size_t size) {
43 NoteInitializedRange(
Range{offset, size});
46 NoteInitializedRange(offsetSymbol.offset(), offsetSymbol.size());
50 std::list<Range> initializedRanges;
53using DataInitializations = std::map<const Symbol *, SymbolDataInitialization>;
57void AccumulateDataInitializations(DataInitializations &,
61void AccumulateDataInitializations(DataInitializations &,
65void ConvertToInitializers(
Definition: indirection.h:31
Definition: interval.h:22
Definition: expression.h:102
Definition: initial-image.h:23
Definition: fold-designator.h:39
Definition: check-expression.h:19
Definition: parse-tree.h:1542
Definition: data-to-inits.h:30