| /* PR c/63326 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-fopenmp" } */ |
| |
| void |
| f1 (int x) |
| { |
| int i; |
| if (x) |
| #pragma omp barrier /* { dg-error "may only be used in compound statements" } */ |
| ; |
| if (x) |
| #pragma omp flush /* { dg-error "may only be used in compound statements" } */ |
| ; |
| if (x) |
| #pragma omp taskwait /* { dg-error "may only be used in compound statements" } */ |
| ; |
| if (x) |
| #pragma omp taskyield /* { dg-error "may only be used in compound statements" } */ |
| ; |
| #pragma omp parallel |
| { |
| if (x) |
| #pragma omp cancel parallel /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| #pragma omp parallel |
| { |
| if (x) |
| #pragma omp cancellation point parallel /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| #pragma omp for ordered(1) |
| for (i = 0; i < 16; i++) |
| { |
| if (x) |
| #pragma omp ordered depend(source) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| if (x) |
| #pragma omp ordered depend(sink: i-1) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| if (x) |
| #pragma omp target enter data map(to:i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| if (x) |
| #pragma omp target update to(i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| if (x) |
| #pragma omp target exit data map(from:i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| |
| void |
| f2 (int x) |
| { |
| int i; |
| while (x) |
| #pragma omp barrier /* { dg-error "may only be used in compound statements" } */ |
| ; |
| while (x) |
| #pragma omp flush /* { dg-error "may only be used in compound statements" } */ |
| ; |
| while (x) |
| #pragma omp taskwait /* { dg-error "may only be used in compound statements" } */ |
| ; |
| while (x) |
| #pragma omp taskyield /* { dg-error "may only be used in compound statements" } */ |
| ; |
| #pragma omp parallel |
| { |
| while (x) |
| #pragma omp cancel parallel /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| #pragma omp parallel |
| { |
| while (x) |
| #pragma omp cancellation point parallel /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| #pragma omp for ordered(1) |
| for (i = 0; i < 16; i++) |
| { |
| while (x) |
| #pragma omp ordered depend(source) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| while (x) |
| #pragma omp ordered depend(sink: i-1) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| while (x) |
| #pragma omp target enter data map(to:i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| while (x) |
| #pragma omp target update to(i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| while (x) |
| #pragma omp target exit data map(from:i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| |
| void |
| f3 (int x) |
| { |
| int i; |
| for (x = 0; x < 10; x++) |
| #pragma omp barrier /* { dg-error "may only be used in compound statements" } */ |
| ; |
| for (x = 0; x < 10; x++) |
| #pragma omp flush /* { dg-error "may only be used in compound statements" } */ |
| ; |
| for (x = 0; x < 10; x++) |
| #pragma omp taskwait /* { dg-error "may only be used in compound statements" } */ |
| ; |
| for (x = 0; x < 10; x++) |
| #pragma omp taskyield /* { dg-error "may only be used in compound statements" } */ |
| ; |
| #pragma omp parallel |
| { |
| for (x = 0; x < 10; x++) |
| #pragma omp cancel parallel /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| #pragma omp parallel |
| { |
| for (x = 0; x < 10; x++) |
| #pragma omp cancellation point parallel /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| #pragma omp for ordered(1) |
| for (i = 0; i < 16; i++) |
| { |
| for (x = 0; x < 10; x++) |
| #pragma omp ordered depend(source) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| for (x = 0; x < 10; x++) |
| #pragma omp ordered depend(sink: i-1) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| for (x = 0; x < 10; x++) |
| #pragma omp target enter data map(to:i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| for (x = 0; x < 10; x++) |
| #pragma omp target update to(i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| for (x = 0; x < 10; x++) |
| #pragma omp target exit data map(from:i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| |
| void |
| f4 (int x) |
| { |
| int i; |
| { |
| do |
| #pragma omp barrier /* { dg-error "may only be used in compound statements" } */ |
| while (0); |
| } |
| { |
| do |
| #pragma omp flush /* { dg-error "may only be used in compound statements" } */ |
| while (0); |
| } |
| { |
| do |
| #pragma omp taskwait /* { dg-error "may only be used in compound statements" } */ |
| while (0); |
| } |
| { |
| do |
| #pragma omp taskyield /* { dg-error "may only be used in compound statements" } */ |
| while (0); |
| } |
| #pragma omp parallel |
| { |
| do |
| #pragma omp cancel parallel /* { dg-error "may only be used in compound statements" } */ |
| while (0); |
| } |
| #pragma omp parallel |
| { |
| do |
| #pragma omp cancellation point parallel /* { dg-error "may only be used in compound statements" } */ |
| while (0); |
| } |
| #pragma omp for ordered(1) |
| for (i = 0; i < 16; i++) |
| { |
| { |
| do |
| #pragma omp ordered depend(source) /* { dg-error "may only be used in compound statements" } */ |
| while (0); |
| } |
| { |
| do |
| #pragma omp ordered depend(sink: i-1) /* { dg-error "may only be used in compound statements" } */ |
| while (0); |
| } |
| } |
| { |
| do |
| #pragma omp target enter data map(to:i) /* { dg-error "may only be used in compound statements" } */ |
| while (0); |
| } |
| { |
| do |
| #pragma omp target update to(i) /* { dg-error "may only be used in compound statements" } */ |
| while (0); |
| } |
| { |
| do |
| #pragma omp target exit data map(from:i) /* { dg-error "may only be used in compound statements" } */ |
| while (0); |
| } |
| } |
| |
| void |
| f5 (int x) |
| { |
| int i; |
| switch (x) |
| #pragma omp barrier /* { dg-error "may only be used in compound statements" } */ |
| ; |
| switch (x) |
| #pragma omp flush /* { dg-error "may only be used in compound statements" } */ |
| ; |
| switch (x) |
| #pragma omp taskwait /* { dg-error "may only be used in compound statements" } */ |
| ; |
| switch (x) |
| #pragma omp taskyield /* { dg-error "may only be used in compound statements" } */ |
| ; |
| #pragma omp parallel |
| { |
| switch (x) |
| #pragma omp cancel parallel /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| #pragma omp parallel |
| { |
| switch (x) |
| #pragma omp cancellation point parallel /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| #pragma omp for ordered(1) |
| for (i = 0; i < 16; i++) |
| { |
| switch (x) |
| #pragma omp ordered depend(source) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| switch (x) |
| #pragma omp ordered depend(sink: i-1) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| switch (x) |
| #pragma omp target enter data map(to:i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| switch (x) |
| #pragma omp target update to(i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| switch (x) |
| #pragma omp target exit data map(from:i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| |
| void |
| f6 (int x) |
| { |
| int i; |
| switch (x) |
| { |
| case 1: |
| #pragma omp barrier /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| switch (x) |
| { |
| case 1: |
| #pragma omp flush /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| switch (x) |
| { |
| case 1: |
| #pragma omp taskwait /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| switch (x) |
| { |
| case 1: |
| #pragma omp taskyield /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| #pragma omp parallel |
| { |
| switch (x) |
| { |
| case 1: |
| #pragma omp cancel parallel /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| } |
| #pragma omp parallel |
| { |
| switch (x) |
| { |
| case 1: |
| #pragma omp cancellation point parallel /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| } |
| #pragma omp for ordered(1) |
| for (i = 0; i < 16; i++) |
| { |
| switch (x) |
| { |
| case 1: |
| #pragma omp ordered depend(source) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| switch (x) |
| { |
| case 1: |
| #pragma omp ordered depend(sink: i-1) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| } |
| switch (x) |
| { |
| case 1: |
| #pragma omp target enter data map(to:i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| switch (x) |
| { |
| case 1: |
| #pragma omp target update to(i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| switch (x) |
| { |
| case 1: |
| #pragma omp target exit data map(from:i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| } |
| |
| void |
| f7 (int x) |
| { |
| int i; |
| switch (x) |
| { |
| default: |
| #pragma omp barrier /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| switch (x) |
| { |
| default: |
| #pragma omp flush /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| switch (x) |
| { |
| default: |
| #pragma omp taskwait /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| switch (x) |
| { |
| default: |
| #pragma omp taskyield /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| #pragma omp parallel |
| { |
| switch (x) |
| { |
| default: |
| #pragma omp cancel parallel /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| } |
| #pragma omp parallel |
| { |
| switch (x) |
| { |
| default: |
| #pragma omp cancellation point parallel /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| } |
| #pragma omp for ordered(1) |
| for (i = 0; i < 16; i++) |
| { |
| switch (x) |
| { |
| default: |
| #pragma omp ordered depend(source) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| switch (x) |
| { |
| default: |
| #pragma omp ordered depend(sink: i-1) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| } |
| switch (x) |
| { |
| default: |
| #pragma omp target enter data map(to:i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| switch (x) |
| { |
| default: |
| #pragma omp target update to(i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| switch (x) |
| { |
| default: |
| #pragma omp target exit data map(from:i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| } |
| |
| void |
| f8 (int x) |
| { |
| int i; |
| lab1: |
| #pragma omp barrier /* { dg-error "may only be used in compound statements" } */ |
| ; |
| lab2: |
| #pragma omp flush /* { dg-error "may only be used in compound statements" } */ |
| ; |
| lab3: |
| #pragma omp taskwait /* { dg-error "may only be used in compound statements" } */ |
| ; |
| lab4: |
| #pragma omp taskyield /* { dg-error "may only be used in compound statements" } */ |
| ; |
| #pragma omp parallel |
| { |
| lab5: |
| #pragma omp cancel parallel /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| #pragma omp parallel |
| { |
| lab6: |
| #pragma omp cancellation point parallel /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| #pragma omp for ordered(1) |
| for (i = 0; i < 16; i++) |
| { |
| lab7: |
| #pragma omp ordered depend(source) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| lab8: |
| #pragma omp ordered depend(sink: i-1) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |
| lab9: |
| #pragma omp target enter data map(to:i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| lab10: |
| #pragma omp target update to(i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| lab11: |
| #pragma omp target exit data map(from:i) /* { dg-error "may only be used in compound statements" } */ |
| ; |
| } |