/* { dg-do run } */ | |
/* { dg-options "-O2" } */ | |
extern void abort (void); | |
int | |
main () | |
{ | |
struct A { char buf1[9]; char buf2[1]; } a; | |
if (__builtin_object_size (a.buf1 + (0 + 4), 1) != 5) | |
abort (); | |
char *p = a.buf1; | |
p += 1; | |
p += 3; | |
if (__builtin_object_size (p, 1) != 5) | |
abort (); | |
p = (char *) &a; | |
char *q = p + 1; | |
char *r = q + 3; | |
char *t = r; | |
if (r != (char *) &a + 4) | |
t = (char *) &a + 1; | |
if (__builtin_object_size (t, 1) != 6) | |
abort (); | |
return 0; | |
} |