/* { dg-do run } */ /* { dg-options "-fcilkplus" } */ /* Test that the array index, limit, and stride are evaluated only once. */ int array[1000]; int func1_times = 0; int func2_times = 0; int func3_times = 0; int func1() { func1_times++; return 0; } int func2() { func2_times++; return 0; } int func3() { func3_times++; return 0; } int main() { array[func1() + 11 : func2() + 22 : func3() + 33] = 666; if (func1_times != 1 || func2_times != 1 || func3_times != 1) return 1; return 0; }