/* { dg-do run } */
/* { dg-options "-fwrapv" } */

int __attribute__((noinline))
foo (long i, long j)
{
  if (i >= 1)
    if (j > -(long)(((unsigned long)(long)-1)>>1))
      {
        long x;
	j--;
	x = i + j;
	if (x >= 0)
	  return 1;
      }
  return 0;
}
extern void abort (void);
int main()
{
  if (foo (1, 1) != 1)
    abort ();
  return 0;
}