/* PR debug/82718 */
/* { dg-do assemble } */
/* { dg-options "-O2 -gdwarf-5" } */
/* { dg-skip-if "AIX DWARF5" { powerpc-ibm-aix* } } */

extern int e;
extern long foo (int, void *, unsigned long, unsigned long);
struct S
{
  int f;
  unsigned long t, s;
};

static inline long
bv (int x, void *y, unsigned long z, unsigned long w)
{
  long a = 0;
  do
    {
      long g;
      do
	g = (long int) (foo (x, y + a, z - a, w + a));
      while (g == -1L && e == 9959);
      if (g <= 0)
	return g < 0 ? g : a;
      a += g;
    }
  while ((unsigned long) a < z);
  return a;
}

const char *
baz (struct S *x)
{
  unsigned long h = 8;
  char *j = 0;
  unsigned long z = x->f;
  if (__builtin_expect (!!((unsigned long) bv (x->f, j, z, x->t + h + 10) != z), 0))
    return 0;
  x->s = z;
  return j;
}
