Mercurial > hg > CbC > CbC_llvm
view flang/lib/Semantics/check-data.h @ 207:2e18cbf3894f
LLVM12
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 08 Jun 2021 06:07:14 +0900 |
parents | 0572611fdcc8 |
children | c4bab56944e8 |
line wrap: on
line source
//===-------lib/Semantics/check-data.h ------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef FORTRAN_SEMANTICS_CHECK_DATA_H_ #define FORTRAN_SEMANTICS_CHECK_DATA_H_ #include "data-to-inits.h" #include "flang/Common/interval.h" #include "flang/Evaluate/fold-designator.h" #include "flang/Evaluate/initial-image.h" #include "flang/Semantics/expression.h" #include "flang/Semantics/semantics.h" #include <list> #include <map> #include <vector> namespace Fortran::parser { struct DataStmtRepeat; struct DataStmtObject; struct DataIDoObject; class DataStmtImpliedDo; struct DataStmtSet; } // namespace Fortran::parser namespace Fortran::semantics { class DataChecker : public virtual BaseChecker { public: explicit DataChecker(SemanticsContext &context) : exprAnalyzer_{context} {} void Leave(const parser::DataStmtObject &); void Leave(const parser::DataIDoObject &); void Enter(const parser::DataImpliedDo &); void Leave(const parser::DataImpliedDo &); void Leave(const parser::DataStmtSet &); // After all DATA statements have been processed, converts their // initializations into per-symbol static initializers. void CompileDataInitializationsIntoInitializers(); private: ConstantSubscript GetRepetitionCount(const parser::DataStmtRepeat &); template <typename T> void CheckIfConstantSubscript(const T &); void CheckSubscript(const parser::SectionSubscript &); bool CheckAllSubscriptsInDataRef(const parser::DataRef &, parser::CharBlock); DataInitializations inits_; evaluate::ExpressionAnalyzer exprAnalyzer_; bool currentSetHasFatalErrors_{false}; }; } // namespace Fortran::semantics #endif // FORTRAN_SEMANTICS_CHECK_DATA_H_