+2013-06-16 Balaji V. Iyer <balaji.v.iyer@intel.com> + + * c-c++-common/cilk-plus/AN/if_test.c (main2): Fixed a bug of accidentally + placing minus sign for length instead of stride. + From-SVN: r200146
307 lines
7.0 KiB
C
307 lines
7.0 KiB
C
/* { dg-do run } */
|
|
/* { dg-options "-fcilkplus" } */
|
|
|
|
#if HAVE_IO
|
|
#include <stdio.h>
|
|
#endif
|
|
#include <stdlib.h>
|
|
int main2 (char **argv);
|
|
int main(int argc, char **argv)
|
|
{
|
|
int x = 0;
|
|
const char *array[] = {"a.out", "10", "15"};
|
|
x = main2 ((char **) array);
|
|
return x;
|
|
}
|
|
|
|
|
|
int main2 (char **argv)
|
|
{
|
|
int x = 3, y, z, array[10], array2[10], TwodArray[10][10], jj,kk,ll ;
|
|
int array2_check[10], array2d_check[10][10], array2d[10][10];
|
|
int FourDArray[10][10][10][10], array4[10][10][10][10];
|
|
int array4_check[10][10][10][10];
|
|
int ii = 0, argc = 3;
|
|
|
|
__asm volatile ("" : "+r" (argc));
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
{
|
|
array[ii] = argc%3;
|
|
array2[ii]= 10;
|
|
array2_check[ii] = 10;
|
|
}
|
|
|
|
if (!array[:])
|
|
array2[:] = 5;
|
|
else
|
|
array2[:] = 10;
|
|
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
{
|
|
if (!array[ii])
|
|
array2_check[ii] = 5;
|
|
else
|
|
array2_check[ii] = 10;
|
|
}
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
if (array2_check[ii] != array2[ii])
|
|
return 2;
|
|
|
|
|
|
|
|
if (!(array[0:10:1] + array[0:10:1]))
|
|
array2[:] = 5;
|
|
else
|
|
array2[:] = 10;
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
{
|
|
if (!(array[ii]+ array[ii]))
|
|
array2_check[ii] = 5;
|
|
else
|
|
array2_check[ii] = 10;
|
|
}
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
if (array2_check[ii] != array2[ii])
|
|
return 3;
|
|
|
|
x = atoi (argv[1])-10;
|
|
y = atoi (argv[1])/2;
|
|
z = (atoi (argv[1]))/5;
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
{
|
|
if (ii % 2)
|
|
array[ii] = 0;
|
|
else
|
|
array[ii] = 1;
|
|
}
|
|
|
|
/*printf("x = %2d y = %2d z = %2d\n", x, y, z); */
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
array[ii] = 10;
|
|
|
|
/* This if loop will change all the 10's to 5's */
|
|
if (array[x:y:z] != 9)
|
|
array2[:] = 5;
|
|
else
|
|
array2[:] = 10;
|
|
|
|
for (ii = x; ii < (x+y); ii += z)
|
|
{
|
|
if (array[ii] != 9)
|
|
array2_check[ii] = 5;
|
|
else
|
|
array2_check[ii] = 10;
|
|
}
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
if (array2_check[ii] != array2[ii])
|
|
return 4;
|
|
|
|
for (ii = 0; ii < 10; ii++) {
|
|
array2[ii] = 10;
|
|
array2_check[ii] = 10;
|
|
}
|
|
|
|
/* This if loop will change all the 10's to 5's */
|
|
if (array[atoi(argv[1])-10:atoi(argv[1])/2: atoi(argv[1])/5])
|
|
array2[atoi(argv[1])-10: atoi (argv[1])/2: atoi(argv[1])/5] = 5;
|
|
else
|
|
array2[atoi(argv[1])-10: atoi (argv[1])/2: atoi(argv[1])/5] = 10;
|
|
|
|
for (ii = atoi(argv[1])-10; ii < atoi(argv[1]) + (atoi (argv[1])-10);
|
|
ii +=atoi(argv[1])/5)
|
|
if (array[ii])
|
|
array2_check[ii] = 5;
|
|
else
|
|
array2_check[ii] = 10;
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
if (array2_check[ii] != array2[ii]) {
|
|
#if HAVE_IO
|
|
printf("array2[%2d] = %2d array2_check[%2d] = %2d\n", ii, array2[ii],
|
|
ii, array2_check[ii]);
|
|
#endif
|
|
return 5;
|
|
}
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
for (jj = 0; jj < 10; jj++)
|
|
TwodArray[ii][jj] = atoi(argv[1]);
|
|
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
for (ii = 0; ii < 10; ii++) {
|
|
array2d[ii][jj] = 10;
|
|
array2d_check[ii][jj] = 10;
|
|
}
|
|
|
|
/* atoi(argv[1]) == 10, so it will convert all 10's to 5's */
|
|
if (TwodArray[:][:] != 10)
|
|
array2d[:][:] = 10;
|
|
else
|
|
array2d[:][:] = 5;
|
|
|
|
for (ii = 0; ii < 10; ii++) {
|
|
for (jj = 0; jj < 10; jj++) {
|
|
if (TwodArray[ii][jj] != 10)
|
|
array2d_check[ii][jj] = 10;
|
|
else
|
|
array2d_check[ii][jj] = 5;
|
|
}
|
|
}
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
for (jj = 0; jj < 10; jj++)
|
|
if (array2d[ii][jj] != array2d_check[ii][jj])
|
|
return 6;
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
for (jj = 0; jj < 10; jj++)
|
|
for (kk = 0; kk < 10; kk++)
|
|
for (ll = 0; ll < 10; ll++)
|
|
{
|
|
array4[ii][jj][kk][ll] = 10;
|
|
array4_check[ii][jj][kk][ll] = 10;
|
|
}
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
for (jj = 0; jj < 10; jj++)
|
|
for (kk = 0; kk < 10; kk++)
|
|
for (ll = 0; ll < 10; ll++)
|
|
FourDArray[ii][jj][kk][ll] = atoi(argv[1]);
|
|
|
|
/* atoi(argv[1]) == 10, so it will convert all 10's to 5's */
|
|
if (FourDArray[:][:][:][:] != 10)
|
|
array4[:][:][:][:] = 10;
|
|
else
|
|
array4[:][:][:][:] = 5;
|
|
|
|
for (ii = 0; ii < 10; ii++) {
|
|
for (jj = 0; jj < 10; jj++) {
|
|
for (kk = 0; kk < 10; kk++) {
|
|
for (ll = 0; ll < 10; ll++) {
|
|
if (FourDArray[ii][jj][kk][ll] != 10)
|
|
array4_check[ii][jj][kk][ll] = 10;
|
|
else
|
|
array4_check[ii][jj][kk][ll] = 5;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
for (jj = 0; jj < 10; jj++)
|
|
for (kk = 0; kk < 10; kk++)
|
|
for (ll = 0; ll < 10; ll++)
|
|
if (array4_check[ii][jj][kk][ll] != array4[ii][jj][kk][ll])
|
|
return 7;
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
for (jj = 0; jj < 10; jj++)
|
|
for (kk = 0; kk < 10; kk++)
|
|
for (ll = 0; ll < 10; ll++)
|
|
{
|
|
array4[ii][jj][kk][ll] = 10;
|
|
array4_check[ii][jj][kk][ll] = 10;
|
|
}
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
for (jj = 0; jj < 10; jj++)
|
|
for (kk = 0; kk < 10; kk++)
|
|
for (ll = 0; ll < 10; ll++)
|
|
FourDArray[ii][jj][kk][ll] = atoi(argv[1]);
|
|
|
|
/* atoi(argv[1]) == 10, so it will convert all 10's to 5's */
|
|
if (FourDArray[0:10:1][0:5:2][9:10:-1][0:5:2] != 10)
|
|
array4[0:10:1][0:5:2][9:10:-1][0:5:2] = 10;
|
|
else
|
|
array4[0:10:1][0:5:2][9:10:-1][0:5:2] = 5;
|
|
|
|
for (ii = 0; ii < 10; ii++) {
|
|
for (jj = 0; jj < 10; jj += 2) {
|
|
for (kk = 9; kk >= 0; kk--) {
|
|
for (ll = 0; ll < 10; ll += 2) {
|
|
if (FourDArray[ii][jj][kk][ll] != 10)
|
|
array4_check[ii][jj][kk][ll] = 10;
|
|
else
|
|
array4_check[ii][jj][kk][ll] = 5;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
for (jj = 0; jj < 10; jj++)
|
|
for (kk = 0; kk < 10; kk++)
|
|
for (ll = 0; ll < 10; ll++)
|
|
if (array4_check[ii][jj][kk][ll] != array4[ii][jj][kk][ll]) {
|
|
#if HAVE_IO
|
|
printf("array4_check[%d][%d][%d][%d] = %d\n",ii, jj, kk, ll,
|
|
array4_check[ii][jj][kk][ll]);
|
|
printf("array4[%d][%d][%d][%d] = %d\n",ii, jj, kk, ll,
|
|
array4[ii][jj][kk][ll]);
|
|
#endif
|
|
return 8;
|
|
}
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
for (jj = 0; jj < 10; jj++)
|
|
for (kk = 0; kk < 10; kk++)
|
|
for (ll = 0; ll < 10; ll++)
|
|
FourDArray[ii][jj][kk][ll] = atoi(argv[1]);
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
for (jj = 0; jj < 10; jj++)
|
|
for (kk = 0; kk < 10; kk++)
|
|
for (ll = 0; ll < 10; ll++)
|
|
{
|
|
array4[ii][jj][kk][ll] = 10;
|
|
array4_check[ii][jj][kk][ll] = 10;
|
|
}
|
|
|
|
|
|
/* atoi(argv[1]) == 10, so it will convert all 10's to 5's */
|
|
if (FourDArray[0:10:1][0:5:2][9:10:-1][x:y:z] +
|
|
FourDArray[0:10:1][0:5:2][9:10:-1][x:y:z] != 20)
|
|
array4[0:10:1][0:5:2][9:10:-1][x:y:z] = 10;
|
|
else
|
|
array4[0:10][0:5:2][9:10:-1][x:y:z] = 5;
|
|
|
|
for (ii = 0; ii < 10; ii++) {
|
|
for (jj = 0; jj < 10; jj += 2) {
|
|
for (kk = 9; kk >= 0; kk--) {
|
|
for (ll = 0; ll < 10; ll += 2) {
|
|
if (FourDArray[ii][jj][kk][ll] != 10)
|
|
array4_check[ii][jj][kk][ll] = 10;
|
|
else
|
|
array4_check[ii][jj][kk][ll] = 5;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
for (ii = 0; ii < 10; ii++)
|
|
for (jj = 0; jj < 10; jj++)
|
|
for (kk = 0; kk < 10; kk++)
|
|
for (ll = 0; ll < 10; ll++)
|
|
if (array4_check[ii][jj][kk][ll] != array4[ii][jj][kk][ll]) {
|
|
#if HAVE_IO
|
|
printf("array4_check[%d][%d][%d][%d] = %d\n",ii, jj, kk, ll,
|
|
array4_check[ii][jj][kk][ll]);
|
|
printf("array4[%d][%d][%d][%d] = %d\n",ii, jj, kk, ll,
|
|
array4[ii][jj][kk][ll]);
|
|
#endif
|
|
return 9;
|
|
}
|
|
|
|
|
|
return 0;
|
|
}
|