Fixed value return from call

This commit is contained in:
Rafał Grodziński
2025-06-19 11:07:54 +09:00
parent 297c1da1e6
commit d800059115

View File

@@ -52,10 +52,7 @@ void ModuleBuilder::buildFunctionDeclaration(shared_ptr<StatementFunctionDeclara
// build function declaration
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());
<<<<<<< HEAD
funMap[statement->getName()] = fun;
=======
>>>>>>> c6ace32 (Pass arguments into function)
// define function body
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);
}
<<<<<<< HEAD
failed("Unexpected operation");
=======
exit(1);
>>>>>>> c6ace32 (Pass arguments into function)
}
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);
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) {