2024-04-08 20:08:15 +02:00
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
2024-06-21 00:18:44 +02:00
|
|
|
#include <memory>
|
|
|
|
|
2024-04-08 20:08:15 +02:00
|
|
|
#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);
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|