Changeset 71f4e4f for src/InitTweak/RemoveInit.cc
- Timestamp:
- Jan 13, 2016, 5:19:47 PM (9 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- f1e012b
- Parents:
- 02c7d04
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/InitTweak/RemoveInit.cc
r02c7d04 r71f4e4f 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Rob Schluntz 12 // Last Modified On : Mon Jan 11 16:10:45 201613 // Update Count : 15 012 // Last Modified On : Wed Jan 13 15:19:35 2016 13 // Update Count : 154 14 14 // 15 15 … … 148 148 } 149 149 150 Expr Stmt * makeCtorDtorStmt( std::string name, ObjectDecl * objDecl, std::list< Expression * > args ) {150 Expression * makeCtorDtorExpr( std::string name, ObjectDecl * objDecl, std::list< Expression * > args ) { 151 151 UntypedExpr * expr = new UntypedExpr( new NameExpr( name ) ); 152 152 expr->get_args().push_back( new AddressExpr( new VariableExpr( objDecl ) ) ); 153 153 expr->get_args().splice( expr->get_args().end(), args ); 154 return new ExprStmt( noLabels, expr );154 return expr; 155 155 } 156 156 … … 186 186 // hands off if designated or if @= 187 187 if ( tryConstruct( objDecl ) ) { 188 ExprStmt * ctor = makeCtorDtorStmt( "?{}", objDecl, makeInitList( objDecl->get_init() ) ); 189 ExprStmt * dtor = makeCtorDtorStmt( "^?{}", objDecl, std::list< Expression * >() ); 190 191 // set_ctor... 188 Expression * ctor = makeCtorDtorExpr( "?{}", objDecl, makeInitList( objDecl->get_init() ) ); 189 Expression * dtor = makeCtorDtorExpr( "^?{}", objDecl, std::list< Expression * >() ); 190 192 191 // need to remember init expression, in case no ctors exist 193 // if ctor does exist, want to use ctor stmt instead of init 194 objDecl->set_ctor( ctor ); 195 destructorStmts.push_front( dtor ); 192 // if ctor does exist, want to use ctor expression instead of init 193 // push this decision to the resolver 194 objDecl->set_init( new ConstructorInit( ctor, objDecl->get_init() ) ); 195 destructorStmts.push_front( new ExprStmt( noLabels, dtor ) ); 196 196 } 197 197 return objDecl;
Note: See TracChangeset
for help on using the changeset viewer.