https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121104

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
                 CC|                            |jakub at gcc dot gnu.org
           Assignee|unassigned at gcc dot gnu.org      |jakub at gcc dot gnu.org
           Priority|P3                          |P2

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Just
static unsigned long
foo (unsigned long x, unsigned long y,
     unsigned long z, unsigned long *w)
{
  int r;
  unsigned long a = __builtin_sub_overflow (x, y, &r);
  unsigned long b = __builtin_sub_overflow (r, z, &r);
  *w = a + b;
  return r;
}

unsigned long
bar (unsigned long *p, unsigned long *q)
{
  unsigned long c;
  p[0] = foo (p[0], q[0], 0, &c);
  p[1] = foo (p[1], q[1], c, &c);
  return c;
}
is needed (and calling the function usubc when it does something different is
weird).
Anyway, will have a look (can't bisect, our bisect seed has hw issues right
now).

Reply via email to