1 /* { dg-do compile } */ 2 /* { dg-options "-c -O2 -ftree-vectorize -fdump-tree-ifcvt-stats" { target *-*-* } } */ 3 4 struct ht 5 { 6 void * (*alloc_subobject) (int); 7 }; 8 typedef struct cpp_reader cpp_reader; 9 typedef struct cpp_token cpp_token; 10 typedef struct cpp_macro cpp_macro; 11 enum cpp_ttype 12 { 13 CPP_PASTE, 14 }; 15 struct cpp_token { 16 __extension__ enum cpp_ttype type : 8; 17 } cpp_comment_table; 18 struct cpp_macro { 19 union cpp_macro_u 20 { 21 cpp_token * tokens; 22 } exp; 23 unsigned int count; 24 }; 25 struct cpp_reader 26 { 27 struct ht *hash_table; 28 }; 29 void create_iso_definition(cpp_reader * pfile,cpp_macro * macro)30create_iso_definition (cpp_reader *pfile, cpp_macro *macro) 31 { 32 unsigned int num_extra_tokens = 0; 33 { 34 cpp_token *tokns = 35 (cpp_token *) pfile->hash_table->alloc_subobject (sizeof (cpp_token) 36 * macro->count); 37 { 38 cpp_token *normal_dest = tokns; 39 cpp_token *extra_dest = tokns + macro->count - num_extra_tokens; 40 unsigned int i; 41 for (i = 0; i < macro->count; i++) 42 { 43 if (macro->exp.tokens[i].type == CPP_PASTE) 44 *extra_dest++ = macro->exp.tokens[i]; 45 else 46 *normal_dest++ = macro->exp.tokens[i]; 47 } 48 } 49 } 50 } 51 52 /* This cannot be if-converted because the stores are to aggregate types. */ 53 /* { dg-final { scan-tree-dump-times "Applying if-conversion" 0 "ifcvt" } } */ 54