64 const Fortran::evaluate::IntrinsicProcTable &intrinsics,
69 const std::vector<Fortran::lower::EnvironmentDefault> &envDefaults,
71 const llvm::TargetMachine &targetMachine,
74 return LoweringBridge(ctx, semanticsContext, defaultKinds, intrinsics,
75 targetCharacteristics, allCooked, triple, kindMap,
76 loweringOptions, envDefaults, languageFeatures,
77 targetMachine, targetOptions, codeGenOptions);
85 mlir::MLIRContext &getMLIRContext() {
return context; }
89 mlir::ModuleOp getModuleAndRelease() {
return module.release(); }
94 const Fortran::evaluate::IntrinsicProcTable &getIntrinsicTable()
const {
97 const Fortran::evaluate::TargetCharacteristics &
98 getTargetCharacteristics()
const {
99 return targetCharacteristics;
101 const Fortran::parser::AllCookedSources *getCookedSource()
const {
109 return loweringOptions;
112 const std::vector<Fortran::lower::EnvironmentDefault> &
113 getEnvironmentDefaults()
const {
118 return languageFeatures;
124 Fortran::semantics::SemanticsContext &getSemanticsContext()
const {
125 return semanticsContext;
128 Fortran::lower::StatementContext &fctCtx() {
return functionContext; }
130 Fortran::lower::StatementContext &openAccCtx() {
return openAccContext; }
132 bool validModule() {
return getModule(); }
143 void lower(
const Fortran::parser::Program &program,
144 const Fortran::semantics::SemanticsContext &semanticsContext);
147 explicit LoweringBridge(
148 mlir::MLIRContext &ctx,
149 Fortran::semantics::SemanticsContext &semanticsContext,
150 const Fortran::common::IntrinsicTypeDefaultKinds &defaultKinds,
151 const Fortran::evaluate::IntrinsicProcTable &intrinsics,
152 const Fortran::evaluate::TargetCharacteristics &targetCharacteristics,
153 const Fortran::parser::AllCookedSources &cooked, llvm::StringRef triple,
154 fir::KindMapping &kindMap,
155 const Fortran::lower::LoweringOptions &loweringOptions,
156 const std::vector<Fortran::lower::EnvironmentDefault> &envDefaults,
157 const Fortran::common::LanguageFeatureControl &languageFeatures,
158 const llvm::TargetMachine &targetMachine,
159 const Fortran::frontend::TargetOptions &targetOptions,
160 const Fortran::frontend::CodeGenOptions &codeGenOptions);
161 LoweringBridge() =
delete;
162 LoweringBridge(
const LoweringBridge &) =
delete;
164 Fortran::semantics::SemanticsContext &semanticsContext;
165 Fortran::lower::StatementContext functionContext;
166 Fortran::lower::StatementContext openAccContext;
167 const Fortran::common::IntrinsicTypeDefaultKinds &defaultKinds;
168 const Fortran::evaluate::IntrinsicProcTable &intrinsics;
169 const Fortran::evaluate::TargetCharacteristics &targetCharacteristics;
170 const Fortran::parser::AllCookedSources *cooked;
171 mlir::MLIRContext &context;
172 mlir::OwningOpRef<mlir::ModuleOp> module;
173 fir::KindMapping &kindMap;
174 const Fortran::lower::LoweringOptions &loweringOptions;
175 const std::vector<Fortran::lower::EnvironmentDefault> &envDefaults;
176 const Fortran::common::LanguageFeatureControl &languageFeatures;
177 std::set<std::string> tempNames;
178 std::optional<mlir::DiagnosticEngine::HandlerID> diagHandlerID;
static LoweringBridge create(mlir::MLIRContext &ctx, Fortran::semantics::SemanticsContext &semanticsContext, const Fortran::common::IntrinsicTypeDefaultKinds &defaultKinds, const Fortran::evaluate::IntrinsicProcTable &intrinsics, const Fortran::evaluate::TargetCharacteristics &targetCharacteristics, const Fortran::parser::AllCookedSources &allCooked, llvm::StringRef triple, fir::KindMapping &kindMap, const Fortran::lower::LoweringOptions &loweringOptions, const std::vector< Fortran::lower::EnvironmentDefault > &envDefaults, const Fortran::common::LanguageFeatureControl &languageFeatures, const llvm::TargetMachine &targetMachine, const Fortran::frontend::TargetOptions &targetOptions, const Fortran::frontend::CodeGenOptions &codeGenOptions)
Create a lowering bridge instance.
Definition Bridge.h:61
void lower(const Fortran::parser::Program &program, const Fortran::semantics::SemanticsContext &semanticsContext)
Cross the bridge from the Fortran parse-tree, etc. to MLIR dialects.
Definition Bridge.cpp:6750
Definition semantics.h:67