blob: 07c50173bfb7abaf64514d8bb595d61631c45943 [file] [log] [blame]
/* { dg-do run } */
/* { dg-options "-fcilkplus" } */
#include <stdlib.h>
int main(void)
{
int argc = 1;
short array[1000], array2[1000], *array3, cond[1000], ii = 0;
__asm volatile ("" : "+r" (argc));
for (ii = 0; ii < 1000; ii++) {
cond[ii] = 1;
array[ii] = 1000;
array2[ii] = 2000;
}
array2[:] = cond[:] ? array[:] : array2[:];
for (ii = 0; ii < 1000; ii++) {
if (array2[ii] != 1000)
return 1;
}
array2[0:500:2] = cond[0:500] ? array[0:500:1] : array2[0:500:2];
for (ii = 0; ii < 1000; ii++) {
if (array2[ii] != 1000)
return 2;
}
for (ii = 0; ii < 1000; ii++) {
cond[ii] = ii % 2; /* This should give 0, 1, 0, 1, 0, 1, 0,... */
array2[ii] = 5;
array[ii] = 3;
}
array3 = (short *) malloc (sizeof (short) * 1000);
array3[0:1000:argc] = cond[:] ? array[0:(argc * 1000)] : array2[argc-1:1000];
for (ii = 0; ii < 1000; ii++) {
if ((cond[ii] == 0 && array3[ii] != 5)
|| (cond[ii] == 1 && array3[ii] != 3))
return 3;
}
return 0;
}