13#ifndef FORTRAN_FRONTEND_FRONTENDACTIONS_H
14#define FORTRAN_FRONTEND_FRONTENDACTIONS_H
17#include "flang/Frontend/ParserActions.h"
19#include "mlir/IR/BuiltinOps.h"
20#include "mlir/IR/OwningOpRef.h"
21#include "llvm/ADT/StringRef.h"
22#include "llvm/IR/Module.h"
25namespace Fortran::frontend {
142 std::unique_ptr<llvm::raw_pwrite_stream>
176enum class BackendActionTy {
177 Backend_EmitAssembly,
189class CodeGenAction :
public FrontendAction {
196 void runOptimizationPipeline(llvm::raw_pwrite_stream &os);
199 CodeGenAction(BackendActionTy act) : action{act} {};
202 std::unique_ptr<mlir::MLIRContext> mlirCtx;
203 mlir::OwningOpRef<mlir::ModuleOp> mlirModule;
207 std::unique_ptr<llvm::LLVMContext> llvmCtx;
208 std::unique_ptr<llvm::Module> llvmModule;
223 BackendActionTy action;
230class EmitFIRAction :
public CodeGenAction {
232 EmitFIRAction() : CodeGenAction(BackendActionTy::Backend_EmitFIR) {}
235class EmitHLFIRAction :
public CodeGenAction {
237 EmitHLFIRAction() : CodeGenAction(BackendActionTy::Backend_EmitHLFIR) {}
240class EmitLLVMAction :
public CodeGenAction {
242 EmitLLVMAction() : CodeGenAction(BackendActionTy::Backend_EmitLL) {}
245class EmitLLVMBitcodeAction :
public CodeGenAction {
247 EmitLLVMBitcodeAction() : CodeGenAction(BackendActionTy::Backend_EmitBC) {}
250class EmitObjAction :
public CodeGenAction {
252 EmitObjAction() : CodeGenAction(BackendActionTy::Backend_EmitObj) {}
255class EmitAssemblyAction :
public CodeGenAction {
257 EmitAssemblyAction() : CodeGenAction(BackendActionTy::Backend_EmitAssembly) {}
void generateLLVMIR()
Definition FrontendActions.cpp:715
void lowerHLFIRToFIR()
Runs pass pipeline to lower HLFIR into FIR.
Definition FrontendActions.cpp:604
void embedOffloadObjects()
Embeds offload objects specified with -fembed-offload-object.
Definition FrontendActions.cpp:1171
~CodeGenAction() override
}
void linkBuiltinBCLibs()
Links in BC libraries spefified with -mlink-builtin-bitcode.
Definition FrontendActions.cpp:1190
Definition FrontendActions.h:163
Definition FrontendActions.h:111
Definition FrontendActions.h:107
Definition FrontendActions.h:75
Definition FrontendActions.h:55
Definition FrontendActions.h:51
Definition FrontendActions.h:103
Definition FrontendActions.h:59
Definition FrontendActions.h:115
Definition FrontendActions.h:99
Definition FrontendActions.h:71
Definition FrontendActions.h:95
Definition FrontendActions.h:91
virtual void executeAction()=0
virtual bool beginSourceFileAction()
Definition FrontendAction.h:50
Definition FrontendActions.h:119
Definition FrontendActions.h:123
Definition FrontendActions.h:35
Definition FrontendActions.h:127
Definition FrontendActions.h:131
std::unique_ptr< llvm::raw_pwrite_stream > createOutputFile(llvm::StringRef extension)
Definition FrontendActions.cpp:1420
Definition FrontendActions.h:42
Definition FrontendActions.h:66
Definition FrontendActions.h:85
Definition FrontendActions.h:157
Definition FrontendActions.h:47