| /* { 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; | |
| } |