Changeset a32b204 for translator/InitTweak
- Timestamp:
- May 17, 2015, 1:19:35 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, string, with_gc
- Children:
- 0dd3a2f
- Parents:
- b87a5ed
- Location:
- translator/InitTweak
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
translator/InitTweak/Association.h
rb87a5ed ra32b204 70 70 71 71 virtual long int add_single( long int idx, Expression *newExpr) { 72 if ( expr == 0 ) //|| *expr == *newExpr )72 if ( expr == 0 ) //|| *expr == *newExpr ) 73 73 expr = newExpr; 74 74 return 0; … … 76 76 77 77 virtual long int add_single( std::string str, Expression *newExpr) { 78 if ( expr == 0 ) //|| *expr == *newExpr )78 if ( expr == 0 ) //|| *expr == *newExpr ) 79 79 expr = newExpr; 80 80 return 0; … … 114 114 long int ret; 115 115 116 if ( idx >= (long int)ordering.size() ) throw AssocException("extra (spurious) members");116 if ( idx >= (long int)ordering.size() ) throw AssocException("extra (spurious) members"); 117 117 118 118 if ( ordering[ idx ] == "") … … 127 127 128 128 virtual long int add_single( std::string idx, Expression *expr) { 129 if ( idx == "" )129 if ( idx == "" ) 130 130 std::cerr << "Checkpoint 1" << std::endl; 131 131 else { … … 143 143 if ( table.find( str ) != table.end() ) return; 144 144 ordering.push_back( str ); 145 if ( str != "" ) {145 if ( str != "" ) { 146 146 std::pair<long int, Association *> p( ordering.size() - 1, 0 ); 147 147 table.insert( std::pair< std::string, std::pair<long int, Association *> >(str, p) ); … … 151 151 152 152 virtual void set_member( std::string str, Association *assoc ) { 153 if ( str == "" )153 if ( str == "" ) 154 154 anonym.push_back( assoc ); 155 155 else if ( table.find( str ) == table.end() ) … … 162 162 163 163 virtual Association *operator[]( int idx ) { 164 if ( ordering[idx] == "" ) {164 if ( ordering[idx] == "" ) { 165 165 std::cerr << "Error, anonymous members not implemented yet" << std::endl; 166 166 throw 0; … … 187 187 virtual void display( std::ostream &os ) { 188 188 os << "Point association: " << std::endl; 189 for ( map_type::iterator i = table.begin(); i != table.end(); i++ ) {189 for ( map_type::iterator i = table.begin(); i != table.end(); i++ ) { 190 190 os << "Member [" << i->first << ", index = " << i->second.first << "]"; 191 191 if ( i->second.second != 0 ) … … 244 244 diet::diet_tree<int> tree; 245 245 /* 246 for ( diet_tree<int>::iterator i = tree.begin(); i != tree.end(); i++ )246 for ( diet_tree<int>::iterator i = tree.begin(); i != tree.end(); i++ ) 247 247 std::cout << "--(" << (*i).first << ", " << (*i).second << ")--" << std::endl; 248 248 diet_tree<int> tree; -
translator/InitTweak/BasicInit.cc
rb87a5ed ra32b204 50 50 ObjectDecl *odecl = 0; 51 51 52 if ( ( odecl = dynamic_cast<ObjectDecl *>(declStmt->get_decl()) ) != 0 ){52 if ( ( odecl = dynamic_cast<ObjectDecl *>(declStmt->get_decl()) ) != 0 ){ 53 53 54 54 Initializer *init = odecl->get_init(); … … 133 133 134 134 ReferenceToType *reftype; 135 if ( (reftype = dynamic_cast< StructInstType * >( objdecl->get_type() )) != 0 ){135 if ( (reftype = dynamic_cast< StructInstType * >( objdecl->get_type() )) != 0 ){ 136 136 StructDecl *strDecl = index->lookupStruct( reftype->get_name() ); 137 137 if ( strDecl != 0 ) { … … 169 169 170 170 if ( li != 0 ) { 171 for ( std::list<Initializer *>::iterator i = li->begin_initializers();171 for ( std::list<Initializer *>::iterator i = li->begin_initializers(); 172 172 i != li->end_initializers(); 173 173 i++) { … … 181 181 std::back_inserter( des ), cast_ptr<Expression, NameExpr > ); 182 182 183 for ( std::list<NameExpr *>::iterator j = des.begin(); j != des.end(); j++ ) {183 for ( std::list<NameExpr *>::iterator j = des.begin(); j != des.end(); j++ ) { 184 184 // check for existence of the element 185 185 … … 230 230 if ( col->isComposite() ) { 231 231 VariousNames *vc = dynamic_cast< VariousNames * >( col ); 232 for ( VariousNames::key_iterator it = vc->keys_begin(); it != vc->keys_end(); it++ ) {232 for ( VariousNames::key_iterator it = vc->keys_begin(); it != vc->keys_end(); it++ ) { 233 233 prefix.push_back( *it ); 234 234 if ( (*assoc)[ *it ] != 0 ) -
translator/InitTweak/BasicInit.h
rb87a5ed ra32b204 102 102 std::list<Expression *> temp; 103 103 104 if ( ( sinit=dynamic_cast< SingleInit * >(_init) ) != 0 ) {104 if ( ( sinit=dynamic_cast< SingleInit * >(_init) ) != 0 ) { 105 105 kind = SINGLE; 106 106 temp = sinit->get_designators(); … … 179 179 blown_struct.push_front( me->get_member() ); 180 180 prfx = me->get_aggregate(); 181 } while ( prfx != 0 );181 } while ( prfx != 0 ); 182 182 183 183 NameExpr *ne; -
translator/InitTweak/DeclarationHoister.cc
rb87a5ed ra32b204 24 24 25 25 while ( result != kids.end() ) { 26 result = std::find_if (result, kids.end(), cast_ptr< Statement, DeclStmt > );26 result = std::find_if (result, kids.end(), cast_ptr< Statement, DeclStmt > ); 27 27 28 28 if ( result != kids.end() ) { … … 32 32 } 33 33 34 for ( std::list< stmt_it >::reverse_iterator i = decls.rbegin(); i!= decls.rend(); i++ ){34 for ( std::list< stmt_it >::reverse_iterator i = decls.rbegin(); i!= decls.rend(); i++ ){ 35 35 kids.push_front( **i ); 36 36 kids.erase( *i ); -
translator/InitTweak/InitExpander.cc
rb87a5ed ra32b204 18 18 index.visit( objectDecl ); 19 19 20 if ( objectDecl->get_init() == 0 ) return objectDecl;20 if ( objectDecl->get_init() == 0 ) return objectDecl; 21 21 22 22 InitModelBuilder builder( objectDecl ); -
translator/InitTweak/InitModel.cc
rb87a5ed ra32b204 16 16 17 17 /* this to be replaced by dynamic dispatch */ 18 if ( dynamic_cast< BasicType * >(objectType) != 0 ) {19 if ( building == 0 ) building = new SingleName;20 } else if ( ReferenceToType *rt = dynamic_cast< ReferenceToType * >(objectType) ) {18 if ( dynamic_cast< BasicType * >(objectType) != 0 ) { 19 if ( building == 0 ) building = new SingleName; 20 } else if ( ReferenceToType *rt = dynamic_cast< ReferenceToType * >(objectType) ) { 21 21 rt->accept( *this ); 22 } else if ( ArrayType *at = dynamic_cast< ArrayType * >(objectType) ) {22 } else if ( ArrayType *at = dynamic_cast< ArrayType * >(objectType) ) { 23 23 at->accept( *this ); 24 24 } else // if (tuples) … … 28 28 } 29 29 30 InitModelBuilder::~InitModelBuilder() { if ( !taken ) { delete building; building = 0; } }30 InitModelBuilder::~InitModelBuilder() { if ( ! taken ) { delete building; building = 0; } } 31 31 32 32 void InitModelBuilder::init() { … … 37 37 // Visitor interface 38 38 void InitModelBuilder::visit( ArrayType *at ) { 39 if ( building == 0 ) building = new RangeAssociation(interpretDimension( at->get_dimension() ));39 if ( building == 0 ) building = new RangeAssociation(interpretDimension( at->get_dimension() )); 40 40 decl = 0; 41 41 return; … … 43 43 44 44 void InitModelBuilder::visit( StructInstType *st ) { 45 if ( building == 0 ) building = new PointAssociation;45 if ( building == 0 ) building = new PointAssociation; 46 46 decl = st->get_baseStruct(); 47 47 return; … … 59 59 std::list< Declaration * > mem = aggregateDecl->get_members(); 60 60 61 for ( std::list<Declaration *>::iterator i = mem.begin(); i != mem.end(); i++ ) {61 for ( std::list<Declaration *>::iterator i = mem.begin(); i != mem.end(); i++ ) { 62 62 pa->add_member( (*i)->get_name() ); 63 63 InitModelBuilder rec(*i); … … 76 76 assert (c != 0); 77 77 if ( BasicType *bt = dynamic_cast<BasicType *>( c->get_type() ) ) { 78 if ( bt->isInteger() ) {78 if ( bt->isInteger() ) { 79 79 // need more intelligence here, not necessarily base 10 80 80 value = std::strtol( c->get_value().c_str(), NULL, 10 ); … … 102 102 std::list< Expression *> &des = singleInit->get_designators(); 103 103 104 if ( topLevel ) {104 if ( topLevel ) { 105 105 assert ( des.empty() ); 106 106 assert ( dynamic_cast< SingleName * >(model) != 0 ); … … 113 113 } 114 114 115 if ( des.empty() ) {115 if ( des.empty() ) { 116 116 assert( model != 0 ); 117 117 try { … … 160 160 for ( std::list<Expression *>::iterator i = des2.begin(); i != des2.end(); i++ ) { 161 161 Association * newModel = 0; 162 if ( NameExpr *n = dynamic_cast< NameExpr * >( *i ) )162 if ( NameExpr *n = dynamic_cast< NameExpr * >( *i ) ) 163 163 try { 164 164 newModel = (*model)[ n->get_name() ]; … … 166 166 std::cerr << "Didn't find member: " << e.get_what() << std::endl; 167 167 } 168 else // if ( RangeExpr *r = dynamic_cast< RangeExpr * >( *i ) )168 else // if ( RangeExpr *r = dynamic_cast< RangeExpr * >( *i ) ) 169 169 std::cerr << "Invalid designator specification" << std::endl; 170 170 … … 193 193 194 194 std::list< Initializer * > contents; 195 for ( int i = 0; i < pa->size(); i++ )195 for ( int i = 0; i < pa->size(); i++ ) 196 196 if ( (*pa)[i] != 0 ) { 197 197 InitUnspooler rec; -
translator/InitTweak/InitModel.h
rb87a5ed ra32b204 92 92 public: 93 93 InitUnspooler() : init(0), taken( false ) {} 94 virtual ~InitUnspooler() { if (! taken && (init != 0)) { delete init; init = 0; } }94 virtual ~InitUnspooler() { if (! taken && (init != 0)) { delete init; init = 0; } } 95 95 Initializer *get_initializer() { return init; } 96 96 Initializer *grab_initializer() { taken = true; return init; } -
translator/InitTweak/RemoveInit.cc
rb87a5ed ra32b204 19 19 20 20 void RemoveInit::mutateStatementList( std::list< Statement* > &statements ) { 21 for ( std::list< Statement* >::iterator i = statements.begin(); i != statements.end(); ++i ) {22 if ( !stmtsToAddAfter.empty() ) {21 for ( std::list< Statement* >::iterator i = statements.begin(); i != statements.end(); ++i ) { 22 if ( ! stmtsToAddAfter.empty() ) { 23 23 statements.splice( i, stmtsToAddAfter ); 24 24 } 25 25 *i = (*i)->acceptMutator( *this ); 26 26 } 27 if ( !stmtsToAddAfter.empty() ) {27 if ( ! stmtsToAddAfter.empty() ) { 28 28 statements.splice( statements.end(), stmtsToAddAfter ); 29 29 } -
translator/InitTweak/diet_map.h
rb87a5ed ra32b204 34 34 diet_tree() : root(0), left(0), right(0) {} 35 35 ~diet_tree() { 36 if ( root != 0 ) { delete root; root = 0; }37 if ( left != 0 ) { delete left; left = 0; }38 if ( right != 0 ) { delete right; right = 0; }36 if ( root != 0 ) { delete root; root = 0; } 37 if ( left != 0 ) { delete left; left = 0; } 38 if ( right != 0 ) { delete right; right = 0; } 39 39 } 40 40 … … 45 45 else { 46 46 value_type lo = root->get_lo(), hi = root->get_hi(); 47 if ( _lo < lo ) {48 if ( _hi > hi ) {47 if ( _lo < lo ) { 48 if ( _hi > hi ) { 49 49 /* can either minimize the work or minimize the number of nodes. 50 50 Let's minimize the work. */ … … 54 54 right->insert( _hi, hi ); 55 55 return; 56 } else if ( _hi < lo ) {56 } else if ( _hi < lo ) { 57 57 if ( left == 0 ) left = new diet_tree<T>(); 58 58 left->insert( _lo, _hi ); 59 } else if ( _hi <= hi ) {59 } else if ( _hi <= hi ) { 60 60 if ( left == 0 ) left = new diet_tree<T>(); 61 61 left->insert( _lo, _hi ); … … 65 65 root->set_range(_lo,_hi); 66 66 } else if ( _hi > hi) { 67 if ( _lo > hi ) {67 if ( _lo > hi ) { 68 68 if ( right == 0 ) right = new diet_tree<T>(); 69 69 right->insert( _lo, _hi ); 70 } else if ( _lo < hi ) {70 } else if ( _lo < hi ) { 71 71 root->set_range(lo, _lo); 72 72 if ( right == 0 ) right = new diet_tree<T>(); … … 152 152 assert(current != 0); 153 153 if ( current->right == 0 ) 154 if ( ! st.empty() )154 if ( ! st.empty() ) 155 155 { current = st.top(); st.pop(); } 156 156 else … … 173 173 assert(current != 0); 174 174 diet_tree<T> *next = 0; 175 while ( current->left != 0 ) {175 while ( current->left != 0 ) { 176 176 next = current->left; st.push( current ); current = next; 177 177 }
Note: See TracChangeset
for help on using the changeset viewer.