From 4037a76c6b2b50670d036c718923bef48718de6b Mon Sep 17 00:00:00 2001 From: Stefano Sanfilippo Date: Mon, 9 Mar 2015 01:11:13 +0100 Subject: [PATCH] Implicitly cast return expressions to the return type of the function. --- BitcodeEmitter.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/BitcodeEmitter.cpp b/BitcodeEmitter.cpp index 05e7974..cbcb672 100644 --- a/BitcodeEmitter.cpp +++ b/BitcodeEmitter.cpp @@ -235,7 +235,8 @@ BitcodeEmitter::~BitcodeEmitter() { bool BitcodeEmitter::emit(Return const& node) { if (node.getExpression()) { GUARDED(node.getExpression()->emit(this)); - d->builder.CreateRet(d->retval); + llvm::Type *type = d->builder.GetInsertBlock()->getParent()->getReturnType(); + d->builder.CreateRet(coerce(d, d->retval, type)); } else { d->builder.CreateRetVoid(); }