13#ifndef FORTRAN_FRONTEND_FRONTENDACTIONS_H
14#define FORTRAN_FRONTEND_FRONTENDACTIONS_H
16#include "flang/Frontend/CodeGenOptions.h"
18#include "flang/Parser/parsing.h"
19#include "flang/Semantics/semantics.h"
21#include "mlir/IR/BuiltinOps.h"
22#include "mlir/IR/OwningOpRef.h"
23#include "llvm/ADT/StringRef.h"
24#include "llvm/IR/Module.h"
27namespace Fortran::frontend {
37 void Post(
const A &) {
41 size_t objects{0}, bytes{0};
49 void executeAction()
override;
53 void executeAction()
override;
60 void executeAction()
override = 0;
61 bool beginSourceFileAction()
override;
65 void executeAction()
override;
69 void executeAction()
override;
73 void executeAction()
override;
77 void executeAction()
override;
84 void executeAction()
override = 0;
85 bool beginSourceFileAction()
override;
89 void executeAction()
override;
93 void executeAction()
override;
104 void executeAction()
override = 0;
105 bool beginSourceFileAction()
override;
109 void executeAction()
override;
113 void executeAction()
override;
117 void executeAction()
override;
121 void executeAction()
override;
125 void executeAction()
override;
129 void executeAction()
override;
133 void executeAction()
override;
137 void executeAction()
override;
141 void executeAction()
override;
145 void executeAction()
override;
149 void executeAction()
override = 0;
159 std::unique_ptr<llvm::raw_pwrite_stream>
176 void executeAction()
override = 0;
177 bool beginSourceFileAction()
override;
181 void executeAction()
override;
193enum class BackendActionTy {
194 Backend_EmitAssembly,
208 void executeAction()
override;
210 bool beginSourceFileAction()
override;
213 void runOptimizationPipeline(llvm::raw_pwrite_stream &os);
219 std::unique_ptr<mlir::MLIRContext> mlirCtx;
220 mlir::OwningOpRef<mlir::ModuleOp> mlirModule;
224 std::unique_ptr<llvm::LLVMContext> llvmCtx;
225 std::unique_ptr<llvm::Module> llvmModule;
240 BackendActionTy action;
Definition: FrontendActions.h:206
void generateLLVMIR()
Definition: FrontendActions.cpp:836
void lowerHLFIRToFIR()
Runs pass pipeline to lower HLFIR into FIR.
Definition: FrontendActions.cpp:727
void embedOffloadObjects()
Embeds offload objects specified with -fembed-offload-object.
Definition: FrontendActions.cpp:1229
~CodeGenAction() override
}
void linkBuiltinBCLibs()
Links in BC libraries spefified with -mlink-builtin-bitcode.
Definition: FrontendActions.cpp:1248
Definition: FrontendActions.h:180
Definition: FrontendActions.h:128
Definition: FrontendActions.h:124
Definition: FrontendActions.h:92
Definition: FrontendActions.h:72
Definition: FrontendActions.h:68
Definition: FrontendActions.h:120
Definition: FrontendActions.h:76
Definition: FrontendActions.h:132
Definition: FrontendActions.h:116
Definition: FrontendActions.h:88
Definition: FrontendActions.h:112
Definition: FrontendActions.h:108
Definition: FrontendActions.h:272
Definition: FrontendActions.h:247
Definition: FrontendActions.h:252
Definition: FrontendActions.h:257
Definition: FrontendActions.h:262
Definition: FrontendActions.h:267
Abstract base class for actions which can be performed by the frontend.
Definition: FrontendAction.h:28
Definition: FrontendActions.h:136
Definition: FrontendActions.h:140
Definition: FrontendActions.h:52
Definition: FrontendActions.h:144
Definition: FrontendActions.h:148
std::unique_ptr< llvm::raw_pwrite_stream > createOutputFile(llvm::StringRef extension)
Definition: FrontendActions.cpp:1485
Definition: FrontendActions.h:59
Definition: FrontendActions.h:83
Definition: FrontendActions.h:102
Definition: FrontendActions.h:174
Definition: FrontendActions.h:64
Definition: FrontendActions.h:31