Mercurial > projects > ldc
diff gen/statements.cpp @ 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 | ef4108f34db6 |
children | bfcb657756f6 |
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);