Ignore:
Timestamp:
May 12, 2017, 10:46:51 AM (4 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, deferred_resn, demangler, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, resolv-new, with_gc
Children:
c429ec2
Parents:
64bc131 (diff), f5abbd7 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/InitTweak/FixInit.cc

    r64bc131 r8dac2cc  
    656656                                unqExpr->set_result( maybeClone( unqExpr->get_expr()->get_result() ) );
    657657                                if ( unqCount[ unqExpr->get_id() ] == 0 ) {  // insert destructor after the last use of the unique expression
    658                                         stmtsToAdd.splice( stmtsToAddAfter.end(), dtors[ unqExpr->get_id() ] );
     658                                        stmtsToAddAfter.splice( stmtsToAddAfter.end(), dtors[ unqExpr->get_id() ] );
    659659                                }
    660660                                if ( addDeref.count( unqExpr->get_id() ) ) {
     
    668668                        stmtsToAdd.splice( stmtsToAdd.end(), fixer.stmtsToAdd );
    669669                        unqMap[unqExpr->get_id()] = unqExpr;
     670                        if ( unqCount[ unqExpr->get_id() ] == 0 ) {  // insert destructor after the last use of the unique expression
     671                                stmtsToAddAfter.splice( stmtsToAddAfter.end(), dtors[ unqExpr->get_id() ] );
     672                        } else { // remember dtors for last instance of unique expr
     673                                dtors[ unqExpr->get_id() ] = fixer.stmtsToAddAfter;
     674                        }
    670675                        if ( UntypedExpr * deref = dynamic_cast< UntypedExpr * >( unqExpr->get_expr() ) ) {
    671                                 if ( unqCount[ unqExpr->get_id() ] == 0 ) {  // insert destructor after the last use of the unique expression
    672                                         stmtsToAdd.splice( stmtsToAddAfter.end(), dtors[ unqExpr->get_id() ] );
    673                                 } else { // remember dtors for last instance of unique expr
    674                                         dtors[ unqExpr->get_id() ] = fixer.stmtsToAddAfter;
    675                                 }
    676676                                // unique expression is now a dereference, because the inner expression is an lvalue returning function call.
    677677                                // Normalize the expression by dereferencing the unique expression, rather than the inner expression
Note: See TracChangeset for help on using the changeset viewer.