207 lines · cpp
1// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=51 -ferror-limit 100 %s -Wuninitialized2// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=60 -ferror-limit 100 %s -Wuninitialized3 4// RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=51 -ferror-limit 100 %s -Wuninitialized5// RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=60 -ferror-limit 100 %s -Wuninitialized6 7// Test outside of an executable context.8#pragma omp error severity(warning) message("msg") at(compilation) // expected-warning {{msg}}9 10template <class T>11T tmain(T argc) {12 if (argc)13#pragma omp error // expected-error {{'#pragma omp error' cannot be an immediate substatement}}14 if (argc) {15#pragma omp error // expected-error {{ERROR}}16 }17 while (argc)18#pragma omp error // expected-error {{'#pragma omp error' cannot be an immediate substatement}}19 while (argc) {20#pragma omp error // expected-error {{ERROR}}21 }22 do23#pragma omp error // expected-error {{'#pragma omp error' cannot be an immediate substatement}}24 while (argc)25 ;26 do {27#pragma omp error // expected-error {{ERROR}}28 } while (argc);29 switch (argc)30#pragma omp error // expected-error {{'#pragma omp error' cannot be an immediate substatement}}31 switch (argc)32 case 1:33#pragma omp error // expected-error {{'#pragma omp error' cannot be an immediate substatement}}34 switch (argc)35 case 1: {36#pragma omp error // expected-error {{ERROR}}37 }38 switch (argc) {39#pragma omp error // expected-error {{ERROR}}40 case 1:41#pragma omp error // expected-error {{'#pragma omp error' cannot be an immediate substatement}}42 break;43 default: {44#pragma omp error // expected-error {{ERROR}}45 } break;46 }47 for (;;)48#pragma omp error // expected-error {{'#pragma omp error' cannot be an immediate substatement}}49 for (;;) {50#pragma omp error // expected-error {{ERROR}}51 }52label:53#pragma omp error // expected-error {{'#pragma omp error' cannot be an immediate substatement}}54label1 : {55#pragma omp error // expected-error {{ERROR}}56}57if (1)58 label2:59#pragma omp error // expected-error {{'#pragma omp error' cannot be an immediate substatement}}60 61// expected-error@+1 {{ERROR}}62#pragma omp error at() // expected-error {{expected 'compilation' or 'execution' in OpenMP clause 'at'}}63 64// expected-error@+1 {{ERROR}}65#pragma omp error at(up) // expected-error {{expected 'compilation' or 'execution' in OpenMP clause 'at'}}66 67// expected-error@+3 {{ERROR}}68// expected-error@+2 {{expected ')'}}69// expected-note@+1 {{to match this '('}}70#pragma omp error at(up(a)) // expected-error {{expected 'compilation' or 'execution' in OpenMP clause 'at'}}71 72#pragma omp error at(execution) // no error73 74#pragma omp error at(compilation) // expected-error {{ERROR}}75 76// expected-error@+1 {{ERROR}}77#pragma omp error at(compilation) at(execution) //expected-error {{directive '#pragma omp error' cannot contain more than one 'at' clause}}78 79// expected-error@+1 {{ERROR}}80#pragma omp error severity() // expected-error {{expected 'fatal' or 'warning' in OpenMP clause 'severity'}}81// expected-error@+1 {{ERROR}}82#pragma omp error severity(xyz) // expected-error {{expected 'fatal' or 'warning' in OpenMP clause 'severity'}}83// expected-error@+1 {{ERROR}}84#pragma omp error severity(fatal) severity(warning) // expected-error {{directive '#pragma omp error' cannot contain more than one 'severity' clause}}85 86// expected-error@+1 {{ERROR}}87#pragma omp error severity(fatal) severity(fatal) // expected-error {{directive '#pragma omp error' cannot contain more than one 'severity' clause}}88 89// expected-warning@+2 {{WARNING}}90// expected-warning@+1 {{WARNING}}91#pragma omp error severity(warning) severity(warning) // expected-error {{directive '#pragma omp error' cannot contain more than one 'severity' clause}}92 93// expected-warning@+1 {{WARNING}}94#pragma omp error severity(warning) // expected-warning {{WARNING}}95#pragma omp error severity(fatal) // expected-error {{ERROR}}96 97// expected-warning@+1 {{WARNING}}98#pragma omp error at(compilation) severity(warning) // expected-warning {{WARNING}}99#pragma omp error at(execution) severity(warning) // no error, diagnosic at runtime100#pragma omp error at(compilation) severity(fatal) // expected-error {{ERROR}}101#pragma omp error at(execution) severity(fatal) // no error, error at runtime102 103#pragma omp error message("GPU compiler is needed.") // expected-error {{GPU compiler is needed}}104#pragma omp error at(compilation) message("GPU compiler is needed.") // expected-error {{GPU compiler is needed}}105#pragma omp error at(execution) message("GPU compiler is needed.") // no error106// expected-warning@+1 {{GPU compiler is needed.}}107#pragma omp error severity(warning) message("GPU compiler is needed.") // expected-warning {{GPU compiler is needed.}}108#pragma omp error severity(fatal) message("GPU compiler is needed.") // expected-error {{GPU compiler is needed}}109// expected-warning@+1 {{GPU compiler is needed.}}110#pragma omp error at(compilation) severity(warning) message("GPU compiler is needed.") // expected-warning {{GPU compiler is needed.}}111#pragma omp error at(compilation) severity(fatal) message("GPU compiler is needed.") // expected-error {{GPU compiler is needed.}}112#pragma omp error at(execution) severity(warning) message("GPU compiler is needed.") // no warning warning will emit at runtime.113#pragma omp error at(execution) severity(fatal) message("GPU compiler is needed.") // no warning warning will emit at runtime.114 115// expected-error@+1 {{GPU compiler is needed.}}116#pragma omp error message("GPU compiler is needed.") message("GPU compiler is needed.") // expected-error {{directive '#pragma omp error' cannot contain more than one 'message' clause}}117 int a;118// expected-warning@+1 {{expected string in 'clause message' - ignoring}}119#pragma omp error message(a) // expected-error {{ERROR}}120 char str[] = "msg";121// expected-warning@+1 {{expected string literal in 'clause message' - ignoring}}122#pragma omp error message(str) // expected-error {{ERROR}}123#pragma omp error at(execution) message(str) // no error124// expected-error@+1 {{ERROR}}125#pragma omp error message() // expected-error {{expected expression}}126 return T();127}128 129#pragma omp error at(execution) // expected-error {{unexpected 'execution' modifier in non-executable context}}130 131#pragma omp error at(compilation) // expected-error {{ERROR}}132class A {133 134#pragma omp error at(compilation) // expected-error {{ERROR}}135 136#pragma omp error at(execution) // expected-error {{unexpected 'execution' modifier in non-executable context}}137 int A;138};139 140int main(int argc, char **argv) {141// expected-error@+1 {{ERROR}}142#pragma omp error143 ;144// expected-error@+1 {{ERROR}}145#pragma omp error untied // expected-error {{unexpected OpenMP clause 'untied' in directive '#pragma omp error'}}146 if (argc)147#pragma omp error // expected-error {{'#pragma omp error' cannot be an immediate substatement}}148 if (argc) {149// expected-error@+1 {{ERROR}}150#pragma omp error151 }152 while (argc)153#pragma omp error // expected-error {{'#pragma omp error' cannot be an immediate substatement}}154 while (argc) {155// expected-error@+1 {{ERROR}}156#pragma omp error157 }158 do159#pragma omp error // expected-error {{'#pragma omp error' cannot be an immediate substatement}}160 while (argc)161 ;162 do {163// expected-error@+1 {{ERROR}}164#pragma omp error165 } while (argc);166 switch (argc)167#pragma omp error // expected-error {{'#pragma omp error' cannot be an immediate substatement}}168 switch (argc)169 case 1:170#pragma omp error // expected-error {{'#pragma omp error' cannot be an immediate substatement}}171 switch (argc)172 case 1: {173// expected-error@+1 {{ERROR}}174#pragma omp error175 }176 switch (argc) {177// expected-error@+1 {{ERROR}}178#pragma omp error179 case 1:180// expected-error@+1 {{'#pragma omp error' cannot be an immediate substatement}}181#pragma omp error182 break;183 default: {184// expected-error@+1 {{ERROR}}185#pragma omp error186 } break;187 }188 for (;;)189#pragma omp error // expected-error {{'#pragma omp error' cannot be an immediate substatement}}190 for (;;) {191// expected-error@+1 {{ERROR}}192#pragma omp error193 }194label:195// expected-error@+1 {{'#pragma omp error' cannot be an immediate substatement}}196#pragma omp error197label1 : {198// expected-error@+1 {{ERROR}}199#pragma omp error200}201if (1)202 label2:203#pragma omp error // expected-error {{'#pragma omp error' cannot be an immediate substatement}}204 205 return tmain(argc);// expected-note {{in instantiation of function template specialization 'tmain<int>' requested here}}206}207