Changes in src/InitTweak/FixInit.cc [a4dd728:597db97f]
- File:
-
- 1 edited
-
src/InitTweak/FixInit.cc (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/InitTweak/FixInit.cc
ra4dd728 r597db97f 738 738 stmtsToAddAfter.push_back( ifStmt ); 739 739 740 Statement * dtor = ctorInit->get_dtor(); 741 objDecl->set_init( NULL ); 742 ctorInit->set_ctor( NULL ); 743 ctorInit->set_dtor( nullptr ); 744 if ( dtor ) { 740 if ( ctorInit->get_dtor() ) { 745 741 // if the object has a non-trivial destructor, have to 746 742 // hoist it and the object into the global space and 747 743 // call the destructor function with atexit. 748 744 749 Statement * dtorStmt = dtor->clone();745 Statement * dtorStmt = ctorInit->get_dtor()->clone(); 750 746 751 747 // void __objName_dtor_atexitN(...) {...} … … 776 772 objDecl->set_mangleName( SymTab::Mangler::mangle( objDecl ) ); 777 773 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;783 782 return dummy; 784 783 }
Note:
See TracChangeset
for help on using the changeset viewer.