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