(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
torture/
pr86554-2.c
       1  /* { dg-do run } */
       2  /* { dg-require-effective-target int32plus } */
       3  
       4  struct s { __INT64_TYPE__ e; };
       5  
       6  static void f (struct s *ps)
       7  {
       8    volatile __INT64_TYPE__ m = 9223372036854775807;
       9    const char *str = "11E";
      10    int r;
      11    __INT64_TYPE__ sum;
      12  
      13    ps->e = 0;
      14  
      15    for (;;)
      16      {
      17        if (*str++ != '1')
      18  	break;
      19        ps->e ++;
      20      }
      21  
      22    r = 1;
      23    sum = m;
      24  
      25    if (sum >= 0 && ps->e >= 0)
      26      {
      27        __UINT64_TYPE__ uc;
      28        uc = (__UINT64_TYPE__) sum + (__UINT64_TYPE__) ps->e;
      29        if (uc > 9223372036854775807)
      30  	r = 2;
      31        else
      32  	sum = 17;
      33      }
      34    else
      35      sum = sum + ps->e;
      36  
      37    if (sum != 9223372036854775807)
      38      __builtin_abort ();
      39    if (r != 2)
      40      __builtin_abort ();
      41    ps->e = sum;
      42  }
      43  
      44  int main (void)
      45  {
      46    struct s s;
      47    f (&s);
      48    return 0;
      49  }