diff gen/naked.cpp @ 1153:4454126b4345

Added support for single D type register return from __asm.
author Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
date Sat, 28 Mar 2009 07:24:53 +0100
parents 521dd1626d76
children 9279a9dc6df3
line wrap: on
line diff
--- a/gen/naked.cpp	Sat Mar 28 06:32:06 2009 +0100
+++ b/gen/naked.cpp	Sat Mar 28 07:24:53 2009 +0100
@@ -376,7 +376,8 @@
     }
 
     // build asm function type
-    llvm::FunctionType* FT = llvm::FunctionType::get(llvm::Type::VoidTy, argtypes, false);
+    const llvm::Type* ret_type = DtoType(fd->type->nextOf());
+    llvm::FunctionType* FT = llvm::FunctionType::get(ret_type, argtypes, false);
 
     // build asm call
     bool sideeffect = true;
@@ -384,8 +385,8 @@
 
     llvm::Value* v = gIR->ir->CreateCall(ia, args.begin(), args.end(), "");
 
-    // return NULL for now
-    return NULL;
+    // return call as im value
+    return new DImValue(fd->type->nextOf(), v);
 }