Mercurial > projects > ldc
diff gen/statements.cpp @ 610:1b62222581fb
Change bool type to i8
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Sat, 20 Sep 2008 10:13:15 +0200 |
parents | fbb1a366cfbc |
children | 83ca663ecc20 |
line wrap: on
line diff
--- a/gen/statements.cpp Fri Sep 19 21:45:05 2008 +0200 +++ b/gen/statements.cpp Sat Sep 20 10:13:15 2008 +0200 @@ -81,11 +81,15 @@ 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'; + // can happen for classes + if(isaPointer(v) && isaPointer(p->topfunc()->getReturnType())) + v = gIR->ir->CreateBitCast(v, p->topfunc()->getReturnType(), "tmp"); + // or for i1 vs i8 bools + if(v->getType() == LLType::Int1Ty && p->topfunc()->getReturnType() == LLType::Int8Ty) + v = gIR->ir->CreateZExt(v, LLType::Int8Ty); + Logger::cout() << "adjusted return value: " << *v << '\n'; } DtoEnclosingHandlers(enclosinghandler, NULL);