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