1/* { dg-do compile { target i?86-*-linux* x86_64-*-linux* } } */ 2/* { dg-options "-O2" } */ 3 4typedef __SIZE_TYPE__ size_t; 5extern void abort (void); 6extern char buf[0x40000000]; 7 8void 9test1 (size_t x) 10{ 11 char *p = &buf[8]; 12 size_t i; 13 14 for (i = 0; i < x; ++i) 15 p = p + 4; 16 if (__builtin_object_size (p, 0) != sizeof (buf) - 8) 17 abort (); 18} 19 20void 21test2 (size_t x) 22{ 23 char *p = &buf[8]; 24 size_t i; 25 26 for (i = 0; i < x; ++i) 27 p = p + 4; 28 if (__builtin_object_size (p, 1) != sizeof (buf) - 8) 29 abort (); 30} 31 32void 33test3 (size_t x) 34{ 35 char *p = &buf[8]; 36 size_t i; 37 38 for (i = 0; i < x; ++i) 39 p = p + 4; 40 if (__builtin_object_size (p, 2) != 0) 41 abort (); 42} 43 44void 45test4 (size_t x) 46{ 47 char *p = &buf[8]; 48 size_t i; 49 50 for (i = 0; i < x; ++i) 51 p = p + 4; 52 if (__builtin_object_size (p, 3) != 0) 53 abort (); 54} 55 56/* { dg-final { scan-assembler-not "abort" } } */ 57