changeset 1263:4fc43e173a0f

Merge
author Tomas Lindquist Olsen <tomas.l.olsen gmail com>
date Sat, 25 Apr 2009 18:27:11 +0200
parents ec1d9dc1d32a (current diff) 854e86eaa022 (diff)
children 7ffac0079d08
files ir/irclass.cpp
diffstat 6 files changed, 13 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/dmd/expression.c	Sat Apr 25 18:26:54 2009 +0200
+++ b/dmd/expression.c	Sat Apr 25 18:27:11 2009 +0200
@@ -5800,7 +5800,10 @@
     id = ti->name;
     s2 = s->search(loc, id, 0);
     if (!s2)
-    {	error("template identifier %s is not a member of %s %s", id->toChars(), s->kind(), s->ident->toChars());
+    {	if (s->ident)
+	    error("template identifier %s is not a member of %s %s", id->toChars(), s->kind(), s->ident->toChars());
+	else
+	    error("template identifier %s is not a member of %s", id->toChars(), s->kind());
 	goto Lerr;
     }
     s = s2;
--- a/dmd/parse.c	Sat Apr 25 18:26:54 2009 +0200
+++ b/dmd/parse.c	Sat Apr 25 18:27:11 2009 +0200
@@ -1640,7 +1640,7 @@
 	    nextToken();
 	}
 
-	s = new Import(loc, a, token.ident, aliasid, isstatic);
+	s = new Import(loc, a, id, aliasid, isstatic);
 	decldefs->push(s);
 
 	/* Look for
--- a/gen/abi-x86-64.cpp	Sat Apr 25 18:26:54 2009 +0200
+++ b/gen/abi-x86-64.cpp	Sat Apr 25 18:27:11 2009 +0200
@@ -43,6 +43,7 @@
 #include "gen/llvmhelpers.h"
 #include "gen/abi.h"
 #include "gen/abi-x86-64.h"
+//#include "gen/llvm-version.h"         // only use is commented out.
 #include "ir/irfunction.h"
 
 #include <cassert>
@@ -401,6 +402,8 @@
         // 'fastcc' allows returns in up to two registers of each kind:
         DRegCount state(2, 2, 2);
     #if 1 //LLVM_REV < 67588
+        // (If uncommenting the LLVM_REV line above, also uncomment llvm-version #include
+        
         // LLVM before trunk r67588 doesn't allow a second int to be an i1 or
         // i8. (See <http://llvm.org/PR3861>)
         // Rather than complicating shouldPassStructInRegs(), just disallow
--- a/gen/functions.cpp	Sat Apr 25 18:26:54 2009 +0200
+++ b/gen/functions.cpp	Sat Apr 25 18:27:11 2009 +0200
@@ -386,11 +386,8 @@
     Logger::println("DtoResolveFunction(%s): %s", fdecl->toPrettyChars(), fdecl->loc.toChars());
     LOG_SCOPE;
 
-    // queue declaration unless the function is abstract without body;
-    // bodyless functions in an abstract class are considered abstract
-    ClassDeclaration* cd = fdecl->isMember() ? fdecl->isMember()->isClassDeclaration() : NULL;
-    bool isabstract = fdecl->isAbstract() || (cd && cd->isAbstract());
-    if (!isabstract || fdecl->fbody)
+    // queue declaration unless the function is abstract without body
+    if (!fdecl->isAbstract() || fdecl->fbody)
     {
         DtoDeclareFunction(fdecl);
     }
--- a/gen/main.cpp	Sat Apr 25 18:26:54 2009 +0200
+++ b/gen/main.cpp	Sat Apr 25 18:27:11 2009 +0200
@@ -36,6 +36,7 @@
 #include "gen/linker.h"
 #include "gen/irstate.h"
 #include "gen/toobj.h"
+#include "gen/llvm-version.h"
 
 #include "gen/cl_options.h"
 #include "gen/cl_helpers.h"
--- a/ir/irclass.cpp	Sat Apr 25 18:26:54 2009 +0200
+++ b/ir/irclass.cpp	Sat Apr 25 18:27:11 2009 +0200
@@ -132,7 +132,7 @@
         FuncDeclaration* fd = dsym->isFuncDeclaration();
         assert(fd && "vtbl entry not a function");
 
-        if ((cd->isAbstract() || fd->isAbstract()) && !fd->fbody)
+        if (fd->isAbstract() && !fd->fbody)
         {
             c = getNullValue(DtoType(fd->type->pointerTo()));
         }
@@ -332,7 +332,7 @@
         FuncDeclaration* fd = dsym->isFuncDeclaration();
         assert(fd && "vtbl entry not a function");
 
-        assert(!((fd->isAbstract() || cd->isAbstract()) && !fd->fbody) &&
+        assert((!fd->isAbstract() || fd->fbody) &&
             "null symbol in interface implementation vtable");
 
         fd->codegen(Type::sir);