/* { dg-options "-O2 -fdump-tree-optimized-raw" } */

typedef __PTRDIFF_TYPE__ ptrdiff_t;
typedef __SIZE_TYPE__ size_t;

void
cmp1 (int *ptr1, int *ptr2)
{
  unsigned char x1 = ptr2 - ptr1;
  x1 += 0x40;
  ptrdiff_t x2 = (ptrdiff_t) x1 * (ptrdiff_t) 4;

  ptrdiff_t y = ((char *) ptr2 - (char *) ptr1) + (ptrdiff_t) 0x100;

  size_t z = (char *) ptr2 - (char *) ptr1;
  z += (size_t) 0x100;

  if (x2 != y && x2 != (ptrdiff_t) z)
    __builtin_abort ();
}

/* { dg-final { scan-tree-dump {gimple_call <} "optimized" } } */