brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.8 KiB · 7260b99 Raw
192 lines · cpp
1// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=45 -ferror-limit 100 %s -Wuninitialized2 3// RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=45 -ferror-limit 100 %s -Wuninitialized4 5// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s -Wuninitialized6// RUN: %clang_cc1 -verify -fopenmp-simd -ferror-limit 100 %s -Wuninitialized7 8void foo() {9}10 11bool foobool(int argc) {12  return argc;13}14 15void xxx(int argc) {16  int cond; // expected-note {{initialize the variable 'cond' to silence this warning}}17#pragma omp distribute parallel for if(cond) // expected-warning {{variable 'cond' is uninitialized when used here}}18  for (int i = 0; i < 10; ++i)19    ;20}21 22struct S1; // expected-note {{declared here}}23 24template <class T, class S> // expected-note {{declared here}}25int tmain(T argc, S **argv) {26  T i, z;27#pragma omp target28#pragma omp teams29#pragma omp distribute parallel for if // expected-error {{expected '(' after 'if'}}30  for (i = 0; i < argc; ++i) foo();31#pragma omp target32#pragma omp teams33#pragma omp distribute parallel for if ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}34  for (i = 0; i < argc; ++i) foo();35#pragma omp target36#pragma omp teams37#pragma omp distribute parallel for if () // expected-error {{expected expression}}38  for (i = 0; i < argc; ++i) foo();39#pragma omp target40#pragma omp teams41#pragma omp distribute parallel for if (argc // expected-error {{expected ')'}} expected-note {{to match this '('}}42  for (i = 0; i < argc; ++i) foo();43#pragma omp target44#pragma omp teams45#pragma omp distribute parallel for if (argc)) // expected-warning {{extra tokens at the end of '#pragma omp distribute parallel for' are ignored}}46  for (i = 0; i < argc; ++i) foo();47#pragma omp target48#pragma omp teams49#pragma omp distribute parallel for if (argc > 0 ? argv[1] : argv[2])50  for (i = 0; i < argc; ++i) foo();51#pragma omp target52#pragma omp teams53#pragma omp distribute parallel for if (foobool(argc)), if (true) // expected-error {{directive '#pragma omp distribute parallel for' cannot contain more than one 'if' clause}}54  for (i = 0; i < argc; ++i) foo();55#pragma omp target56#pragma omp teams57#pragma omp distribute parallel for if (S) // expected-error {{'S' does not refer to a value}}58  for (i = 0; i < argc; ++i) foo();59#pragma omp target60#pragma omp teams61#pragma omp distribute parallel for if (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}62  for (i = 0; i < argc; ++i) foo();63#pragma omp target64#pragma omp teams65#pragma omp distribute parallel for if (argc argc) // expected-error {{expected ')'}} expected-note {{to match this '('}}66  for (i = 0; i < argc; ++i) foo();67#pragma omp target68#pragma omp teams69#pragma omp distribute parallel for if(argc+z)70  for (i = 0; i < argc; ++i) foo();71#pragma omp target72#pragma omp teams73#pragma omp distribute parallel for if(parallel // expected-error {{use of undeclared identifier 'parallel'}} expected-error {{expected ')'}} expected-note {{to match this '('}}74  for (i = 0; i < argc; ++i) foo();75#pragma omp target76#pragma omp teams77#pragma omp distribute parallel for if(parallel : // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}78  for (i = 0; i < argc; ++i) foo();79#pragma omp target80#pragma omp teams81#pragma omp distribute parallel for if(parallel : argc // expected-error {{expected ')'}} expected-note {{to match this '('}}82  for (i = 0; i < argc; ++i) foo();83#pragma omp target84#pragma omp teams85#pragma omp distribute parallel for if(parallel : argc)86  for (i = 0; i < argc; ++i) foo();87#pragma omp target88#pragma omp teams89#pragma omp distribute parallel for if(parallel : argc) if (for:argc) // expected-error {{directive name modifier 'for' is not allowed for '#pragma omp distribute parallel for'}}90  for (i = 0; i < argc; ++i) foo();91#pragma omp target92#pragma omp teams93#pragma omp distribute parallel for if(parallel : argc) if (parallel:argc) // expected-error {{directive '#pragma omp distribute parallel for' cannot contain more than one 'if' clause with 'parallel' name modifier}}94  for (i = 0; i < argc; ++i) foo();95#pragma omp target96#pragma omp teams97#pragma omp distribute parallel for if(parallel : argc) if (argc) // expected-error {{no more 'if' clause is allowed}} expected-note {{previous clause with directive name modifier specified here}}98  for (i = 0; i < argc; ++i) foo();99#pragma omp target100#pragma omp teams101#pragma omp distribute parallel for if(distribute : argc) // expected-error {{directive name modifier 'distribute' is not allowed for '#pragma omp distribute parallel for'}}102  for (i = 0; i < argc; ++i) foo();103 104  return 0;105}106 107int main(int argc, char **argv) {108  int i, z;109#pragma omp target110#pragma omp teams111#pragma omp distribute parallel for if // expected-error {{expected '(' after 'if'}}112  for (i = 0; i < argc; ++i) foo();113#pragma omp target114#pragma omp teams115#pragma omp distribute parallel for if ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}116  for (i = 0; i < argc; ++i) foo();117#pragma omp target118#pragma omp teams119#pragma omp distribute parallel for if () // expected-error {{expected expression}}120  for (i = 0; i < argc; ++i) foo();121#pragma omp target122#pragma omp teams123#pragma omp distribute parallel for if (argc // expected-error {{expected ')'}} expected-note {{to match this '('}}124  for (i = 0; i < argc; ++i) foo();125#pragma omp target126#pragma omp teams127#pragma omp distribute parallel for if (argc)) // expected-warning {{extra tokens at the end of '#pragma omp distribute parallel for' are ignored}}128  for (i = 0; i < argc; ++i) foo();129#pragma omp target130#pragma omp teams131#pragma omp distribute parallel for if (argc > 0 ? argv[1] : argv[2])132  for (i = 0; i < argc; ++i) foo();133#pragma omp target134#pragma omp teams135#pragma omp distribute parallel for if (foobool(argc)), if (true) // expected-error {{directive '#pragma omp distribute parallel for' cannot contain more than one 'if' clause}}136  for (i = 0; i < argc; ++i) foo();137#pragma omp target138#pragma omp teams139#pragma omp distribute parallel for if (S1) // expected-error {{'S1' does not refer to a value}}140  for (i = 0; i < argc; ++i) foo();141#pragma omp target142#pragma omp teams143#pragma omp distribute parallel for if (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}144  for (i = 0; i < argc; ++i) foo();145#pragma omp target146#pragma omp teams147#pragma omp distribute parallel for if (argc argc) // expected-error {{expected ')'}} expected-note {{to match this '('}}148  for (i = 0; i < argc; ++i) foo();149#pragma omp target150#pragma omp teams151#pragma omp distribute parallel for if (1 0) // expected-error {{expected ')'}} expected-note {{to match this '('}}152  for (i = 0; i < argc; ++i) foo();153#pragma omp target154#pragma omp teams155#pragma omp distribute parallel for if(if(tmain(argc, argv) // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}156  for (i = 0; i < argc; ++i) foo();157#pragma omp target158#pragma omp teams159#pragma omp distribute parallel for if(parallel // expected-error {{use of undeclared identifier 'parallel'}} expected-error {{expected ')'}} expected-note {{to match this '('}}160  for (i = 0; i < argc; ++i) foo();161#pragma omp target162#pragma omp teams163#pragma omp distribute parallel for if(parallel : // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}164  for (i = 0; i < argc; ++i) foo();165#pragma omp target166#pragma omp teams167#pragma omp distribute parallel for if(parallel : argc // expected-error {{expected ')'}} expected-note {{to match this '('}}168  for (i = 0; i < argc; ++i) foo();169#pragma omp target170#pragma omp teams171#pragma omp distribute parallel for if(parallel : argc-z)172  for (i = 0; i < argc; ++i) foo();173#pragma omp target174#pragma omp teams175#pragma omp distribute parallel for if(parallel : argc) if (for:argc) // expected-error {{directive name modifier 'for' is not allowed for '#pragma omp distribute parallel for'}}176  for (i = 0; i < argc; ++i) foo();177#pragma omp target178#pragma omp teams179#pragma omp distribute parallel for if(parallel : argc) if (parallel:argc) // expected-error {{directive '#pragma omp distribute parallel for' cannot contain more than one 'if' clause with 'parallel' name modifier}}180  for (i = 0; i < argc; ++i) foo();181#pragma omp target182#pragma omp teams183#pragma omp distribute parallel for if(parallel : argc) if (argc) // expected-error {{no more 'if' clause is allowed}} expected-note {{previous clause with directive name modifier specified here}}184  for (i = 0; i < argc; ++i) foo();185#pragma omp target186#pragma omp teams187#pragma omp distribute parallel for if(distribute : argc) // expected-error {{directive name modifier 'distribute' is not allowed for '#pragma omp distribute parallel for'}}188  for (i = 0; i < argc; ++i) foo();189 190  return tmain(argc, argv);191}192