diff gen/toir.cpp @ 384:3f98d46e05a4

Fixed segfault when using va_arg. Fixed segfault when accessing function symbols from inline asm.
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Wed, 23 Jul 2008 20:21:18 +0200
parents d632801b15f0
children 9ec89aad9dbc
line wrap: on
line diff
--- a/gen/toir.cpp	Wed Jul 23 18:53:44 2008 +0200
+++ b/gen/toir.cpp	Wed Jul 23 20:21:18 2008 +0200
@@ -254,10 +254,12 @@
     else if (FuncDeclaration* fdecl = var->isFuncDeclaration())
     {
         Logger::println("FuncDeclaration");
-        if (fdecl->llvmInternal != LLVMva_arg) {// && fdecl->llvmValue == 0)
+        LLValue* func = 0;
+        if (fdecl->llvmInternal != LLVMva_arg) {
             DtoForceDeclareDsymbol(fdecl);
+            func = fdecl->ir.irFunc->func;
         }
-        return new DFuncValue(fdecl, fdecl->ir.irFunc->func);
+        return new DFuncValue(fdecl, func);
     }
     else if (SymbolDeclaration* sdecl = var->isSymbolDeclaration())
     {