| /* PR target/59003 */ |
| /* { dg-options "-O2" } */ |
| /* { dg-options "-O2 -mtune=amdfam10" { target i?86-*-* x86_64-*-* } } */ |
| /* { dg-options "-O2 -fno-common" { target hppa*-*-hpux* } } */ |
| |
| __attribute__((noinline, noclone)) void * |
| foo (void *p, unsigned int q) |
| { |
| return __builtin_memset (p, 0, q * 4UL); |
| } |
| |
| char buf[128] __attribute__((aligned (32))); |
| |
| int |
| main () |
| { |
| int i; |
| for (i = 0; i < 100000; i++) |
| foo (buf + 4, 1 + (i & 1)); |
| for (i = 0; i < 128; i++) |
| { |
| buf[i] = 'X'; |
| asm volatile ("" : : : "memory"); |
| } |
| foo (buf + 32, 7); |
| for (i = 0; i < 128; i++) |
| if (buf[i] != ((i < 32 || i >= 32 + 28) ? 'X' : 0)) |
| __builtin_abort (); |
| return 0; |
| } |