aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/n-ptr-test.c
blob: 750446c87d239365625ecc215c4cc655e4f78ab2 (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
42
43
44
45
46
47
48
/* { dg-do run } */
/* { dg-options "-fcilkplus" } */

#define NUMBER 10
#include <stdlib.h>

int ***func2 (int ***a1, int ***a2, int size)
{
  a1[0:size:1][0:size:1][0:size] += (a2[0:size][0:size][0:size:1]  + size);
  return a1;
}

int main (void)
{
  int ii, jj, kk;
  int ***array3, ***array2 = NULL, ***array = NULL;

  array = (int ***) malloc (sizeof (int **) * NUMBER);
  array2 = (int ***) malloc (sizeof (int **) * NUMBER);
  for (ii = 0; ii < NUMBER; ii++) {
    array[ii] = (int **) malloc (sizeof (int *) * NUMBER);
    array2[ii] = (int **) malloc (sizeof (int *) * NUMBER);
    for (jj = 0; jj < NUMBER; jj++) { 
      array[ii][jj] = (int *) malloc (sizeof (int) * NUMBER);
      array2[ii][jj] = (int *) malloc (sizeof (int) * NUMBER);
    } 
  }

  for (ii = 0; ii < NUMBER; ii++) {
    for (jj = 0; jj < NUMBER; jj++) {
      for (kk = 0; kk < NUMBER; kk++) {
	array[ii][jj][kk] = 5;
	array2[ii][jj][kk]= 2;
      }
    }
  }
  array3 = func2 ((int ***)array, (int ***)array2, NUMBER);
  
  for (ii = 0; ii < NUMBER; ii++) {
    for (jj = 0; jj < NUMBER; jj++) {
      for (kk = 0; kk < NUMBER; kk++) {
	if (array3[ii][jj][kk] != (7 + NUMBER))
          return 1;
      }
    }
  }
  return 0;
}