| /* { dg-do compile } */ |
| /* { dg-options "-w -fdump-rtl-expand" } */ |
| /* { dg-skip-if "" { *-*-* } { } { "-O2" } } */ |
| |
| extern char errbuf[]; |
| typedef struct Symbol |
| { |
| char *name; |
| } |
| Symbol; |
| typedef struct Tnode |
| { |
| } |
| Tnode; |
| typedef union Value |
| { |
| long long i; |
| } |
| Value; |
| typedef struct Entry |
| { |
| } |
| Entry; |
| typedef struct Table |
| { |
| } |
| Table; |
| typedef struct Node |
| { |
| Tnode *typ; |
| int sto; |
| Value val; |
| } |
| Node; |
| struct Scope |
| { |
| Table *table; |
| } *sp; |
| static Node op (Node); |
| Entry *p, *q; |
| union YYSTYPE |
| { |
| Symbol *sym; |
| Node rec; |
| }; |
| typedef union YYSTYPE YYSTYPE; |
| typedef short int yytype_int16; |
| |
| int |
| yyparse (void) |
| { |
| YYSTYPE yyval; |
| int yyn; |
| YYSTYPE *yyvsp; |
| while (1) |
| { |
| if (yyn == 34) |
| { |
| if ((yyvsp[-1].rec).sto & 0x10) |
| sprintf (errbuf, "invalid typedef qualifier for '%s'", |
| (yyvsp[0].sym)->name); |
| p = enter (sp->table, (yyvsp[0].sym)); |
| } |
| else |
| op ((yyvsp[0].rec)); |
| *++yyvsp = yyval; |
| } |
| } |
| |
| static Node |
| op (Node q) |
| { |
| integer (q.typ); |
| mgtype (q.typ); |
| } |
| |
| |
| /* { dg-final { scan-rtl-dump-times "\\\(set \\\(reg:SI 5 \\\$5\\\)" 2 "expand" { target { ilp32 } } } } */ |
| /* { dg-final { scan-rtl-dump-times "\\\(set \\\(reg:SI 6 \\\$6\\\)" 1 "expand" { target { ilp32 } } } } */ |
| |
| /* { dg-final { scan-rtl-dump-times "\\\(set \\\(reg:DI 5 \\\$5\\\)" 2 "expand" { target { lp64 } } } } */ |
| /* { dg-final { scan-rtl-dump-times "\\\(set \\\(reg:DI 6 \\\$6\\\)" 1 "expand" { target { lp64 } } } } */ |