65 const Fortran::evaluate::IntrinsicProcTable &intrinsics,
70 const std::vector<Fortran::lower::EnvironmentDefault> &envDefaults,
72 const llvm::TargetMachine &targetMachine,
75 return LoweringBridge(ctx, semanticsContext, defaultKinds, intrinsics,
76 targetCharacteristics, allCooked, triple, kindMap,
77 loweringOptions, envDefaults, languageFeatures,
78 targetMachine, targetOptions, codeGenOptions);
86 mlir::MLIRContext &getMLIRContext() {
return context; }
90 mlir::ModuleOp getModuleAndRelease() {
return module.release(); }
95 const Fortran::evaluate::IntrinsicProcTable &getIntrinsicTable()
const {
98 const Fortran::evaluate::TargetCharacteristics &
99 getTargetCharacteristics()
const {
100 return targetCharacteristics;
102 const Fortran::parser::AllCookedSources *getCookedSource()
const {
110 return loweringOptions;
113 const std::vector<Fortran::lower::EnvironmentDefault> &
114 getEnvironmentDefaults()
const {
119 return languageFeatures;
122 const std::string &getModuleNameHash()
const {
return moduleNameHash; }
127 Fortran::semantics::SemanticsContext &getSemanticsContext()
const {
128 return semanticsContext;
131 Fortran::lower::StatementContext &fctCtx() {
return functionContext; }
133 Fortran::lower::StatementContext &cudaCleanupCtx() {
134 return cudaCleanupContext;
137 Fortran::lower::StatementContext &openAccCtx() {
return openAccContext; }
139 bool validModule() {
return getModule(); }
150 void lower(
const Fortran::parser::Program &program,
151 const Fortran::semantics::SemanticsContext &semanticsContext);
154 explicit LoweringBridge(
155 mlir::MLIRContext &ctx,
156 Fortran::semantics::SemanticsContext &semanticsContext,
157 const Fortran::common::IntrinsicTypeDefaultKinds &defaultKinds,
158 const Fortran::evaluate::IntrinsicProcTable &intrinsics,
159 const Fortran::evaluate::TargetCharacteristics &targetCharacteristics,
160 const Fortran::parser::AllCookedSources &cooked, llvm::StringRef triple,
161 fir::KindMapping &kindMap,
162 const Fortran::lower::LoweringOptions &loweringOptions,
163 const std::vector<Fortran::lower::EnvironmentDefault> &envDefaults,
164 const Fortran::common::LanguageFeatureControl &languageFeatures,
165 const llvm::TargetMachine &targetMachine,
166 const Fortran::frontend::TargetOptions &targetOptions,
167 const Fortran::frontend::CodeGenOptions &codeGenOptions);
168 LoweringBridge() =
delete;
169 LoweringBridge(
const LoweringBridge &) =
delete;
171 Fortran::semantics::SemanticsContext &semanticsContext;
172 Fortran::lower::StatementContext functionContext;
173 Fortran::lower::StatementContext cudaCleanupContext;
174 Fortran::lower::StatementContext openAccContext;
175 const Fortran::common::IntrinsicTypeDefaultKinds &defaultKinds;
176 const Fortran::evaluate::IntrinsicProcTable &intrinsics;
177 const Fortran::evaluate::TargetCharacteristics &targetCharacteristics;
178 const Fortran::parser::AllCookedSources *cooked;
179 mlir::MLIRContext &context;
180 mlir::OwningOpRef<mlir::ModuleOp> module;
181 fir::KindMapping &kindMap;
182 const Fortran::lower::LoweringOptions &loweringOptions;
183 const std::vector<Fortran::lower::EnvironmentDefault> &envDefaults;
184 const Fortran::common::LanguageFeatureControl &languageFeatures;
185 std::set<std::string> tempNames;
186 std::string moduleNameHash;
187 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:62
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:7033
Definition semantics.h:67