Changeset View
Changeset View
Standalone View
Standalone View
flang/lib/Frontend/FrontendActions.cpp
Show First 20 Lines • Show All 75 Lines • ▼ Show 20 Lines | bool CodeGenAction::BeginSourceFileAction() { | ||||
// Create a LoweringBridge | // Create a LoweringBridge | ||||
const common::IntrinsicTypeDefaultKinds &defKinds = | const common::IntrinsicTypeDefaultKinds &defKinds = | ||||
ci.invocation().semanticsContext().defaultKinds(); | ci.invocation().semanticsContext().defaultKinds(); | ||||
fir::KindMapping kindMap(mlirCtx.get(), | fir::KindMapping kindMap(mlirCtx.get(), | ||||
llvm::ArrayRef<fir::KindTy>{fir::fromDefaultKinds(defKinds)}); | llvm::ArrayRef<fir::KindTy>{fir::fromDefaultKinds(defKinds)}); | ||||
lower::LoweringBridge lb = Fortran::lower::LoweringBridge::create(*mlirCtx, | lower::LoweringBridge lb = Fortran::lower::LoweringBridge::create(*mlirCtx, | ||||
defKinds, ci.invocation().semanticsContext().intrinsics(), | defKinds, ci.invocation().semanticsContext().intrinsics(), | ||||
ci.parsing().allCooked(), /*triple=*/"native", kindMap); | ci.parsing().allCooked(), ci.invocation().targetOpts().triple, kindMap); | ||||
// Create a parse tree and lower it to FIR | // Create a parse tree and lower it to FIR | ||||
Fortran::parser::Program &parseTree{*ci.parsing().parseTree()}; | Fortran::parser::Program &parseTree{*ci.parsing().parseTree()}; | ||||
lb.lower(parseTree, ci.invocation().semanticsContext()); | lb.lower(parseTree, ci.invocation().semanticsContext()); | ||||
mlirModule = std::make_unique<mlir::ModuleOp>(lb.getModule()); | mlirModule = std::make_unique<mlir::ModuleOp>(lb.getModule()); | ||||
// Run the default passes. | // Run the default passes. | ||||
mlir::PassManager pm(mlirCtx.get(), mlir::OpPassManager::Nesting::Implicit); | mlir::PassManager pm(mlirCtx.get(), mlir::OpPassManager::Nesting::Implicit); | ||||
▲ Show 20 Lines • Show All 416 Lines • Show Last 20 Lines |