1176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// RUN: %clang_cc1 -verify -fopenmp=libiomp5 -ferror-limit 100 %s 2176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 3176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstruct S1 { // expected-note 2 {{declared here}} 4176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines int a; 5176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines}; 6176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 7176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinestemplate <class T> 8176edba5311f6eff0cad2631449885ddf4fbc9eaStephen HinesT tmain(T argc) { 9176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush 10176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines ; 11176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush untied // expected-error {{unexpected OpenMP clause 'untied' in directive '#pragma omp flush'}} 12176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush unknown // expected-warning {{extra tokens at the end of '#pragma omp flush' are ignored}} 13176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines if (argc) 14176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush // expected-error {{'#pragma omp flush' cannot be an immediate substatement}} 15176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines if (argc) { 16176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush 17176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines } 18176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines while (argc) 19176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush // expected-error {{'#pragma omp flush' cannot be an immediate substatement}} 20176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines while (argc) { 21176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush 22176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines } 23176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines do 24176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush // expected-error {{'#pragma omp flush' cannot be an immediate substatement}} 25176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines while (argc) 26176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines ; 27176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines do { 28176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush 29176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines } while (argc); 30176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines switch (argc) 31176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush // expected-error {{'#pragma omp flush' cannot be an immediate substatement}} 32176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines switch (argc) 33176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines case 1: 34176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush // expected-error {{'#pragma omp flush' cannot be an immediate substatement}} 35176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines switch (argc) 36176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines case 1: { 37176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush 38176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines } 39176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines switch (argc) { 40176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush 41176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines case 1: 42176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush // expected-error {{'#pragma omp flush' cannot be an immediate substatement}} 43176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines break; 44176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines default: { 45176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush 46176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines } break; 47176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines } 48176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines for (;;) 49176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush // expected-error {{'#pragma omp flush' cannot be an immediate substatement}} 50176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines for (;;) { 51176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush 52176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines } 53176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hineslabel: 54176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush // expected-error {{'#pragma omp flush' cannot be an immediate substatement}} 55176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hineslabel1 : { 56176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush 57176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines} 58176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 59176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush 60176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}} 61176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush() // expected-error {{expected expression}} 62176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush(argc // expected-error {{expected ')'}} expected-note {{to match this '('}} 63176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush(argc, // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}} 64176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush(argc) 65176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush(S1) // expected-error {{'S1' does not refer to a value}} 66176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush(argc) flush(argc) // expected-warning {{extra tokens at the end of '#pragma omp flush' are ignored}} 67176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp parallel flush(argc) // expected-warning {{extra tokens at the end of '#pragma omp parallel' are ignored}} 68176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines ; 69176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines return T(); 70176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines} 71176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 72176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesint main(int argc, char **argv) { 73176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush 74176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines ; 75176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush untied // expected-error {{unexpected OpenMP clause 'untied' in directive '#pragma omp flush'}} 76176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush unknown // expected-warning {{extra tokens at the end of '#pragma omp flush' are ignored}} 77176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines if (argc) 78176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush // expected-error {{'#pragma omp flush' cannot be an immediate substatement}} 79176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines if (argc) { 80176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush 81176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines } 82176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines while (argc) 83176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush // expected-error {{'#pragma omp flush' cannot be an immediate substatement}} 84176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines while (argc) { 85176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush 86176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines } 87176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines do 88176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush // expected-error {{'#pragma omp flush' cannot be an immediate substatement}} 89176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines while (argc) 90176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines ; 91176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines do { 92176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush 93176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines } while (argc); 94176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines switch (argc) 95176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush // expected-error {{'#pragma omp flush' cannot be an immediate substatement}} 96176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines switch (argc) 97176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines case 1: 98176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush // expected-error {{'#pragma omp flush' cannot be an immediate substatement}} 99176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines switch (argc) 100176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines case 1: { 101176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush 102176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines } 103176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines switch (argc) { 104176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush 105176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines case 1: 106176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush // expected-error {{'#pragma omp flush' cannot be an immediate substatement}} 107176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines break; 108176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines default: { 109176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush 110176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines } break; 111176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines } 112176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines for (;;) 113176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush // expected-error {{'#pragma omp flush' cannot be an immediate substatement}} 114176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines for (;;) { 115176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush 116176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines } 117176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hineslabel: 118176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush // expected-error {{'#pragma omp flush' cannot be an immediate substatement}} 119176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hineslabel1 : { 120176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush 121176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines} 122176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 123176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush 124176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}} 125176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush() // expected-error {{expected expression}} 126176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush(argc // expected-error {{expected ')'}} expected-note {{to match this '('}} 127176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush(argc, // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}} 128176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush(argc) 129176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush(S1) // expected-error {{'S1' does not refer to a value}} 130176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp flush(argc) flush(argc) // expected-warning {{extra tokens at the end of '#pragma omp flush' are ignored}} 131176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma omp parallel flush(argc) // expected-warning {{extra tokens at the end of '#pragma omp parallel' are ignored}} 132176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines ; 133176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines return tmain(argc); 134176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines} 135