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);