1 /* { dg-do run } */
2 
3 typedef enum
4 {
5   PVT_A = 0,
6   PVT_B = 1,
7   PVT_CONFIG = 2,
8   PVT_RESERVED3 = 3,
9 } T_CR_SELECT;
10 
11 typedef enum
12 {
13   STD_ULOGIC_0 = 0,
14   STD_ULOGIC_1 = 1,
15 } STD_ULOGIC;
16 
17 typedef struct
18 {
19   unsigned char rtp : 3;
20   unsigned char rtn : 3;
21 } C;
22 
23 typedef struct
24 {
25   unsigned char nd;
26   unsigned char pd;
27   unsigned char rtn;
28   unsigned char rtp;
29 } A;
30 
31 typedef struct
32 {
33   unsigned short reserved : 14;
34   unsigned char Z_rx_enable : 2;
35   A pvt;
36 } B;
37 
38 typedef struct
39 {
40   B cr_dsclk_q3;
41   B cr_data_q3;
42   B cr_addr_q3;
43   B cr_cmd_q3;
44   B cr_pres_q3;
45   C cr_vref_q3[6];
46   unsigned char pres_disable;
47   unsigned char pres_drive_high;
48   unsigned char c_enab_120;
49   STD_ULOGIC clk_tximp;
50   STD_ULOGIC dqs_tximp;
51   STD_ULOGIC cmd_tximp;
52   STD_ULOGIC data_tximp;
53   STD_ULOGIC dqs_rxterm;
54   STD_ULOGIC data_rxterm;
55   T_CR_SELECT cr_clk_sel;
56   unsigned char cr_clk : 5;
57   T_CR_SELECT cr_dsclk_odd_sel;
58   unsigned char cr_dsclk_odd : 5;
59   T_CR_SELECT cr_dsclk_even_sel;
60   unsigned char cr_dsclk_even : 5;
61   T_CR_SELECT cr_data_sel;
62   unsigned char cr_data : 5;
63   T_CR_SELECT cr_vref_sel;
64   unsigned char cr_vref : 5;
65   T_CR_SELECT cr_others_sel;
66   unsigned char cr_others : 5;
67 } CONFIG;
68 
69 typedef struct
70 {
71   unsigned char enable_monitor;
72   unsigned short step_out_pointer : 12;
73   unsigned short hold_out_pointer : 12;
74   unsigned short enable_wr_dqs : 12;
75   unsigned short use_alt_rd_dqs : 12;
76   CONFIG io_buf;
77 } mystruct;
78 
79 unsigned short __attribute__((noinline,noclone))
testfunction(unsigned i)80 testfunction(unsigned i)
81 {
82   mystruct dmfe[8];
83   dmfe[0].use_alt_rd_dqs = 1;
84   dmfe[i].use_alt_rd_dqs = 0;
85   return dmfe[0].use_alt_rd_dqs;
86 }
87 
88 extern void abort (void);
main()89 int main ()
90 {
91   if (testfunction(0) != 0)
92     abort ();
93   return 0;
94 }
95