Changes in src/GenPoly/Specialize.cc [0f8e4ac:d3b7937]
- File:
-
- 1 edited
-
src/GenPoly/Specialize.cc (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/GenPoly/Specialize.cc
r0f8e4ac rd3b7937 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Rob Schluntz 12 // Last Modified On : Thu Apr 28 15:17:45201613 // Update Count : 2412 // Last Modified On : Wed Jan 20 12:40:33 2016 13 // Update Count : 18 14 14 // 15 15 … … 25 25 #include "SynTree/Statement.h" 26 26 #include "SynTree/Type.h" 27 #include "SynTree/Attribute.h"28 27 #include "SynTree/TypeSubstitution.h" 29 28 #include "SynTree/Mutator.h" … … 42 41 virtual Expression * mutate( AddressExpr *castExpr ); 43 42 virtual Expression * mutate( CastExpr *castExpr ); 44 //virtual Expression * mutate( LogicalExpr *logicalExpr );45 //virtual Expression * mutate( ConditionalExpr *conditionalExpr );46 //virtual Expression * mutate( CommaExpr *commaExpr );43 virtual Expression * mutate( LogicalExpr *logicalExpr ); 44 virtual Expression * mutate( ConditionalExpr *conditionalExpr ); 45 virtual Expression * mutate( CommaExpr *commaExpr ); 47 46 48 47 private: … … 99 98 } // if 100 99 // create new thunk with same signature as formal type (C linkage, empty body) 101 FunctionDecl *thunkFunc = new FunctionDecl( thunkNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, newType, new CompoundStmt( noLabels), false, false );100 FunctionDecl *thunkFunc = new FunctionDecl( thunkNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, newType, new CompoundStmt( std::list< std::string >() ), false, false ); 102 101 thunkFunc->fixUniqueId(); 103 104 // thunks may be generated and not used - silence warning with attribute105 thunkFunc->get_attributes().push_back( new Attribute( "unused" ) );106 102 107 103 // thread thunk parameters into call to actual function, naming thunk parameters as we go … … 146 142 147 143 Expression * Specialize::doSpecialization( Type *formalType, Expression *actual, InferredParams *inferParams ) { 148 assert( ! actual->get_results().empty() ); // using front, should have this assert144 assert( ! actual->get_results().empty() ); 149 145 if ( needsSpecialization( formalType, actual->get_results().front(), env ) ) { 150 146 FunctionType *funType; … … 216 212 } 217 213 218 // Removing these for now. Richard put these in for some reason, but it's not clear why. 219 // In particular, copy constructors produce a comma expression, and with this code the parts 220 // of that comma expression are not specialized, which causes problems. 221 222 // Expression * Specialize::mutate( LogicalExpr *logicalExpr ) { 223 // return logicalExpr; 224 // } 225 226 // Expression * Specialize::mutate( ConditionalExpr *condExpr ) { 227 // return condExpr; 228 // } 229 230 // Expression * Specialize::mutate( CommaExpr *commaExpr ) { 231 // return commaExpr; 232 // } 214 Expression * Specialize::mutate( LogicalExpr *logicalExpr ) { 215 return logicalExpr; 216 } 217 218 Expression * Specialize::mutate( ConditionalExpr *condExpr ) { 219 return condExpr; 220 } 221 222 Expression * Specialize::mutate( CommaExpr *commaExpr ) { 223 return commaExpr; 224 } 233 225 } // namespace GenPoly 234 226
Note:
See TracChangeset
for help on using the changeset viewer.