From bace4dd0e770ab71213e2e958629813288ad891c Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Thu, 10 Jul 2008 22:00:27 +0200 Subject: [PATCH] [svn r348] Switch on class invariants (except in release mode). Generate correct member for classInvariant in classinfo struct. --- dmd/mars.c | 2 +- gen/classes.cpp | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/dmd/mars.c b/dmd/mars.c index d1c1edea..d554ae3a 100644 --- a/dmd/mars.c +++ b/dmd/mars.c @@ -260,7 +260,7 @@ int main(int argc, char *argv[]) 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; diff --git a/gen/classes.cpp b/gen/classes.cpp index ddc53405..a2f1bf32 100644 --- a/gen/classes.cpp +++ b/gen/classes.cpp @@ -1553,8 +1553,14 @@ void DtoDefineClassInfo(ClassDeclaration* cd) 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