111
|
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
|
|
30 create_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" } } */
|