1/* { dg-skip-if "not yet" { c++ } } */ 2 3int i, j, k; 4extern int foo (void); 5 6void 7f1 (void) 8{ 9 #pragma acc parallel 10 #pragma acc loop collapse (2) 11 for (i = 0; i < 5; i++) 12 ; /* { dg-error "not enough perfectly nested" } */ 13 { 14 for (j = 0; j < 5; j++) 15 ; 16 } 17} 18 19void 20f2 (void) 21{ 22 #pragma acc parallel 23 #pragma acc loop collapse (2) 24 for (i = 0; i < 5; i++) 25 { 26 { 27 { 28 for (j = 0; j < 5; j++) 29 { 30 } 31 } 32 } 33 } 34} 35 36void 37f3 (void) 38{ 39 #pragma acc parallel 40 #pragma acc loop collapse (2) 41 for (i = 0; i < 5; i++) 42 { 43 int k = foo (); /* { dg-error "not enough perfectly nested" } */ 44 { 45 { 46 for (j = 0; j < 5; j++) 47 { 48 } 49 } 50 } 51 } 52} 53 54void 55f4 (void) 56{ 57 #pragma acc parallel 58 #pragma acc loop collapse (2) 59 for (i = 0; i < 5; i++) 60 { 61 { 62 for (j = 0; j < 5; j++) 63 ; 64 foo (); /* { dg-error "collapsed loops not perfectly nested before" } */ 65 } 66 } 67} 68 69void 70f5 (void) 71{ 72 #pragma acc parallel 73 #pragma acc loop collapse (2) 74 for (i = 0; i < 5; i++) 75 { 76 { 77 for (j = 0; j < 5; j++) 78 ; 79 } 80 foo (); /* { dg-error "collapsed loops not perfectly nested before" } */ 81 } 82} 83 84void 85f6 (void) 86{ 87 #pragma acc parallel 88 #pragma acc loop collapse (2) 89 for (i = 0; i < 5; i++) 90 { 91 { 92 for (j = 0; j < 5; j++) 93 ; 94 } 95 } 96 foo (); 97} 98