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 &cudaCleanupCtx() {
131 return cudaCleanupContext;
134 Fortran::lower::StatementContext &openAccCtx() {
return openAccContext; }
136 bool validModule() {
return getModule(); }
147 void lower(
const Fortran::parser::Program &program,
148 const Fortran::semantics::SemanticsContext &semanticsContext);
151 explicit LoweringBridge(
152 mlir::MLIRContext &ctx,
153 Fortran::semantics::SemanticsContext &semanticsContext,
154 const Fortran::common::IntrinsicTypeDefaultKinds &defaultKinds,
155 const Fortran::evaluate::IntrinsicProcTable &intrinsics,
156 const Fortran::evaluate::TargetCharacteristics &targetCharacteristics,
157 const Fortran::parser::AllCookedSources &cooked, llvm::StringRef triple,
158 fir::KindMapping &kindMap,
159 const Fortran::lower::LoweringOptions &loweringOptions,
160 const std::vector<Fortran::lower::EnvironmentDefault> &envDefaults,
161 const Fortran::common::LanguageFeatureControl &languageFeatures,
162 const llvm::TargetMachine &targetMachine,
163 const Fortran::frontend::TargetOptions &targetOptions,
164 const Fortran::frontend::CodeGenOptions &codeGenOptions);
165 LoweringBridge() =
delete;
166 LoweringBridge(
const LoweringBridge &) =
delete;
168 Fortran::semantics::SemanticsContext &semanticsContext;
169 Fortran::lower::StatementContext functionContext;
170 Fortran::lower::StatementContext cudaCleanupContext;
171 Fortran::lower::StatementContext openAccContext;
172 const Fortran::common::IntrinsicTypeDefaultKinds &defaultKinds;
173 const Fortran::evaluate::IntrinsicProcTable &intrinsics;
174 const Fortran::evaluate::TargetCharacteristics &targetCharacteristics;
175 const Fortran::parser::AllCookedSources *cooked;
176 mlir::MLIRContext &context;
177 mlir::OwningOpRef<mlir::ModuleOp> module;
178 fir::KindMapping &kindMap;
179 const Fortran::lower::LoweringOptions &loweringOptions;
180 const std::vector<Fortran::lower::EnvironmentDefault> &envDefaults;
181 const Fortran::common::LanguageFeatureControl &languageFeatures;
182 std::set<std::string> tempNames;
183 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:6895
Definition semantics.h:67