33 lines
470 B
C++
33 lines
470 B
C++
|
|
||
|
#pragma once
|
||
|
|
||
|
#include "llvm/IR/Value.h"
|
||
|
#include "llvm/IR/IRBuilder.h"
|
||
|
|
||
|
namespace bolt {
|
||
|
|
||
|
class Node;
|
||
|
class SourceFile;
|
||
|
class Expression;
|
||
|
|
||
|
class LLVMCodeGen {
|
||
|
|
||
|
llvm::LLVMContext* TheContext;
|
||
|
|
||
|
std::unique_ptr<llvm::IRBuilder<>> Builder;
|
||
|
|
||
|
std::unique_ptr<llvm::Module> Module;
|
||
|
|
||
|
public:
|
||
|
|
||
|
LLVMCodeGen(llvm::LLVMContext* TheContext);
|
||
|
|
||
|
llvm::Value* generateExpression(Expression* E);
|
||
|
|
||
|
void generateElement(Node* Element);
|
||
|
void generate(SourceFile* SF);
|
||
|
|
||
|
};
|
||
|
|
||
|
}
|