diff gen/statements.cpp @ 1024:9167d492cbc2

Abstracted more (most) ABI details out of the normal codegen.
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Tue, 03 Mar 2009 02:51:21 +0100
parents 8c73ff5f69e0
children 45af482e3832
line wrap: on
line diff
--- a/gen/statements.cpp	Sun Mar 01 22:40:15 2009 +0100
+++ b/gen/statements.cpp	Tue Mar 03 02:51:21 2009 +0100
@@ -63,7 +63,6 @@
         {
             // sanity check
             IrFunction* f = p->func();
-            assert(f->type->retInPtr);
             assert(f->decl->ir.irFunc->retArg);
 
             // emit dbg line
@@ -94,7 +93,7 @@
             delete e;
 
             // do abi specific transformations on the return value
-            v = gABI->putRet(p->func()->type, v);
+            v = p->func()->type->fty->putRet(exp->type, v);
 
             if (Logger::enabled())
                 Logger::cout() << "return value is '" <<*v << "'\n";
@@ -111,7 +110,7 @@
                     v = llvm::Constant::getNullValue(p->mainFunc->getReturnType());
                 else
                     v = gIR->ir->CreateBitCast(v, p->topfunc()->getReturnType(), "tmp");
-                
+
                 if (Logger::enabled())
                     Logger::cout() << "return value after cast: " << *v << '\n';
             }