master_taskloop_num_tasks_messages.cpp 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. // RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s -Wuninitialized
  2. // RUN: %clang_cc1 -verify -fopenmp-simd -ferror-limit 100 %s -Wuninitialized
  3. void foo() {
  4. }
  5. bool foobool(int argc) {
  6. return argc;
  7. }
  8. struct S1; // expected-note {{declared here}}
  9. template <class T, class S> // expected-note {{declared here}}
  10. int tmain(T argc, S **argv) {
  11. T z;
  12. #pragma omp master taskloop num_tasks // expected-error {{expected '(' after 'num_tasks'}}
  13. for (int i = 0; i < 10; ++i)
  14. foo();
  15. #pragma omp master taskloop num_tasks ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
  16. for (int i = 0; i < 10; ++i)
  17. foo();
  18. #pragma omp master taskloop num_tasks () // expected-error {{expected expression}}
  19. for (int i = 0; i < 10; ++i)
  20. foo();
  21. #pragma omp master taskloop num_tasks (argc // expected-error {{expected ')'}} expected-note {{to match this '('}}
  22. for (int i = 0; i < 10; ++i)
  23. foo();
  24. #pragma omp master taskloop num_tasks (argc)) // expected-warning {{extra tokens at the end of '#pragma omp master taskloop' are ignored}}
  25. for (int i = 0; i < 10; ++i)
  26. foo();
  27. #pragma omp master taskloop num_tasks (argc > 0 ? argv[1][0] : argv[2][argc] + z)
  28. for (int i = 0; i < 10; ++i)
  29. foo();
  30. #pragma omp master taskloop num_tasks (foobool(argc)), num_tasks (true) // expected-error {{directive '#pragma omp master taskloop' cannot contain more than one 'num_tasks' clause}}
  31. for (int i = 0; i < 10; ++i)
  32. foo();
  33. #pragma omp master taskloop num_tasks (S) // expected-error {{'S' does not refer to a value}}
  34. for (int i = 0; i < 10; ++i)
  35. foo();
  36. #pragma omp master taskloop num_tasks (argc argc) // expected-error {{expected ')'}} expected-note {{to match this '('}}
  37. for (int i = 0; i < 10; ++i)
  38. foo();
  39. #pragma omp master taskloop num_tasks(0) // expected-error {{argument to 'num_tasks' clause must be a strictly positive integer value}}
  40. for (int i = 0; i < 10; ++i)
  41. foo();
  42. #pragma omp master taskloop num_tasks(-1) // expected-error {{argument to 'num_tasks' clause must be a strictly positive integer value}}
  43. for (int i = 0; i < 10; ++i)
  44. foo();
  45. #pragma omp master taskloop num_tasks(argc) grainsize(argc) // expected-error {{'grainsize' and 'num_tasks' clause are mutually exclusive and may not appear on the same directive}} expected-note {{'num_tasks' clause is specified here}}
  46. for (int i = 0; i < 10; ++i)
  47. foo();
  48. return 0;
  49. }
  50. int main(int argc, char **argv) {
  51. int z;
  52. #pragma omp master taskloop num_tasks // expected-error {{expected '(' after 'num_tasks'}}
  53. for (int i = 0; i < 10; ++i)
  54. foo();
  55. #pragma omp master taskloop num_tasks ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
  56. for (int i = 0; i < 10; ++i)
  57. foo();
  58. #pragma omp master taskloop num_tasks () // expected-error {{expected expression}}
  59. for (int i = 0; i < 10; ++i)
  60. foo();
  61. #pragma omp master taskloop num_tasks (argc // expected-error {{expected ')'}} expected-note {{to match this '('}}
  62. for (int i = 0; i < 10; ++i)
  63. foo();
  64. #pragma omp master taskloop num_tasks (argc)) // expected-warning {{extra tokens at the end of '#pragma omp master taskloop' are ignored}}
  65. for (int i = 0; i < 10; ++i)
  66. foo();
  67. #pragma omp master taskloop num_tasks (argc > 0 ? argv[1][0] : argv[2][argc] - z)
  68. for (int i = 0; i < 10; ++i)
  69. foo();
  70. #pragma omp master taskloop num_tasks (foobool(argc)), num_tasks (true) // expected-error {{directive '#pragma omp master taskloop' cannot contain more than one 'num_tasks' clause}}
  71. for (int i = 0; i < 10; ++i)
  72. foo();
  73. #pragma omp master taskloop num_tasks (S1) // expected-error {{'S1' does not refer to a value}}
  74. for (int i = 0; i < 10; ++i)
  75. foo();
  76. #pragma omp master taskloop num_tasks (argc argc) // expected-error {{expected ')'}} expected-note {{to match this '('}}
  77. for (int i = 0; i < 10; ++i)
  78. foo();
  79. #pragma omp master taskloop num_tasks (1 0) // expected-error {{expected ')'}} expected-note {{to match this '('}}
  80. for (int i = 0; i < 10; ++i)
  81. foo();
  82. #pragma omp master taskloop num_tasks(if(tmain(argc, argv) // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
  83. for (int i = 0; i < 10; ++i)
  84. foo();
  85. #pragma omp master taskloop num_tasks(0) // expected-error {{argument to 'num_tasks' clause must be a strictly positive integer value}}
  86. for (int i = 0; i < 10; ++i)
  87. foo();
  88. #pragma omp master taskloop num_tasks(-1) // expected-error {{argument to 'num_tasks' clause must be a strictly positive integer value}}
  89. for (int i = 0; i < 10; ++i)
  90. foo();
  91. #pragma omp master taskloop num_tasks(argc) grainsize(argc) // expected-error {{'grainsize' and 'num_tasks' clause are mutually exclusive and may not appear on the same directive}} expected-note {{'num_tasks' clause is specified here}}
  92. for (int i = 0; i < 10; ++i)
  93. foo();
  94. return tmain(argc, argv);
  95. }