Changes in src/InitTweak/FixInit.cc [597db97f:a4dd728]
- File:
-
- 1 edited
-
src/InitTweak/FixInit.cc (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/InitTweak/FixInit.cc
r597db97f ra4dd728 738 738 stmtsToAddAfter.push_back( ifStmt ); 739 739 740 if ( ctorInit->get_dtor() ) { 740 Statement * dtor = ctorInit->get_dtor(); 741 objDecl->set_init( NULL ); 742 ctorInit->set_ctor( NULL ); 743 ctorInit->set_dtor( nullptr ); 744 if ( dtor ) { 741 745 // if the object has a non-trivial destructor, have to 742 746 // hoist it and the object into the global space and 743 747 // call the destructor function with atexit. 744 748 745 Statement * dtorStmt = ctorInit->get_dtor()->clone();749 Statement * dtorStmt = dtor->clone(); 746 750 747 751 // void __objName_dtor_atexitN(...) {...} … … 772 776 objDecl->set_mangleName( SymTab::Mangler::mangle( objDecl ) ); 773 777 774 objDecl->set_init( NULL );775 ctorInit->set_ctor( NULL );776 delete ctorInit;777 778 778 // xxx - temporary hack: need to return a declaration, but want to hoist the current object out of this scope 779 779 // create a new object which is never used 780 780 static UniqueName dummyNamer( "_dummy" ); 781 781 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") } ); 782 delete ctorInit; 782 783 return dummy; 783 784 }
Note:
See TracChangeset
for help on using the changeset viewer.