1  /* PR rtl-optimization/102627 */
       2  /* { dg-do run } */
       3  /* { dg-options "-O1" } */
       4  
       5  int a, f, l, m, q, c, d, g;
       6  long b, e;
       7  struct g {
       8    signed h;
       9    signed i;
      10    unsigned j;
      11    unsigned k;
      12  };
      13  unsigned n;
      14  char o;
      15  int *p = &m;
      16  long r(int s) { return s && b ?: b; }
      17  long __attribute__((noipa)) v() {
      18    l = 0 || r(n & o);
      19    return q;
      20  }
      21  void w(int, unsigned, struct g x) {
      22    c ?: a;
      23    for (; d < 2; d++)
      24      *p = x.k;
      25  }
      26  struct g __attribute__((noipa)) y() {
      27    struct g h = {3, 908, 1, 20};
      28    for (; g; g++)
      29      ;
      30    return h;
      31  }
      32  int main() {
      33    long t;
      34    struct g u = y();
      35    t = e << f;
      36    w(0, t, u);
      37    v(0, 4, 4, 4);
      38    if (m != 20)
      39      __builtin_abort ();
      40    return 0;
      41  }