Mercurial > projects > ldc
comparison 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 |
comparison
equal
deleted
inserted
replaced
609:2cf4359d344f | 610:1b62222581fb |
---|---|
79 DValue* e = exp->toElem(p); | 79 DValue* e = exp->toElem(p); |
80 LLValue* v = e->getRVal(); | 80 LLValue* v = e->getRVal(); |
81 delete e; | 81 delete e; |
82 Logger::cout() << "return value is '" <<*v << "'\n"; | 82 Logger::cout() << "return value is '" <<*v << "'\n"; |
83 | 83 |
84 // can happen for classes | |
85 if (v->getType() != p->topfunc()->getReturnType()) | 84 if (v->getType() != p->topfunc()->getReturnType()) |
86 { | 85 { |
87 v = gIR->ir->CreateBitCast(v, p->topfunc()->getReturnType(), "tmp"); | 86 // can happen for classes |
88 Logger::cout() << "return value after cast: " << *v << '\n'; | 87 if(isaPointer(v) && isaPointer(p->topfunc()->getReturnType())) |
88 v = gIR->ir->CreateBitCast(v, p->topfunc()->getReturnType(), "tmp"); | |
89 // or for i1 vs i8 bools | |
90 if(v->getType() == LLType::Int1Ty && p->topfunc()->getReturnType() == LLType::Int8Ty) | |
91 v = gIR->ir->CreateZExt(v, LLType::Int8Ty); | |
92 Logger::cout() << "adjusted return value: " << *v << '\n'; | |
89 } | 93 } |
90 | 94 |
91 DtoEnclosingHandlers(enclosinghandler, NULL); | 95 DtoEnclosingHandlers(enclosinghandler, NULL); |
92 | 96 |
93 if (global.params.symdebug) DtoDwarfFuncEnd(p->func()->decl); | 97 if (global.params.symdebug) DtoDwarfFuncEnd(p->func()->decl); |