Fixed value return from call
This commit is contained in:
@@ -52,10 +52,7 @@ void ModuleBuilder::buildFunctionDeclaration(shared_ptr<StatementFunctionDeclara
|
|||||||
// build function declaration
|
// build function declaration
|
||||||
llvm::FunctionType *funType = llvm::FunctionType::get(typeForValueType(statement->getReturnValueType()), types, false);
|
llvm::FunctionType *funType = llvm::FunctionType::get(typeForValueType(statement->getReturnValueType()), types, false);
|
||||||
llvm::Function *fun = llvm::Function::Create(funType, llvm::GlobalValue::InternalLinkage, statement->getName(), module.get());
|
llvm::Function *fun = llvm::Function::Create(funType, llvm::GlobalValue::InternalLinkage, statement->getName(), module.get());
|
||||||
<<<<<<< HEAD
|
|
||||||
funMap[statement->getName()] = fun;
|
funMap[statement->getName()] = fun;
|
||||||
=======
|
|
||||||
>>>>>>> c6ace32 (Pass arguments into function)
|
|
||||||
|
|
||||||
// define function body
|
// define function body
|
||||||
llvm::BasicBlock *block = llvm::BasicBlock::Create(*context, statement->getName(), fun);
|
llvm::BasicBlock *block = llvm::BasicBlock::Create(*context, statement->getName(), fun);
|
||||||
@@ -157,11 +154,7 @@ llvm::Value *ModuleBuilder::valueForBinary(shared_ptr<ExpressionBinary> expressi
|
|||||||
return valueForBinaryReal(expression->getOperation(), leftValue, rightValue);
|
return valueForBinaryReal(expression->getOperation(), leftValue, rightValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
<<<<<<< HEAD
|
|
||||||
failed("Unexpected operation");
|
failed("Unexpected operation");
|
||||||
=======
|
|
||||||
exit(1);
|
|
||||||
>>>>>>> c6ace32 (Pass arguments into function)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
llvm::Value *ModuleBuilder::valueForBinaryBool(ExpressionBinary::Operation operation, llvm::Value *leftValue, llvm::Value *rightValue) {
|
llvm::Value *ModuleBuilder::valueForBinaryBool(ExpressionBinary::Operation operation, llvm::Value *leftValue, llvm::Value *rightValue) {
|
||||||
@@ -290,7 +283,7 @@ llvm::Value *ModuleBuilder::valueForCall(shared_ptr<ExpressionCall> expression)
|
|||||||
llvm::Value *argValue = valueForExpression(argumentExpression);
|
llvm::Value *argValue = valueForExpression(argumentExpression);
|
||||||
argValues.push_back(argValue);
|
argValues.push_back(argValue);
|
||||||
}
|
}
|
||||||
builder->CreateCall(funType, fun, llvm::ArrayRef(argValues));
|
return builder->CreateCall(funType, fun, llvm::ArrayRef(argValues));
|
||||||
}
|
}
|
||||||
|
|
||||||
llvm::Type *ModuleBuilder::typeForValueType(ValueType valueType) {
|
llvm::Type *ModuleBuilder::typeForValueType(ValueType valueType) {
|
||||||
|
|||||||
Reference in New Issue
Block a user