aboutsummaryrefslogtreecommitdiff
path: root/libgomp/testsuite/libgomp.c-c++-common/pr45784.c
blob: 78612108bf6334e9668923351372529a9898158a (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
31
32
33
34
35
36
37
38
39
40
41
/* PR c/45784 */
/* { dg-do run } */

void
foo (int n)
{
  char *p, vla[2 * n];
  int i;
  #pragma omp parallel for
  for (p = vla; p < vla + (sizeof (vla) / sizeof (vla[0])); p++)
    *p = ' ';
  #pragma omp parallel for
  for (i = 0; i < 2 * n; i++)
    if (vla[i] != ' ')
      __builtin_abort ();
}

void
bar (int n)
{
  char *p, vla1[n], vla2[n * 2], vla3[n * 3], vla4[n * 4];
  int i;
  __builtin_memset (vla4, ' ', n * 4);
  #pragma omp parallel for
  for (p = vla4 + sizeof (vla1); p < vla4 + sizeof (vla3) - sizeof (vla2) + sizeof (vla1); p += sizeof (vla4) / sizeof (vla4))
    p[0] = '!';
  #pragma omp parallel for
  for (i = 0; i < n * 4; i++)
    if (vla4[i] != ((i >= n && i < 2 * n) ? '!' : ' '))
      __builtin_abort ();
}

int
main ()
{
  volatile int n;
  n = 128;
  foo (n);
  bar (n);
  return 0;
}