fehler56
[libfirm] / ir / be / test / fehler56.c
1 typedef union rtunion_def
2 {
3         int rtwint;
4         int rtint;
5         char *str;
6         struct rtx_def *rtx;
7 } rtunion;
8
9 typedef struct rtx_def
10 {
11         unsigned short code;
12         int mode : 8;
13         unsigned int jump : 1;
14         unsigned int call : 1;
15         unsigned int unchanging : 1;
16         unsigned int volatil : 1;
17         unsigned int in_struct : 1;
18         unsigned int used : 1;
19         unsigned int integrated : 1;
20         rtunion fld[1];
21 } *rtx;
22
23 enum machine_mode {
24         PSImode,
25         SImode,
26         PDImode,
27         DImode,
28         TImode,
29         OImode,
30         QImode,
31         HImode,
32         VOIDmode
33 };
34
35 #define GET_MODE(RTX)       ((RTX)->mode)
36 #define PUT_MODE(RTX, MODE) ((RTX)->mode = (MODE))
37
38 struct rtx_def bla;
39
40 void t(int did_elimination, int n_reloads) {
41         rtx insn = &bla;
42
43         printf("Before: mode %d, fldint: %d\n", insn->fld[0].rtint);
44         PUT_MODE(insn, (did_elimination ? QImode
45                                 : n_reloads ? HImode
46                                 : GET_MODE (insn) == DImode ? DImode
47                                 : VOIDmode));
48         printf("After: mode %d, fldint: %d\n", insn->fld[0].rtint);
49 }
50
51 int main()
52 {
53         t(1, 1);
54         return 0;
55 }