Mercurial > projects > ldc
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(); |