1 /* { dg-do compile } */ 2 /* { dg-options "-fopenmp" } */ 3 4 void foo(void)5foo (void) 6 { 7 int i; 8 #pragma omp for ordered 9 for (i = 0; i < 64; i++) 10 { 11 #pragma omp ordered 12 ; 13 } 14 #pragma omp for ordered 15 for (i = 0; i < 64; i++) 16 { 17 #pragma omp ordered threads 18 ; 19 } 20 #pragma omp for ordered 21 for (i = 0; i < 64; i++) 22 { 23 #pragma omp ordered threads threads /* { dg-error "too many .threads. clauses" } */ 24 ; 25 } 26 #pragma omp simd 27 for (i = 0; i < 64; i++) 28 { 29 #pragma omp ordered simd 30 ; 31 } 32 #pragma omp simd 33 for (i = 0; i < 64; i++) 34 { 35 #pragma omp ordered simd simd /* { dg-error "too many .simd. clauses" } */ 36 ; 37 } 38 #pragma omp for simd ordered 39 for (i = 0; i < 64; i++) 40 { 41 #pragma omp ordered threads, simd 42 ; 43 } 44 #pragma omp for simd ordered 45 for (i = 0; i < 64; i++) 46 { 47 #pragma omp ordered threads, simd, threads, simd /* { dg-error "too many .threads. clauses" } */ 48 ; /* { dg-error "too many .simd. clauses" "" { target *-*-* } .-1 } */ 49 } 50 #pragma omp for simd ordered(1) /* { dg-error ".ordered. clause with parameter may not be specified on .#pragma omp for simd. construct" } */ 51 for (i = 0; i < 64; i++) 52 { 53 #pragma omp ordered depend(sink: i - 1) /* { dg-error "clause must be closely nested inside a loop with .ordered. clause with a parameter" } */ 54 #pragma omp ordered depend(source) /* { dg-error "clause must be closely nested inside a loop with .ordered. clause with a parameter" } */ 55 } 56 #pragma omp parallel for simd ordered(1) /* { dg-error ".ordered. clause with parameter may not be specified on .#pragma omp parallel for simd. construct" } */ 57 for (i = 0; i < 64; i++) 58 { 59 #pragma omp ordered depend(sink: i - 1) /* { dg-error "clause must be closely nested inside a loop with .ordered. clause with a parameter" } */ 60 #pragma omp ordered depend(source) /* { dg-error "clause must be closely nested inside a loop with .ordered. clause with a parameter" } */ 61 } 62 #pragma omp parallel for ordered 63 for (i = 0; i < 64; i++) 64 { 65 #pragma omp ordered depend(sink: i - 1) /* { dg-error "clause must be closely nested inside a loop with .ordered. clause with a parameter" } */ 66 #pragma omp ordered depend(source) /* { dg-error "clause must be closely nested inside a loop with .ordered. clause with a parameter" } */ 67 } 68 #pragma omp parallel for 69 for (i = 0; i < 64; i++) 70 { 71 #pragma omp ordered depend(sink: i - 1) /* { dg-error "clause must be closely nested inside a loop with .ordered. clause with a parameter" } */ 72 #pragma omp ordered depend(source) /* { dg-error "clause must be closely nested inside a loop with .ordered. clause with a parameter" } */ 73 } 74 } 75 76 void bar(int x)77bar (int x) 78 { 79 switch (x) 80 { 81 case 0: 82 #pragma omp ordered 83 ; 84 break; 85 case 1: 86 #pragma omp ordered threads 87 ; 88 break; 89 case 2: 90 #pragma omp ordered threads, threads /* { dg-error "too many .threads. clauses" } */ 91 ; 92 break; 93 } 94 } 95 96 void baz(void)97baz (void) 98 { 99 #pragma omp ordered simd 100 ; 101 #pragma omp ordered simd, simd /* { dg-error "too many .simd. clauses" } */ 102 ; 103 } 104