tipc
A TIP to LLVM compiler
CodeGenerator.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "ASTProgram.h"
4 #include "SemanticAnalysis.h"
5 #include "llvm/IR/Module.h"
6 
7 static const char *const LLVM_ASM_EXT = ".ll";
8 static const char *const LLVM_BC_EXT = ".bc";
9 
17 public:
27  static std::shared_ptr<llvm::Module>
28  generate(ASTProgram *program, SemanticAnalysis *analysisResults,
29  std::string fileName);
30 
36  static void emit(llvm::Module *m, std::string filename = "");
37 
43  static void emitHumanReadableAssembly(llvm::Module *m,
44  std::string filename = "");
45 };
Class for a program which is a name and a list of functions.
Definition: ASTProgram.h:11
Routines to optimize generated code.
Definition: CodeGenerator.h:16
static void emitHumanReadableAssembly(llvm::Module *m, std::string filename="")
Emit LLVM human-readable assembly to a file.
Definition: CodeGenerator.cpp:52
static void emit(llvm::Module *m, std::string filename="")
Emit LLVM IR to a file.
Definition: CodeGenerator.cpp:16
static std::shared_ptr< llvm::Module > generate(ASTProgram *program, SemanticAnalysis *analysisResults, std::string fileName)
Generate LLVM IR for ast.
Definition: CodeGenerator.cpp:11
Stores the results of semantic analysis passes.
Definition: SemanticAnalysis.h:18