aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/pr59003.c
blob: 1c7d5e07fb9e23097b263739a1af641de8ac4829 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/* 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;
}