Changes in src/CodeGen/CodeGenerator.cc [85b2300:13073be]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/CodeGen/CodeGenerator.cc
r85b2300 r13073be 133 133 output << "__attribute__ (("; 134 134 for ( list< Attribute * >::iterator attr( attributes.begin() );; ) { 135 output << (*attr)-> name;136 if ( ! (*attr)-> parameters.empty() ) {135 output << (*attr)->get_name(); 136 if ( ! (*attr)->get_parameters().empty() ) { 137 137 output << "("; 138 genCommaList( (*attr)-> parameters.begin(), (*attr)->parameters.end() );138 genCommaList( (*attr)->get_parameters().begin(), (*attr)->get_parameters().end() ); 139 139 output << ")"; 140 140 } // if … … 172 172 // *** Declarations 173 173 void CodeGenerator::postvisit( FunctionDecl * functionDecl ) { 174 // deleted decls should never be used, so don't print them175 if ( functionDecl->isDeleted && genC ) return;176 174 extension( functionDecl ); 177 175 genAttributes( functionDecl->get_attributes() ); … … 187 185 functionDecl->get_statements()->accept( *visitor ); 188 186 } // if 189 if ( functionDecl->isDeleted ) {190 output << " = void";191 }192 187 } 193 188 194 189 void CodeGenerator::postvisit( ObjectDecl * objectDecl ) { 195 // deleted decls should never be used, so don't print them196 if ( objectDecl->isDeleted && genC ) return;197 190 if (objectDecl->get_name().empty() && genC ) { 198 191 // only generate an anonymous name when generating C code, otherwise it clutters the output too much … … 213 206 objectDecl->get_init()->accept( *visitor ); 214 207 } // if 215 if ( objectDecl->isDeleted ) {216 output << " = void";217 }218 208 219 209 if ( objectDecl->get_bitfieldWidth() ) { … … 837 827 expr->expr->accept( *visitor ); 838 828 } 839 840 void CodeGenerator::postvisit( DefaultArgExpr * arg ) {841 assertf( ! genC, "Default argument expressions should not reach code generation." );842 arg->expr->accept( *visitor );843 }844 845 void CodeGenerator::postvisit( GenericExpr * expr ) {846 assertf( ! genC, "C11 _Generic expressions should not reach code generation." );847 output << "_Generic(";848 expr->control->accept( *visitor );849 output << ", ";850 unsigned int numAssocs = expr->associations.size();851 unsigned int i = 0;852 for ( GenericExpr::Association & assoc : expr->associations ) {853 if (assoc.isDefault) {854 output << "default: ";855 } else {856 output << genType( assoc.type, "", pretty, genC ) << ": ";857 }858 assoc.expr->accept( *visitor );859 if ( i+1 != numAssocs ) {860 output << ", ";861 }862 i++;863 }864 output << ")";865 }866 867 829 868 830 // *** Statements
Note:
See TracChangeset
for help on using the changeset viewer.