Mercurial > projects > ldc
comparison gen/statements.cpp @ 611:83ca663ecc20
Backed out changeset 1b62222581fb
Do not use i8 for bool. Instead rely on the target to store i1 as i8.
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Sun, 21 Sep 2008 14:45:41 +0200 |
parents | 1b62222581fb |
children | 26fce59fe80a |
comparison
equal
deleted
inserted
replaced
610:1b62222581fb | 611:83ca663ecc20 |
---|---|
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 | |
84 if (v->getType() != p->topfunc()->getReturnType()) | 85 if (v->getType() != p->topfunc()->getReturnType()) |
85 { | 86 { |
86 // can happen for classes | 87 v = gIR->ir->CreateBitCast(v, p->topfunc()->getReturnType(), "tmp"); |
87 if(isaPointer(v) && isaPointer(p->topfunc()->getReturnType())) | 88 Logger::cout() << "return value after cast: " << *v << '\n'; |
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'; | |
93 } | 89 } |
94 | 90 |
95 DtoEnclosingHandlers(enclosinghandler, NULL); | 91 DtoEnclosingHandlers(enclosinghandler, NULL); |
96 | 92 |
97 if (global.params.symdebug) DtoDwarfFuncEnd(p->func()->decl); | 93 if (global.params.symdebug) DtoDwarfFuncEnd(p->func()->decl); |