1  /* { dg-do run } */
       2  /* { dg-require-effective-target int32plus } */
       3  
       4  extern void abort (void);
       5  
       6  struct {
       7    unsigned f2;
       8    unsigned f3 : 15;
       9    unsigned f5 : 3;
      10    short f6;
      11  } b = {0x7f8000, 6, 5, 0}, g = {8, 0, 5, 0};
      12  
      13  short d, l;
      14  int a, c, h = 8;
      15  volatile char e[237] = {4};
      16  short *f = &d;
      17  short i[5] = {3};
      18  char j;
      19  int *k = &c;
      20  
      21  int
      22  fn1 (unsigned p1) { return -p1; }
      23  
      24  void
      25  fn2 (char p1)
      26  {
      27    a = p1;
      28    e[0];
      29  }
      30  
      31  short
      32  fn3 ()
      33  {
      34    *k = 4;
      35    return *f;
      36  }
      37  
      38  int
      39  main ()
      40  {
      41  
      42    unsigned m;
      43    short *n = &i[4];
      44  
      45    m = fn1 ((h && j) <= b.f5);
      46    l = m > g.f3;
      47    *n = 3;
      48    fn2 (b.f2 >> 15);
      49    if ((a & 0xff) != 0xff)
      50      abort ();
      51  
      52    return 0;
      53  }