Changeset ae32d96 for src/CodeGen/CodeGenerator.cc
- Timestamp:
- May 30, 2018, 5:57:43 PM (6 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, with_gc
- Children:
- 597c34a3, 6810fcb, 94b1022a, cf5e5b1
- Parents:
- 6b4cdd3 (diff), d15a45d (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/CodeGen/CodeGenerator.cc
r6b4cdd3 rae32d96 172 172 // *** Declarations 173 173 void CodeGenerator::postvisit( FunctionDecl * functionDecl ) { 174 // deleted decls should never be used, so don't print them 175 if ( functionDecl->isDeleted && genC ) return; 174 176 extension( functionDecl ); 175 177 genAttributes( functionDecl->get_attributes() ); … … 185 187 functionDecl->get_statements()->accept( *visitor ); 186 188 } // if 189 if ( functionDecl->isDeleted ) { 190 output << " = void"; 191 } 187 192 } 188 193 189 194 void CodeGenerator::postvisit( ObjectDecl * objectDecl ) { 195 // deleted decls should never be used, so don't print them 196 if ( objectDecl->isDeleted && genC ) return; 190 197 if (objectDecl->get_name().empty() && genC ) { 191 198 // only generate an anonymous name when generating C code, otherwise it clutters the output too much … … 206 213 objectDecl->get_init()->accept( *visitor ); 207 214 } // if 215 if ( objectDecl->isDeleted ) { 216 output << " = void"; 217 } 208 218 209 219 if ( objectDecl->get_bitfieldWidth() ) { … … 827 837 expr->expr->accept( *visitor ); 828 838 } 839 840 void CodeGenerator::postvisit( GenericExpr * expr ) { 841 assertf( ! genC, "C11 _Generic expressions should not reach code generation." ); 842 output << "_Generic("; 843 expr->control->accept( *visitor ); 844 output << ", "; 845 unsigned int numAssocs = expr->associations.size(); 846 unsigned int i = 0; 847 for ( GenericExpr::Association & assoc : expr->associations ) { 848 if (assoc.isDefault) { 849 output << "default: "; 850 } else { 851 output << genType( assoc.type, "", pretty, genC ) << ": "; 852 } 853 assoc.expr->accept( *visitor ); 854 if ( i+1 != numAssocs ) { 855 output << ", "; 856 } 857 i++; 858 } 859 output << ")"; 860 } 861 829 862 830 863 // *** Statements
Note: See TracChangeset
for help on using the changeset viewer.