comparison gen/toir.cpp @ 554:1b702422451c

Always call finalizer for stack classes. Checking for the number of destructors of the class type is not sufficient: we may be holding a derived class with a destructor. Fixes: run/auto_07
author Christian Kamm <kamm incasoftware de>
date Thu, 28 Aug 2008 20:17:21 +0200
parents d19e29194c13
children aee6217b4084
comparison
equal deleted inserted replaced
553:d19e29194c13 554:1b702422451c
1518 DtoDeleteInterface(dval->getRVal()); 1518 DtoDeleteInterface(dval->getRVal());
1519 onstack = true; 1519 onstack = true;
1520 } 1520 }
1521 else if (DVarValue* vv = dval->isVar()) { 1521 else if (DVarValue* vv = dval->isVar()) {
1522 if (vv->var && vv->var->onstack) { 1522 if (vv->var && vv->var->onstack) {
1523 if (tc->sym->dtors.dim > 0) 1523 DtoFinalizeClass(dval->getRVal());
1524 DtoFinalizeClass(dval->getRVal());
1525 onstack = true; 1524 onstack = true;
1526 } 1525 }
1527 } 1526 }
1528 if (!onstack) { 1527 if (!onstack) {
1529 LLValue* rval = dval->getRVal(); 1528 LLValue* rval = dval->getRVal();