26 lines
605 B
C++
26 lines
605 B
C++
|
#include "ast/ast.h"
|
||
|
#include "ast/prototype_ast.h"
|
||
|
|
||
|
llvm::Function *obelisk::PrototypeAST::codegen()
|
||
|
{
|
||
|
std::vector<llvm::Type *> doubles(args_.size(),
|
||
|
llvm::Type::getDoubleTy(*TheContext));
|
||
|
llvm::FunctionType *FT
|
||
|
= llvm::FunctionType::get(llvm::Type::getDoubleTy(*TheContext),
|
||
|
doubles,
|
||
|
false);
|
||
|
|
||
|
llvm::Function *F = llvm::Function::Create(FT,
|
||
|
llvm::Function::ExternalLinkage,
|
||
|
name_,
|
||
|
obelisk::TheModule.get());
|
||
|
|
||
|
unsigned idx = 0;
|
||
|
for (auto &arg : F->args())
|
||
|
{
|
||
|
arg.setName(args_[idx++]);
|
||
|
}
|
||
|
|
||
|
return F;
|
||
|
}
|