Ignore:
Timestamp:
Mar 16, 2018, 5:15:02 PM (6 years ago)
Author:
Aaron Moss <a3moss@…>
Branches:
new-env, with_gc
Children:
8d7bef2
Parents:
6171841
git-author:
Aaron Moss <a3moss@…> (03/16/18 17:04:24)
git-committer:
Aaron Moss <a3moss@…> (03/16/18 17:15:02)
Message:

First pass at delete removal

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/InitTweak/FixInit.cc

    r6171841 r68f9c43  
    454454                                resolved->env = nullptr;
    455455                        } // if
    456                         delete stmt;
    457456                        if ( TupleAssignExpr * assign = dynamic_cast< TupleAssignExpr * >( resolved ) ) {
    458457                                // fix newly generated StmtExpr
     
    554553                                result = result->clone();
    555554                                env->apply( result );
    556                                 if ( ! InitTweak::isConstructable( result ) ) {
    557                                         delete result;
    558                                         return;
    559                                 }
     555                                if ( ! InitTweak::isConstructable( result ) ) return;
    560556
    561557                                // create variable that will hold the result of the stmt expr
     
    652648                        std::swap( impCpCtorExpr->env, callExpr->env );
    653649                        assert( impCpCtorExpr->env == nullptr );
    654                         delete impCpCtorExpr;
    655650
    656651                        if ( returnDecl ) {
     
    711706                        if ( unqMap.count( unqExpr->get_id() ) ) {
    712707                                // take data from other UniqueExpr to ensure consistency
    713                                 delete unqExpr->get_expr();
    714708                                unqExpr->set_expr( unqMap[unqExpr->get_id()]->get_expr()->clone() );
    715                                 delete unqExpr->get_result();
    716709                                unqExpr->set_result( maybeClone( unqExpr->get_expr()->get_result() ) );
    717710                                if ( unqCount[ unqExpr->get_id() ] == 0 ) {  // insert destructor after the last use of the unique expression
     
    824817                                                        // create a new object which is never used
    825818                                                        static UniqueName dummyNamer( "_dummy" );
    826                                                         ObjectDecl * dummy = new ObjectDecl( dummyNamer.newName(), Type::StorageClasses( Type::Static ), LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new VoidType( Type::Qualifiers() ) ), 0, std::list< Attribute * >{ new Attribute("unused") } );
    827                                                         delete ctorInit;
    828                                                         return dummy;
     819                                                        return new ObjectDecl{
     820                                                                dummyNamer.newName(), Type::StorageClasses( Type::Static ), LinkageSpec::Cforall, 0,
     821                                                                new PointerType{ Type::Qualifiers(), new VoidType( Type::Qualifiers() ) },
     822                                                                0, std::list< Attribute * >{ new Attribute("unused") } };
    829823                                                }
    830824                                        } else {
     
    852846                                        objDecl->init = nullptr;
    853847                                } // if
    854                                 delete ctorInit;
    855848                        } // if
    856849                        return objDecl;
     
    12281221                        ObjectDecl * tmp = ObjectDecl::newObject( tempNamer.newName(), callExpr->args.front()->result->clone(), nullptr );
    12291222                        declsToAddBefore.push_back( tmp );
    1230                         delete ctorExpr;
    12311223
    12321224                        // build assignment and replace constructor's first argument with new temporary
     
    12371229                        // resolve assignment and dispose of new env
    12381230                        ResolvExpr::findVoidExpression( assign, indexer );
    1239                         delete assign->env;
    12401231                        assign->env = nullptr;
    12411232
Note: See TracChangeset for help on using the changeset viewer.