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