Compile function calls
This commit is contained in:
parent
8dc0a6bf12
commit
e653734f86
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#include <llvm/IR/Module.h>
|
#include <llvm/IR/Module.h>
|
||||||
#include <llvm/IR/Verifier.h>
|
#include <llvm/IR/Verifier.h>
|
||||||
|
#include <llvm/Support/Casting.h>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
@ -77,7 +78,13 @@ namespace AST {
|
|||||||
}
|
}
|
||||||
|
|
||||||
codegen::StackValue FunctionCallExpression::codegen(codegen::Builder& builder, codegen::Scope& scope) {
|
codegen::StackValue FunctionCallExpression::codegen(codegen::Builder& builder, codegen::Scope& scope) {
|
||||||
// TODO
|
std::vector<llvm::Value*> args{};
|
||||||
|
for (auto& arg : this->m_args) {
|
||||||
|
args.push_back(arg->codegen(builder, scope).value);
|
||||||
|
}
|
||||||
|
auto function = this->m_fn_expr->codegen(builder, scope);
|
||||||
|
|
||||||
|
builder.builder->CreateCall(dyn_cast<llvm::FunctionType>(function.ty->codegen(builder)), function.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReturnStatement::codegen(codegen::Builder& builder, codegen::Scope& scope) {
|
void ReturnStatement::codegen(codegen::Builder& builder, codegen::Scope& scope) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user