summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/pr61240.c
blob: 6332918f01f649cdddff246a59b89c8ebca6c55e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* PR c/61240 */
/* { dg-do compile } */

typedef __PTRDIFF_TYPE__ ptrdiff_t;

ptrdiff_t
foo (ptrdiff_t a[4])
{
  int i[4];
  int *p = i + 2;
  static ptrdiff_t b = p - (p - 1);	/* { dg-bogus "integer overflow in expression" } */
  static ptrdiff_t c = (p - 1) - p;	/* { dg-bogus "integer overflow in expression" } */
  static ptrdiff_t d = (p - 2) - (p - 1);/* { dg-bogus "integer overflow in expression" } */
  static ptrdiff_t e = (p - 1) - (p - 2);/* { dg-bogus "integer overflow in expression" } */
  a[0] = p - (p - 1);			/* { dg-bogus "integer overflow in expression" } */
  a[1] = (p - 1) - p;			/* { dg-bogus "integer overflow in expression" } */
  a[2] = (p - 2) - (p - 1);		/* { dg-bogus "integer overflow in expression" } */
  a[3] = (p - 1) - (p - 2);		/* { dg-bogus "integer overflow in expression" } */
  return b + c + d + e;
}