- Timestamp:
 - Oct 29, 2020, 5:21:03 PM (5 years ago)
 - Branches:
 - ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
 - Children:
 - 45444c3, 4ae78c1
 - Parents:
 - c6c682cf
 - File:
 - 
      
- 1 edited
 
- 
          
  src/GenPoly/Specialize.cc (modified) (2 diffs)
 
 
Legend:
- Unmodified
 - Added
 - Removed
 
- 
      
src/GenPoly/Specialize.cc
rc6c682cf r3100754 218 218 thunkFunc->get_attributes().push_back( new Attribute( "unused" ) ); 219 219 220 // Thunks at the global level must be static to avoid collisions between files. 221 // (Conversly thunks inside a function must be unique and not static.) 222 thunkFunc->storageClasses.is_static = !isInFunction(); 223 220 224 // thread thunk parameters into call to actual function, naming thunk parameters as we go 221 225 UniqueName paramNamer( paramPrefix ); … … 321 325 } 322 326 323 // Fold it into Specialize if we find a good way.324 struct StaticThunks final : public WithShortCircuiting {325 void previsit( Declaration * ) {326 visit_children = false;327 }328 void postvisit( FunctionDecl * decl ) {329 if ( isPrefix( decl->name, "_thunk" ) ) {330 decl->storageClasses.is_static = true;331 }332 }333 };334 335 327 void convertSpecializations( std::list< Declaration* >& translationUnit ) { 336 328 PassVisitor<Specialize> spec; 337 329 mutateAll( translationUnit, spec ); 338 PassVisitor<StaticThunks> staticThunks;339 acceptAll( translationUnit, staticThunks );340 330 } 341 331 } // namespace GenPoly  
  Note:
 See   TracChangeset
 for help on using the changeset viewer.