Mercurial > projects > ldc
changeset 185:89e21eeaf4c4 trunk
[svn r201] Fixed: return statement could fail codegen with type mismatch for classes, added cast.
author | lindquist |
---|---|
date | Wed, 07 May 2008 22:27:45 +0200 |
parents | f5ca6bbbf1d7 |
children | 395223f9875e |
files | gen/statements.cpp |
diffstat | 1 files changed, 7 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/gen/statements.cpp Wed May 07 22:01:59 2008 +0200 +++ b/gen/statements.cpp Wed May 07 22:27:45 2008 +0200 @@ -103,6 +103,13 @@ delete e; Logger::cout() << "return value is '" <<*v << "'\n"; + // can happen for classes + if (v->getType() != p->topfunc()->getReturnType()) + { + v = gIR->ir->CreateBitCast(v, p->topfunc()->getReturnType(), "tmp"); + Logger::cout() << "return value after cast: " << *v << '\n'; + } + emit_finallyblocks(p, enclosingtryfinally, NULL); if (global.params.symdebug) DtoDwarfFuncEnd(p->func()->decl);