changeset 327:781af50846b2 trunk

[svn r348] Switch on class invariants (except in release mode). Generate correct member for classInvariant in classinfo struct.
author ChristianK
date Thu, 10 Jul 2008 22:00:27 +0200
parents d7e42b5d8ccd
children 7086a84ab3d6
files dmd/mars.c gen/classes.cpp
diffstat 2 files changed, 9 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/dmd/mars.c	Thu Jul 10 21:29:15 2008 +0200
+++ b/dmd/mars.c	Thu Jul 10 22:00:27 2008 +0200
@@ -260,7 +260,7 @@
     global.params.argv0 = argv[0];
     global.params.link = 1;
     global.params.useAssert = 0;
-    global.params.useInvariants = 0;
+    global.params.useInvariants = 1;
     global.params.useIn = 1;
     global.params.useOut = 1;
     global.params.useArrayBounds = 0;
--- a/gen/classes.cpp	Thu Jul 10 21:29:15 2008 +0200
+++ b/gen/classes.cpp	Thu Jul 10 22:00:27 2008 +0200
@@ -1553,8 +1553,14 @@
     inits.push_back(c);
 
     // invariant
-    // TODO
-    c = defc->getOperand(8);
+    if (cd->inv) {
+        DtoForceDeclareDsymbol(cd->inv);
+        c = cd->inv->ir.irFunc->func;
+//        c = llvm::ConstantExpr::getBitCast(c, defc->getOperand(8)->getType());
+    }
+    else {
+        c = defc->getOperand(8);
+    }
     inits.push_back(c);
 
     // uint flags