/* { dg-do run } */ typedef enum { PVT_A = 0, PVT_B = 1, PVT_CONFIG = 2, PVT_RESERVED3 = 3, } T_CR_SELECT; typedef enum { STD_ULOGIC_0 = 0, STD_ULOGIC_1 = 1, } STD_ULOGIC; typedef struct { unsigned char rtp : 3; unsigned char rtn : 3; } C; typedef struct { unsigned char nd; unsigned char pd; unsigned char rtn; unsigned char rtp; } A; typedef struct { unsigned short reserved : 14; unsigned char Z_rx_enable : 2; A pvt; } B; typedef struct { B cr_dsclk_q3; B cr_data_q3; B cr_addr_q3; B cr_cmd_q3; B cr_pres_q3; C cr_vref_q3[6]; unsigned char pres_disable; unsigned char pres_drive_high; unsigned char c_enab_120; STD_ULOGIC clk_tximp; STD_ULOGIC dqs_tximp; STD_ULOGIC cmd_tximp; STD_ULOGIC data_tximp; STD_ULOGIC dqs_rxterm; STD_ULOGIC data_rxterm; T_CR_SELECT cr_clk_sel; unsigned char cr_clk : 5; T_CR_SELECT cr_dsclk_odd_sel; unsigned char cr_dsclk_odd : 5; T_CR_SELECT cr_dsclk_even_sel; unsigned char cr_dsclk_even : 5; T_CR_SELECT cr_data_sel; unsigned char cr_data : 5; T_CR_SELECT cr_vref_sel; unsigned char cr_vref : 5; T_CR_SELECT cr_others_sel; unsigned char cr_others : 5; } CONFIG; typedef struct { unsigned char enable_monitor; unsigned short step_out_pointer : 12; unsigned short hold_out_pointer : 12; unsigned short enable_wr_dqs : 12; unsigned short use_alt_rd_dqs : 12; CONFIG io_buf; } mystruct; unsigned short __attribute__((noinline,noclone)) testfunction(unsigned i) { mystruct dmfe[8]; dmfe[0].use_alt_rd_dqs = 1; dmfe[i].use_alt_rd_dqs = 0; return dmfe[0].use_alt_rd_dqs; } extern void abort (void); int main () { if (testfunction(0) != 0) abort (); return 0; }