/* { dg-do compile } */
/* { dg-options "-O2 -fno-strict-aliasing -fdump-tree-optimized" } */

typedef unsigned u32;
typedef unsigned short u16;
typedef unsigned char u8;
struct biosregs {
 union {
  struct {
   u32 edi;
   u32 esi;
   u32 ebp;
   u32 _esp;
   u32 ebx;
   u32 edx;
   u32 ecx;
   u32 eax;
   u32 _fsgs;
   u32 _dses;
   u32 eflags;
  };
  struct {
   u16 di, hdi;
   u16 si, hsi;
   u16 bp, hbp;
   u16 _sp, _hsp;
   u16 bx, hbx;
   u16 dx, hdx;
   u16 cx, hcx;
   u16 ax, hax;
   u16 gs, fs;
   u16 es, ds;
   u16 flags, hflags;
  };
  struct {
   u8 dil, dih, edi2, edi3;
   u8 sil, sih, esi2, esi3;
   u8 bpl, bph, ebp2, ebp3;
   u8 _spl, _sph, _esp2, _esp3;
   u8 bl, bh, ebx2, ebx3;
   u8 dl, dh, edx2, edx3;
   u8 cl, ch, ecx2, ecx3;
   u8 al, ah, eax2, eax3;
  };
 };
};
void initregs(struct biosregs *regs);
void intcall(u8 int_no, const struct biosregs *ireg, struct biosregs *oreg);
static u32 *const gp = (u32*) 0x32;
void keyboard_set_repeat(void)
{
 struct biosregs ireg;
 *gp = 10;
 initregs(&ireg);
 ireg.ax = 0x0305;
 intcall(0x16, &ireg, ((void *)0));
}

/* { dg-final { scan-tree-dump-times "ireg.*ax" 1 "optimized"} } */
 
