diff options
author | Joel E. Denny <jdenny.ornl@gmail.com> | 2019-04-23 17:04:15 +0000 |
---|---|---|
committer | Joel E. Denny <jdenny.ornl@gmail.com> | 2019-04-23 17:04:15 +0000 |
commit | 3234887fe2ea94d5997b4ba9999401459a29905b (patch) | |
tree | 843fa6636935b50c1cf5a6871a8b19fefc91332e | |
parent | bdb864a5762e10a485c0b76c5677f5c14b4045d7 (diff) | |
download | bcm5719-llvm-3234887fe2ea94d5997b4ba9999401459a29905b.tar.gz bcm5719-llvm-3234887fe2ea94d5997b4ba9999401459a29905b.zip |
[APSInt][OpenMP] Fix isNegative, etc. for unsigned types
Without this patch, APSInt inherits APInt::isNegative, which merely
checks the sign bit without regard to whether the type is actually
signed. isNonNegative and isStrictlyPositive call isNegative and so
are also affected.
This patch adjusts APSInt to override isNegative, isNonNegative, and
isStrictlyPositive with implementations that consider whether the type
is signed.
A large set of Clang OpenMP tests are affected. Without this patch,
these tests assume that `true` is not a valid argument for clauses
like `collapse`. Indeed, `true` fails APInt::isStrictlyPositive but
not APSInt::isStrictlyPositive. This patch adjusts those tests to
assume `true` should be accepted.
This patch also adds tests revealing various other similar fixes due
to APSInt::isNegative calls in Clang's ExprConstant.cpp and
SemaExpr.cpp: `++` and `--` overflow in `constexpr`, evaluated object
size based on `alloc_size`, `<<` and `>>` shift count validation, and
OpenMP array section validation.
Reviewed By: lebedev.ri, ABataev, hfinkel
Differential Revision: https://reviews.llvm.org/D59712
llvm-svn: 359012
64 files changed, 359 insertions, 124 deletions
diff --git a/clang/test/CodeGen/alloc-size.c b/clang/test/CodeGen/alloc-size.c index aa5b295b0c3..16cc0fe1181 100644 --- a/clang/test/CodeGen/alloc-size.c +++ b/clang/test/CodeGen/alloc-size.c @@ -357,3 +357,12 @@ void test12() { // CHECK: store i32 -1 gi = OBJECT_SIZE_BUILTIN(my_signed_calloc(-2, 1), 0); } + +void *alloc_uchar(unsigned char) __attribute__((alloc_size(1))); + +// CHECK-LABEL: @test13 +void test13() { + // If 128 were incorrectly seen as negative, the result would become -1. + // CHECK: store i32 128, + gi = OBJECT_SIZE_BUILTIN(alloc_uchar(128), 0); +} diff --git a/clang/test/OpenMP/distribute_collapse_messages.cpp b/clang/test/OpenMP/distribute_collapse_messages.cpp index b852fd2826b..e4164daaed1 100644 --- a/clang/test/OpenMP/distribute_collapse_messages.cpp +++ b/clang/test/OpenMP/distribute_collapse_messages.cpp @@ -42,7 +42,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} // expected-note@+5 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+3 2 {{directive '#pragma omp distribute' cannot contain more than one 'collapse' clause}} - // expected-error@+2 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+2 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+1 2 {{expression is not an integral constant expression}} #pragma omp distribute collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; @@ -85,7 +85,7 @@ int main(int argc, char **argv) { #endif // expected-error@+3 {{expression is not an integral constant expression}} // expected-error@+2 2 {{directive '#pragma omp distribute' cannot contain more than one 'collapse' clause}} - // expected-error@+1 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}} #pragma omp distribute collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; #pragma omp distribute collapse (S1) // expected-error {{'S1' does not refer to a value}} diff --git a/clang/test/OpenMP/distribute_parallel_for_collapse_messages.cpp b/clang/test/OpenMP/distribute_parallel_for_collapse_messages.cpp index f01dfeea5c2..c3298f1756d 100644 --- a/clang/test/OpenMP/distribute_parallel_for_collapse_messages.cpp +++ b/clang/test/OpenMP/distribute_parallel_for_collapse_messages.cpp @@ -53,7 +53,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp distribute parallel for collapse ((ST > 0) ? 1 + ST : 2) // expected-note 2 {{as specified in 'collapse' clause}} for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp distribute parallel for', but found only 1}} // expected-error@+8 2 {{directive '#pragma omp distribute parallel for' cannot contain more than one 'collapse' clause}} - // expected-error@+7 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+7 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+6 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+4 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -124,7 +124,7 @@ int main(int argc, char **argv) { // expected-note@+6{{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+4 2 {{directive '#pragma omp distribute parallel for' cannot contain more than one 'collapse' clause}} - // expected-error@+3 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+3 {{argument to 'collapse' clause must be a strictly positive integer value}} #pragma omp target #pragma omp teams #pragma omp distribute parallel for collapse (foobool(argc)), collapse (true), collapse (-5) diff --git a/clang/test/OpenMP/distribute_parallel_for_simd_collapse_messages.cpp b/clang/test/OpenMP/distribute_parallel_for_simd_collapse_messages.cpp index b12dcc19d02..9399594be20 100644 --- a/clang/test/OpenMP/distribute_parallel_for_simd_collapse_messages.cpp +++ b/clang/test/OpenMP/distribute_parallel_for_simd_collapse_messages.cpp @@ -53,7 +53,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp distribute parallel for simd collapse ((ST > 0) ? 1 + ST : 2) // expected-note 2 {{as specified in 'collapse' clause}} for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp distribute parallel for simd', but found only 1}} // expected-error@+8 2 {{directive '#pragma omp distribute parallel for simd' cannot contain more than one 'collapse' clause}} - // expected-error@+7 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+7 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+6 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+4 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -124,7 +124,7 @@ int main(int argc, char **argv) { // expected-note@+6{{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+4 2 {{directive '#pragma omp distribute parallel for simd' cannot contain more than one 'collapse' clause}} - // expected-error@+3 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+3 {{argument to 'collapse' clause must be a strictly positive integer value}} #pragma omp target #pragma omp teams #pragma omp distribute parallel for simd collapse (foobool(argc)), collapse (true), collapse (-5) diff --git a/clang/test/OpenMP/distribute_parallel_for_simd_safelen_messages.cpp b/clang/test/OpenMP/distribute_parallel_for_simd_safelen_messages.cpp index 93766f9a6a3..7e76c1f6ab2 100644 --- a/clang/test/OpenMP/distribute_parallel_for_simd_safelen_messages.cpp +++ b/clang/test/OpenMP/distribute_parallel_for_simd_safelen_messages.cpp @@ -63,11 +63,14 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} argv[0][i] = argv[0][i] - argv[0][i-ST]; #if __cplusplus >= 201103L - // expected-note@+4 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+7 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif #pragma omp target #pragma omp teams -#pragma omp distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{directive '#pragma omp distribute parallel for simd' cannot contain more than one 'safelen' clause}} expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{expression is not an integral constant expression}} +// expected-error@+3 2 {{directive '#pragma omp distribute parallel for simd' cannot contain more than one 'safelen' clause}} +// expected-error@+2 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+1 2 {{expression is not an integral constant expression}} +#pragma omp distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; @@ -144,11 +147,14 @@ int main(int argc, char **argv) { argv[0][i] = argv[0][i] - argv[0][i-4]; #if __cplusplus >= 201103L - // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+7 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif #pragma omp target #pragma omp teams -#pragma omp parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{directive '#pragma omp parallel for simd' cannot contain more than one 'safelen' clause}} expected-error {{expression is not an integral constant expression}} +// expected-error@+3 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+2 2 {{directive '#pragma omp parallel for simd' cannot contain more than one 'safelen' clause}} +// expected-error@+1 {{expression is not an integral constant expression}} +#pragma omp parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; diff --git a/clang/test/OpenMP/distribute_parallel_for_simd_simdlen_messages.cpp b/clang/test/OpenMP/distribute_parallel_for_simd_simdlen_messages.cpp index 8e40e3547f7..9c1c5520330 100644 --- a/clang/test/OpenMP/distribute_parallel_for_simd_simdlen_messages.cpp +++ b/clang/test/OpenMP/distribute_parallel_for_simd_simdlen_messages.cpp @@ -66,11 +66,14 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} argv[0][i] = argv[0][i] - argv[0][i-ST]; #if __cplusplus >= 201103L - // expected-note@+4 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+7 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif #pragma omp target #pragma omp teams -#pragma omp distribute parallel for simd simdlen (foobool(argc)), simdlen (true), simdlen (-5) // expected-error 2 {{directive '#pragma omp distribute parallel for simd' cannot contain more than one 'simdlen' clause}} expected-error 2 {{argument to 'simdlen' clause must be a strictly positive integer value}} expected-error 2 {{expression is not an integral constant expression}} +// expected-error@+3 2 {{directive '#pragma omp distribute parallel for simd' cannot contain more than one 'simdlen' clause}} +// expected-error@+2 {{argument to 'simdlen' clause must be a strictly positive integer value}} +// expected-error@+1 2 {{expression is not an integral constant expression}} +#pragma omp distribute parallel for simd simdlen (foobool(argc)), simdlen (true), simdlen (-5) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; @@ -148,11 +151,14 @@ int main(int argc, char **argv) { #if __cplusplus >= 201103L - // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+7 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif #pragma omp target #pragma omp teams -#pragma omp distribute parallel for simd simdlen (foobool(argc)), simdlen (true), simdlen (-5) // expected-error {{expression is not an integral constant expression}} expected-error 2 {{directive '#pragma omp distribute parallel for simd' cannot contain more than one 'simdlen' clause}} expected-error 2 {{argument to 'simdlen' clause must be a strictly positive integer value}} +// expected-error@+3 {{expression is not an integral constant expression}} +// expected-error@+2 2 {{directive '#pragma omp distribute parallel for simd' cannot contain more than one 'simdlen' clause}} +// expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}} +#pragma omp distribute parallel for simd simdlen (foobool(argc)), simdlen (true), simdlen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; diff --git a/clang/test/OpenMP/distribute_simd_collapse_messages.cpp b/clang/test/OpenMP/distribute_simd_collapse_messages.cpp index f4d5b73634c..204719a2e6d 100644 --- a/clang/test/OpenMP/distribute_simd_collapse_messages.cpp +++ b/clang/test/OpenMP/distribute_simd_collapse_messages.cpp @@ -53,7 +53,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp distribute simd collapse ((ST > 0) ? 1 + ST : 2) // expected-note 2 {{as specified in 'collapse' clause}} for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp distribute simd', but found only 1}} // expected-error@+8 2 {{directive '#pragma omp distribute simd' cannot contain more than one 'collapse' clause}} - // expected-error@+7 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+7 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+6 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+4 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -124,7 +124,7 @@ int main(int argc, char **argv) { // expected-note@+6{{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+4 2 {{directive '#pragma omp distribute simd' cannot contain more than one 'collapse' clause}} - // expected-error@+3 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+3 {{argument to 'collapse' clause must be a strictly positive integer value}} #pragma omp target #pragma omp teams #pragma omp distribute simd collapse (foobool(argc)), collapse (true), collapse (-5) diff --git a/clang/test/OpenMP/distribute_simd_safelen_messages.cpp b/clang/test/OpenMP/distribute_simd_safelen_messages.cpp index c95d121ca2c..30c0976368f 100644 --- a/clang/test/OpenMP/distribute_simd_safelen_messages.cpp +++ b/clang/test/OpenMP/distribute_simd_safelen_messages.cpp @@ -63,11 +63,14 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} argv[0][i] = argv[0][i] - argv[0][i-ST]; #if __cplusplus >= 201103L - // expected-note@+4 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+7 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif #pragma omp target #pragma omp teams -#pragma omp distribute simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{directive '#pragma omp distribute simd' cannot contain more than one 'safelen' clause}} expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{expression is not an integral constant expression}} +// expected-error@+3 2 {{directive '#pragma omp distribute simd' cannot contain more than one 'safelen' clause}} +// expected-error@+2 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+1 2 {{expression is not an integral constant expression}} +#pragma omp distribute simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; @@ -144,11 +147,14 @@ int main(int argc, char **argv) { argv[0][i] = argv[0][i] - argv[0][i-4]; #if __cplusplus >= 201103L - // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+7 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif #pragma omp target #pragma omp teams -#pragma omp parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{directive '#pragma omp parallel for simd' cannot contain more than one 'safelen' clause}} expected-error {{expression is not an integral constant expression}} +// expected-error@+3 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+2 2 {{directive '#pragma omp parallel for simd' cannot contain more than one 'safelen' clause}} +// expected-error@+1 {{expression is not an integral constant expression}} +#pragma omp parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; diff --git a/clang/test/OpenMP/distribute_simd_simdlen_messages.cpp b/clang/test/OpenMP/distribute_simd_simdlen_messages.cpp index c95d121ca2c..30c0976368f 100644 --- a/clang/test/OpenMP/distribute_simd_simdlen_messages.cpp +++ b/clang/test/OpenMP/distribute_simd_simdlen_messages.cpp @@ -63,11 +63,14 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} argv[0][i] = argv[0][i] - argv[0][i-ST]; #if __cplusplus >= 201103L - // expected-note@+4 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+7 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif #pragma omp target #pragma omp teams -#pragma omp distribute simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{directive '#pragma omp distribute simd' cannot contain more than one 'safelen' clause}} expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{expression is not an integral constant expression}} +// expected-error@+3 2 {{directive '#pragma omp distribute simd' cannot contain more than one 'safelen' clause}} +// expected-error@+2 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+1 2 {{expression is not an integral constant expression}} +#pragma omp distribute simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; @@ -144,11 +147,14 @@ int main(int argc, char **argv) { argv[0][i] = argv[0][i] - argv[0][i-4]; #if __cplusplus >= 201103L - // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+7 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif #pragma omp target #pragma omp teams -#pragma omp parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{directive '#pragma omp parallel for simd' cannot contain more than one 'safelen' clause}} expected-error {{expression is not an integral constant expression}} +// expected-error@+3 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+2 2 {{directive '#pragma omp parallel for simd' cannot contain more than one 'safelen' clause}} +// expected-error@+1 {{expression is not an integral constant expression}} +#pragma omp parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; diff --git a/clang/test/OpenMP/for_collapse_messages.cpp b/clang/test/OpenMP/for_collapse_messages.cpp index 230880b22db..5530ddcc6a5 100644 --- a/clang/test/OpenMP/for_collapse_messages.cpp +++ b/clang/test/OpenMP/for_collapse_messages.cpp @@ -39,7 +39,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp for collapse ((ST > 0) ? 1 + ST : 2) // expected-note 2 {{as specified in 'collapse' clause}} for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp for', but found only 1}} // expected-error@+6 2 {{directive '#pragma omp for' cannot contain more than one 'collapse' clause}} - // expected-error@+5 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+5 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -86,7 +86,7 @@ int main(int argc, char **argv) { // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp for' cannot contain more than one 'collapse' clause}} - // expected-error@+1 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}} #pragma omp for collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; #pragma omp for collapse (S1) // expected-error {{'S1' does not refer to a value}} diff --git a/clang/test/OpenMP/for_ordered_clause.cpp b/clang/test/OpenMP/for_ordered_clause.cpp index ec29a989d0b..7ccf570def3 100644 --- a/clang/test/OpenMP/for_ordered_clause.cpp +++ b/clang/test/OpenMP/for_ordered_clause.cpp @@ -47,7 +47,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here} for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i - ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp for', but found only 1}} // expected-error@+6 2 {{directive '#pragma omp for' cannot contain more than one 'ordered' clause}} -// expected-error@+5 2 {{argument to 'ordered' clause must be a strictly positive integer value}} +// expected-error@+5 {{argument to 'ordered' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -113,7 +113,7 @@ int main(int argc, char **argv) { // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp for' cannot contain more than one 'ordered' clause}} -// expected-error@+1 2 {{argument to 'ordered' clause must be a strictly positive integer value}} +// expected-error@+1 {{argument to 'ordered' clause must be a strictly positive integer value}} #pragma omp for ordered(foobool(argc)), ordered(true), ordered(-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i - 4]; diff --git a/clang/test/OpenMP/for_simd_collapse_messages.cpp b/clang/test/OpenMP/for_simd_collapse_messages.cpp index 9e9b8ee6752..f5c130f30a3 100644 --- a/clang/test/OpenMP/for_simd_collapse_messages.cpp +++ b/clang/test/OpenMP/for_simd_collapse_messages.cpp @@ -39,7 +39,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp for simd collapse ((ST > 0) ? 1 + ST : 2) // expected-note 2 {{as specified in 'collapse' clause}} for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp for simd', but found only 1}} // expected-error@+6 2 {{directive '#pragma omp for simd' cannot contain more than one 'collapse' clause}} - // expected-error@+5 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+5 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -86,7 +86,7 @@ int main(int argc, char **argv) { // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp for simd' cannot contain more than one 'collapse' clause}} - // expected-error@+1 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}} #pragma omp for simd collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; #pragma omp for simd collapse (S1) // expected-error {{'S1' does not refer to a value}} diff --git a/clang/test/OpenMP/for_simd_safelen_messages.cpp b/clang/test/OpenMP/for_simd_safelen_messages.cpp index 31b0f84cba4..6868b938c2c 100644 --- a/clang/test/OpenMP/for_simd_safelen_messages.cpp +++ b/clang/test/OpenMP/for_simd_safelen_messages.cpp @@ -39,7 +39,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp for simd safelen ((ST > 0) ? 1 + ST : 2) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error@+6 2 {{directive '#pragma omp for simd' cannot contain more than one 'safelen' clause}} - // expected-error@+5 2 {{argument to 'safelen' clause must be a strictly positive integer value}} + // expected-error@+5 {{argument to 'safelen' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -84,7 +84,7 @@ int main(int argc, char **argv) { // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp for simd' cannot contain more than one 'safelen' clause}} - // expected-error@+1 2 {{argument to 'safelen' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}} #pragma omp for simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; #pragma omp for simd safelen (S1) // expected-error {{'S1' does not refer to a value}} diff --git a/clang/test/OpenMP/for_simd_simdlen_messages.cpp b/clang/test/OpenMP/for_simd_simdlen_messages.cpp index 09954283a11..86cc4690a98 100644 --- a/clang/test/OpenMP/for_simd_simdlen_messages.cpp +++ b/clang/test/OpenMP/for_simd_simdlen_messages.cpp @@ -39,7 +39,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp for simd simdlen ((ST > 0) ? 1 + ST : 2) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error@+6 2 {{directive '#pragma omp for simd' cannot contain more than one 'simdlen' clause}} - // expected-error@+5 2 {{argument to 'simdlen' clause must be a strictly positive integer value}} + // expected-error@+5 {{argument to 'simdlen' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -84,7 +84,7 @@ int main(int argc, char **argv) { // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp for simd' cannot contain more than one 'simdlen' clause}} - // expected-error@+1 2 {{argument to 'simdlen' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}} #pragma omp for simd simdlen (foobool(argc)), simdlen (true), simdlen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; #pragma omp for simd simdlen (S1) // expected-error {{'S1' does not refer to a value}} diff --git a/clang/test/OpenMP/parallel_for_collapse_messages.cpp b/clang/test/OpenMP/parallel_for_collapse_messages.cpp index 9d99c25efa6..192fa45c904 100644 --- a/clang/test/OpenMP/parallel_for_collapse_messages.cpp +++ b/clang/test/OpenMP/parallel_for_collapse_messages.cpp @@ -39,7 +39,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp parallel for collapse ((ST > 0) ? 1 + ST : 2) // expected-note 2 {{as specified in 'collapse' clause}} for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp parallel for', but found only 1}} // expected-error@+6 2 {{directive '#pragma omp parallel for' cannot contain more than one 'collapse' clause}} - // expected-error@+5 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+5 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -86,7 +86,7 @@ int main(int argc, char **argv) { // expected-note@+4{{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp parallel for' cannot contain more than one 'collapse' clause}} - // expected-error@+1 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}} #pragma omp parallel for collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; #pragma omp parallel for collapse (S1) // expected-error {{'S1' does not refer to a value}} diff --git a/clang/test/OpenMP/parallel_for_ordered_messages.cpp b/clang/test/OpenMP/parallel_for_ordered_messages.cpp index 381bc6ae1ba..9681d780fb2 100644 --- a/clang/test/OpenMP/parallel_for_ordered_messages.cpp +++ b/clang/test/OpenMP/parallel_for_ordered_messages.cpp @@ -46,7 +46,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here} for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i - ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp parallel for', but found only 1}} // expected-error@+6 2 {{directive '#pragma omp parallel for' cannot contain more than one 'ordered' clause}} -// expected-error@+5 2 {{argument to 'ordered' clause must be a strictly positive integer value}} +// expected-error@+5 {{argument to 'ordered' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -104,7 +104,7 @@ int main(int argc, char **argv) { // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp parallel for' cannot contain more than one 'ordered' clause}} -// expected-error@+1 2 {{argument to 'ordered' clause must be a strictly positive integer value}} +// expected-error@+1 {{argument to 'ordered' clause must be a strictly positive integer value}} #pragma omp parallel for ordered(foobool(argc)), ordered(true), ordered(-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i - 4]; diff --git a/clang/test/OpenMP/parallel_for_simd_collapse_messages.cpp b/clang/test/OpenMP/parallel_for_simd_collapse_messages.cpp index d23086b9e53..39d01b8c2f6 100644 --- a/clang/test/OpenMP/parallel_for_simd_collapse_messages.cpp +++ b/clang/test/OpenMP/parallel_for_simd_collapse_messages.cpp @@ -39,7 +39,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp parallel for simd collapse ((ST > 0) ? 1 + ST : 2) // expected-note 2 {{as specified in 'collapse' clause}} for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp parallel for simd', but found only 1}} // expected-error@+6 2 {{directive '#pragma omp parallel for simd' cannot contain more than one 'collapse' clause}} - // expected-error@+5 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+5 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -86,7 +86,7 @@ int main(int argc, char **argv) { // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp parallel for simd' cannot contain more than one 'collapse' clause}} - // expected-error@+1 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}} #pragma omp parallel for simd collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; #pragma omp parallel for simd collapse (S1) // expected-error {{'S1' does not refer to a value}} diff --git a/clang/test/OpenMP/parallel_for_simd_safelen_messages.cpp b/clang/test/OpenMP/parallel_for_simd_safelen_messages.cpp index 49ebf428f3d..939a1dafb3d 100644 --- a/clang/test/OpenMP/parallel_for_simd_safelen_messages.cpp +++ b/clang/test/OpenMP/parallel_for_simd_safelen_messages.cpp @@ -39,7 +39,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp parallel for simd safelen ((ST > 0) ? 1 + ST : 2) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error@+6 2 {{directive '#pragma omp parallel for simd' cannot contain more than one 'safelen' clause}} - // expected-error@+5 2 {{argument to 'safelen' clause must be a strictly positive integer value}} + // expected-error@+5 {{argument to 'safelen' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -84,7 +84,7 @@ int main(int argc, char **argv) { // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp parallel for simd' cannot contain more than one 'safelen' clause}} - // expected-error@+1 2 {{argument to 'safelen' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}} #pragma omp parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; #pragma omp parallel for simd safelen (S1) // expected-error {{'S1' does not refer to a value}} diff --git a/clang/test/OpenMP/parallel_for_simd_simdlen_messages.cpp b/clang/test/OpenMP/parallel_for_simd_simdlen_messages.cpp index 167644e3886..8cf196bf719 100644 --- a/clang/test/OpenMP/parallel_for_simd_simdlen_messages.cpp +++ b/clang/test/OpenMP/parallel_for_simd_simdlen_messages.cpp @@ -39,7 +39,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp parallel for simd simdlen ((ST > 0) ? 1 + ST : 2) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error@+6 2 {{directive '#pragma omp parallel for simd' cannot contain more than one 'simdlen' clause}} - // expected-error@+5 2 {{argument to 'simdlen' clause must be a strictly positive integer value}} + // expected-error@+5 {{argument to 'simdlen' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -84,7 +84,7 @@ int main(int argc, char **argv) { // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp parallel for simd' cannot contain more than one 'simdlen' clause}} - // expected-error@+1 2 {{argument to 'simdlen' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}} #pragma omp parallel for simd simdlen (foobool(argc)), simdlen (true), simdlen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; #pragma omp parallel for simd simdlen (S1) // expected-error {{'S1' does not refer to a value}} diff --git a/clang/test/OpenMP/simd_collapse_messages.cpp b/clang/test/OpenMP/simd_collapse_messages.cpp index b3100c097d6..3e980d94927 100644 --- a/clang/test/OpenMP/simd_collapse_messages.cpp +++ b/clang/test/OpenMP/simd_collapse_messages.cpp @@ -39,7 +39,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp simd collapse ((ST > 0) ? 1 + ST : 2) // expected-note 2 {{as specified in 'collapse' clause}} for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp simd', but found only 1}} // expected-error@+6 2 {{directive '#pragma omp simd' cannot contain more than one 'collapse' clause}} - // expected-error@+5 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+5 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -86,7 +86,7 @@ int main(int argc, char **argv) { // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp simd' cannot contain more than one 'collapse' clause}} - // expected-error@+1 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}} #pragma omp simd collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; #pragma omp simd collapse (S1) // expected-error {{'S1' does not refer to a value}} diff --git a/clang/test/OpenMP/simd_safelen_messages.cpp b/clang/test/OpenMP/simd_safelen_messages.cpp index b75a923e7f9..f40873aeeae 100644 --- a/clang/test/OpenMP/simd_safelen_messages.cpp +++ b/clang/test/OpenMP/simd_safelen_messages.cpp @@ -39,7 +39,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp simd safelen ((ST > 0) ? 1 + ST : 2) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error@+6 2 {{directive '#pragma omp simd' cannot contain more than one 'safelen' clause}} - // expected-error@+5 2 {{argument to 'safelen' clause must be a strictly positive integer value}} + // expected-error@+5 {{argument to 'safelen' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -84,7 +84,7 @@ int main(int argc, char **argv) { // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp simd' cannot contain more than one 'safelen' clause}} - // expected-error@+1 2 {{argument to 'safelen' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}} #pragma omp simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; #pragma omp simd safelen (S1) // expected-error {{'S1' does not refer to a value}} diff --git a/clang/test/OpenMP/simd_simdlen_messages.cpp b/clang/test/OpenMP/simd_simdlen_messages.cpp index f34d6281419..27ab4acf770 100644 --- a/clang/test/OpenMP/simd_simdlen_messages.cpp +++ b/clang/test/OpenMP/simd_simdlen_messages.cpp @@ -39,7 +39,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp simd simdlen ((ST > 0) ? 1 + ST : 2) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error@+6 2 {{directive '#pragma omp simd' cannot contain more than one 'simdlen' clause}} - // expected-error@+5 2 {{argument to 'simdlen' clause must be a strictly positive integer value}} + // expected-error@+5 {{argument to 'simdlen' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -84,7 +84,7 @@ int main(int argc, char **argv) { // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp simd' cannot contain more than one 'simdlen' clause}} - // expected-error@+1 2 {{argument to 'simdlen' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}} #pragma omp simd simdlen (foobool(argc)), simdlen (true), simdlen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; #pragma omp simd simdlen (S1) // expected-error {{'S1' does not refer to a value}} diff --git a/clang/test/OpenMP/target_map_messages.cpp b/clang/test/OpenMP/target_map_messages.cpp index e1967d27c92..04e201d1362 100644 --- a/clang/test/OpenMP/target_map_messages.cpp +++ b/clang/test/OpenMP/target_map_messages.cpp @@ -73,6 +73,8 @@ struct SA { {} #pragma omp target map(b[:-1]) // expected-error {{section length is evaluated to a negative value -1}} {} + #pragma omp target map(b[true:true]) + {} #pragma omp target map(: c,f) // expected-error {{missing map type}} {} diff --git a/clang/test/OpenMP/target_parallel_for_collapse_messages.cpp b/clang/test/OpenMP/target_parallel_for_collapse_messages.cpp index d8ebdda81aa..2e194ffbd08 100644 --- a/clang/test/OpenMP/target_parallel_for_collapse_messages.cpp +++ b/clang/test/OpenMP/target_parallel_for_collapse_messages.cpp @@ -39,7 +39,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp target parallel for collapse ((ST > 0) ? 1 + ST : 2) // expected-note 2 {{as specified in 'collapse' clause}} for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp target parallel for', but found only 1}} // expected-error@+3 2 {{directive '#pragma omp target parallel for' cannot contain more than one 'collapse' clause}} - // expected-error@+2 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+2 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+1 2 {{expression is not an integral constant expression}} #pragma omp target parallel for collapse (foobool(argc)), collapse (true), collapse (-5) #if __cplusplus >= 201103L @@ -82,7 +82,7 @@ int main(int argc, char **argv) { for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error@+3 {{expression is not an integral constant expression}} // expected-error@+2 2 {{directive '#pragma omp target parallel for' cannot contain more than one 'collapse' clause}} - // expected-error@+1 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}} #pragma omp target parallel for collapse (foobool(argc)), collapse (true), collapse (-5) #if __cplusplus >= 201103L // expected-note@-2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} diff --git a/clang/test/OpenMP/target_parallel_for_map_messages.cpp b/clang/test/OpenMP/target_parallel_for_map_messages.cpp index 8521700b5cb..6ef87d442fe 100644 --- a/clang/test/OpenMP/target_parallel_for_map_messages.cpp +++ b/clang/test/OpenMP/target_parallel_for_map_messages.cpp @@ -86,6 +86,8 @@ T tmain(T argc) { for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for map(l[:-1]) // expected-error 2 {{section length is evaluated to a negative value -1}} for (i = 0; i < argc; ++i) foo(); +#pragma omp target parallel for map(l[true:true]) + for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for map(x) for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for map(tofrom: t[:I]) @@ -206,6 +208,8 @@ int main(int argc, char **argv) { for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for map(l[:-1]) // expected-error {{section length is evaluated to a negative value -1}} for (i = 0; i < argc; ++i) foo(); +#pragma omp target parallel for map(l[true:true]) + for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for map(x) for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for map(to: x) diff --git a/clang/test/OpenMP/target_parallel_for_ordered_messages.cpp b/clang/test/OpenMP/target_parallel_for_ordered_messages.cpp index 002e8e9a5c7..38a977e2935 100644 --- a/clang/test/OpenMP/target_parallel_for_ordered_messages.cpp +++ b/clang/test/OpenMP/target_parallel_for_ordered_messages.cpp @@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here} // expected-note@+5 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+3 2 {{directive '#pragma omp target parallel for' cannot contain more than one 'ordered' clause}} -// expected-error@+2 2 {{argument to 'ordered' clause must be a strictly positive integer value}} +// expected-error@+2 {{argument to 'ordered' clause must be a strictly positive integer value}} // expected-error@+1 2 {{expression is not an integral constant expression}} #pragma omp target parallel for ordered(foobool(argc)), ordered(true), ordered(-5) for (int i = ST; i < N; i++) @@ -103,7 +103,7 @@ int main(int argc, char **argv) { #endif // expected-error@+3 {{expression is not an integral constant expression}} // expected-error@+2 2 {{directive '#pragma omp target parallel for' cannot contain more than one 'ordered' clause}} -// expected-error@+1 2 {{argument to 'ordered' clause must be a strictly positive integer value}} +// expected-error@+1 {{argument to 'ordered' clause must be a strictly positive integer value}} #pragma omp target parallel for ordered(foobool(argc)), ordered(true), ordered(-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i - 4]; diff --git a/clang/test/OpenMP/target_parallel_for_simd_collapse_messages.cpp b/clang/test/OpenMP/target_parallel_for_simd_collapse_messages.cpp index f3f2aa9ace5..24e30b3d3f2 100644 --- a/clang/test/OpenMP/target_parallel_for_simd_collapse_messages.cpp +++ b/clang/test/OpenMP/target_parallel_for_simd_collapse_messages.cpp @@ -43,7 +43,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} // expected-note@+5 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+3 2 {{directive '#pragma omp target parallel for simd' cannot contain more than one 'collapse' clause}} - // expected-error@+2 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+2 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+1 2 {{expression is not an integral constant expression}} #pragma omp target parallel for simd collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; @@ -84,7 +84,7 @@ int main(int argc, char **argv) { #endif // expected-error@+3 {{expression is not an integral constant expression}} // expected-error@+2 2 {{directive '#pragma omp target parallel for simd' cannot contain more than one 'collapse' clause}} - // expected-error@+1 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}} #pragma omp target parallel for simd collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; #pragma omp target parallel for simd collapse (S1) // expected-error {{'S1' does not refer to a value}} diff --git a/clang/test/OpenMP/target_parallel_for_simd_map_messages.cpp b/clang/test/OpenMP/target_parallel_for_simd_map_messages.cpp index 83259cdd3ef..f18cc9a5f81 100644 --- a/clang/test/OpenMP/target_parallel_for_simd_map_messages.cpp +++ b/clang/test/OpenMP/target_parallel_for_simd_map_messages.cpp @@ -86,6 +86,8 @@ T tmain(T argc) { for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for simd map(l[:-1]) // expected-error 2 {{section length is evaluated to a negative value -1}} for (i = 0; i < argc; ++i) foo(); +#pragma omp target parallel for simd map(l[true:true]) + for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for simd map(x) for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for simd map(tofrom: t[:I]) @@ -206,6 +208,8 @@ int main(int argc, char **argv) { for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel map(l[:-1]) // expected-error {{section length is evaluated to a negative value -1}} for (i = 0; i < argc; ++i) foo(); +#pragma omp target parallel map(l[true:true]) + for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for simd map(x) for (i = 0; i < argc; ++i) foo(); #pragma omp target parallel for simd map(to: x) diff --git a/clang/test/OpenMP/target_parallel_for_simd_ordered_messages.cpp b/clang/test/OpenMP/target_parallel_for_simd_ordered_messages.cpp index 3e3f6c26c34..08b9247c1bb 100644 --- a/clang/test/OpenMP/target_parallel_for_simd_ordered_messages.cpp +++ b/clang/test/OpenMP/target_parallel_for_simd_ordered_messages.cpp @@ -47,7 +47,7 @@ T tmain(T argc, S **argv) { #pragma omp target parallel for simd ordered((ST > 0) ? 1 + ST : 2) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i - ST]; -// expected-error@+3 2 {{argument to 'ordered' clause must be a strictly positive integer value}} +// expected-error@+3 {{argument to 'ordered' clause must be a strictly positive integer value}} // expected-error@+2 2 {{directive '#pragma omp target parallel for simd' cannot contain more than one 'ordered' clause}} // expected-error@+1 {{'ordered' clause with a parameter can not be specified in '#pragma omp target parallel for simd' directive}} #pragma omp target parallel for simd ordered(foobool(argc)), ordered(true), ordered(-5) @@ -105,7 +105,7 @@ int main(int argc, char **argv) { #endif // expected-error@+3 {{expression is not an integral constant expression}} // expected-error@+2 2 {{directive '#pragma omp target parallel for simd' cannot contain more than one 'ordered' clause}} -// expected-error@+1 2 {{argument to 'ordered' clause must be a strictly positive integer value}} +// expected-error@+1 {{argument to 'ordered' clause must be a strictly positive integer value}} #pragma omp target parallel for simd ordered(foobool(argc)), ordered(true), ordered(-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i - 4]; diff --git a/clang/test/OpenMP/target_parallel_for_simd_safelen_messages.cpp b/clang/test/OpenMP/target_parallel_for_simd_safelen_messages.cpp index 74b1a7374f0..1121593e5e6 100644 --- a/clang/test/OpenMP/target_parallel_for_simd_safelen_messages.cpp +++ b/clang/test/OpenMP/target_parallel_for_simd_safelen_messages.cpp @@ -39,7 +39,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp target parallel for simd safelen ((ST > 0) ? 1 + ST : 2) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error@+6 2 {{directive '#pragma omp target parallel for simd' cannot contain more than one 'safelen' clause}} - // expected-error@+5 2 {{argument to 'safelen' clause must be a strictly positive integer value}} + // expected-error@+5 {{argument to 'safelen' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -84,7 +84,7 @@ int main(int argc, char **argv) { // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp target parallel for simd' cannot contain more than one 'safelen' clause}} - // expected-error@+1 2 {{argument to 'safelen' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}} #pragma omp target parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; #pragma omp target parallel for simd safelen (S1) // expected-error {{'S1' does not refer to a value}} diff --git a/clang/test/OpenMP/target_parallel_for_simd_simdlen_messages.cpp b/clang/test/OpenMP/target_parallel_for_simd_simdlen_messages.cpp index f8b375ef1c6..33a6642a8dc 100644 --- a/clang/test/OpenMP/target_parallel_for_simd_simdlen_messages.cpp +++ b/clang/test/OpenMP/target_parallel_for_simd_simdlen_messages.cpp @@ -46,7 +46,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error@+6 2 {{directive '#pragma omp target parallel for simd' cannot contain more than one 'simdlen' clause}} - // expected-error@+5 2 {{argument to 'simdlen' clause must be a strictly positive integer value}} + // expected-error@+5 {{argument to 'simdlen' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -111,7 +111,7 @@ int main(int argc, char **argv) { // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp target parallel for simd' cannot contain more than one 'simdlen' clause}} -// expected-error@+1 2 {{argument to 'simdlen' clause must be a strictly positive integer value}} +// expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}} #pragma omp target parallel for simd simdlen (foobool(argc)), simdlen (true), simdlen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; diff --git a/clang/test/OpenMP/target_parallel_map_messages.cpp b/clang/test/OpenMP/target_parallel_map_messages.cpp index 510595cb0b9..52774aa7410 100644 --- a/clang/test/OpenMP/target_parallel_map_messages.cpp +++ b/clang/test/OpenMP/target_parallel_map_messages.cpp @@ -86,6 +86,8 @@ T tmain(T argc) { foo(); #pragma omp target parallel map(l[:-1]) // expected-error 2 {{section length is evaluated to a negative value -1}} foo(); +#pragma omp target parallel map(l[true:true]) + foo(); #pragma omp target parallel map(x) foo(); #pragma omp target parallel map(tofrom: t[:I]) @@ -205,6 +207,8 @@ int main(int argc, char **argv) { foo(); #pragma omp target parallel map(l[:-1]) // expected-error {{section length is evaluated to a negative value -1}} foo(); +#pragma omp target parallel map(l[true:true]) + foo(); #pragma omp target parallel map(x) foo(); #pragma omp target parallel map(to: x) diff --git a/clang/test/OpenMP/target_simd_collapse_messages.cpp b/clang/test/OpenMP/target_simd_collapse_messages.cpp index 400844152b4..8bf2c3bbf70 100644 --- a/clang/test/OpenMP/target_simd_collapse_messages.cpp +++ b/clang/test/OpenMP/target_simd_collapse_messages.cpp @@ -41,7 +41,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} // expected-note@+5 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+3 2 {{directive '#pragma omp target simd' cannot contain more than one 'collapse' clause}} - // expected-error@+2 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+2 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+1 2 {{expression is not an integral constant expression}} #pragma omp target simd collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; @@ -82,7 +82,7 @@ int main(int argc, char **argv) { #endif // expected-error@+3 {{expression is not an integral constant expression}} // expected-error@+2 2 {{directive '#pragma omp target simd' cannot contain more than one 'collapse' clause}} - // expected-error@+1 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}} #pragma omp target simd collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; #pragma omp target simd collapse (S1) // expected-error {{'S1' does not refer to a value}} diff --git a/clang/test/OpenMP/target_simd_safelen_messages.cpp b/clang/test/OpenMP/target_simd_safelen_messages.cpp index 69ceab1a683..993d707114d 100644 --- a/clang/test/OpenMP/target_simd_safelen_messages.cpp +++ b/clang/test/OpenMP/target_simd_safelen_messages.cpp @@ -39,7 +39,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp target simd safelen ((ST > 0) ? 1 + ST : 2) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error@+6 2 {{directive '#pragma omp target simd' cannot contain more than one 'safelen' clause}} - // expected-error@+5 2 {{argument to 'safelen' clause must be a strictly positive integer value}} + // expected-error@+5 {{argument to 'safelen' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -84,7 +84,7 @@ int main(int argc, char **argv) { // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp target simd' cannot contain more than one 'safelen' clause}} - // expected-error@+1 2 {{argument to 'safelen' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}} #pragma omp target simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; #pragma omp target simd safelen (S1) // expected-error {{'S1' does not refer to a value}} diff --git a/clang/test/OpenMP/target_simd_simdlen_messages.cpp b/clang/test/OpenMP/target_simd_simdlen_messages.cpp index c65fe20d3a2..3a6e477886b 100644 --- a/clang/test/OpenMP/target_simd_simdlen_messages.cpp +++ b/clang/test/OpenMP/target_simd_simdlen_messages.cpp @@ -46,7 +46,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error@+6 2 {{directive '#pragma omp target simd' cannot contain more than one 'simdlen' clause}} - // expected-error@+5 2 {{argument to 'simdlen' clause must be a strictly positive integer value}} + // expected-error@+5 {{argument to 'simdlen' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -111,7 +111,7 @@ int main(int argc, char **argv) { // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp target simd' cannot contain more than one 'simdlen' clause}} -// expected-error@+1 2 {{argument to 'simdlen' clause must be a strictly positive integer value}} +// expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}} #pragma omp target simd simdlen (foobool(argc)), simdlen (true), simdlen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; diff --git a/clang/test/OpenMP/target_teams_distribute_collapse_messages.cpp b/clang/test/OpenMP/target_teams_distribute_collapse_messages.cpp index 4010c5a9a9c..7495a18443f 100644 --- a/clang/test/OpenMP/target_teams_distribute_collapse_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_collapse_messages.cpp @@ -56,7 +56,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} // expected-note@+5 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+3 2 {{directive '#pragma omp target teams distribute' cannot contain more than one 'collapse' clause}} -// expected-error@+2 2 {{argument to 'collapse' clause must be a strictly positive integer value}} +// expected-error@+2 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+1 2 {{expression is not an integral constant expression}} #pragma omp target teams distribute collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = ST; i < N; i++) @@ -122,7 +122,7 @@ int main(int argc, char **argv) { #endif // expected-error@+3 {{expression is not an integral constant expression}} // expected-error@+2 2 {{directive '#pragma omp target teams distribute' cannot contain more than one 'collapse' clause}} -// expected-error@+1 2 {{argument to 'collapse' clause must be a strictly positive integer value}} +// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}} #pragma omp target teams distribute collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; diff --git a/clang/test/OpenMP/target_teams_distribute_map_messages.cpp b/clang/test/OpenMP/target_teams_distribute_map_messages.cpp index e4c1d0f8984..0de429736e1 100644 --- a/clang/test/OpenMP/target_teams_distribute_map_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_map_messages.cpp @@ -86,6 +86,8 @@ T tmain(T argc) { for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute map(l[:-1]) // expected-error 2 {{section length is evaluated to a negative value -1}} for (i = 0; i < argc; ++i) foo(); +#pragma omp target teams distribute map(l[true:true]) + for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute map(x) for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute map(tofrom: t[:I]) @@ -206,6 +208,8 @@ int main(int argc, char **argv) { for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute map(l[:-1]) // expected-error {{section length is evaluated to a negative value -1}} for (i = 0; i < argc; ++i) foo(); +#pragma omp target teams distribute map(l[true:true]) + for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute map(x) for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute map(to: x) diff --git a/clang/test/OpenMP/target_teams_distribute_parallel_for_collapse_messages.cpp b/clang/test/OpenMP/target_teams_distribute_parallel_for_collapse_messages.cpp index 61e76cde020..a866b797641 100644 --- a/clang/test/OpenMP/target_teams_distribute_parallel_for_collapse_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_parallel_for_collapse_messages.cpp @@ -56,7 +56,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} // expected-note@+5 2 {{non-constexpr function 'foobool' cannot be used}} #endif // expected-error@+3 2 {{directive '#pragma omp target teams distribute parallel for' cannot contain more than one 'collapse' clause}} -// expected-error@+2 2 {{argument to 'collapse' clause must be a strictly positive integer value}} +// expected-error@+2 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+1 2 {{expression is not an integral constant expression}} #pragma omp target teams distribute parallel for collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = ST; i < N; i++) @@ -121,7 +121,7 @@ int main(int argc, char **argv) { #endif // expected-error@+3 {{expression is not an integral constant expression}} // expected-error@+2 2 {{directive '#pragma omp target teams distribute parallel for' cannot contain more than one 'collapse' clause}} -// expected-error@+1 2 {{argument to 'collapse' clause must be a strictly positive integer value}} +// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}} #pragma omp target teams distribute parallel for collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; diff --git a/clang/test/OpenMP/target_teams_distribute_parallel_for_map_messages.cpp b/clang/test/OpenMP/target_teams_distribute_parallel_for_map_messages.cpp index 878fac15170..f47655d686b 100644 --- a/clang/test/OpenMP/target_teams_distribute_parallel_for_map_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_parallel_for_map_messages.cpp @@ -86,6 +86,8 @@ T tmain(T argc) { for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for map(l[:-1]) // expected-error 2 {{section length is evaluated to a negative value -1}} for (i = 0; i < argc; ++i) foo(); +#pragma omp target teams distribute parallel for map(l[true:true]) + for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for map(x) for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for map(tofrom: t[:I]) @@ -206,6 +208,8 @@ int main(int argc, char **argv) { for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for map(l[:-1]) // expected-error {{section length is evaluated to a negative value -1}} for (i = 0; i < argc; ++i) foo(); +#pragma omp target teams distribute parallel for map(l[true:true]) + for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for map(x) for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for map(to: x) diff --git a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_collapse_messages.cpp b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_collapse_messages.cpp index 069ea65ad29..4ca7a8ca9ad 100644 --- a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_collapse_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_collapse_messages.cpp @@ -56,7 +56,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} // expected-note@+5 2 {{non-constexpr function 'foobool' cannot be used}} #endif // expected-error@+3 2 {{directive '#pragma omp target teams distribute parallel for simd' cannot contain more than one 'collapse' clause}} -// expected-error@+2 2 {{argument to 'collapse' clause must be a strictly positive integer value}} +// expected-error@+2 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+1 2 {{expression is not an integral constant expression}} #pragma omp target teams distribute parallel for simd collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = ST; i < N; i++) @@ -121,7 +121,7 @@ int main(int argc, char **argv) { #endif // expected-error@+3 {{expression is not an integral constant expression}} // expected-error@+2 2 {{directive '#pragma omp target teams distribute parallel for simd' cannot contain more than one 'collapse' clause}} -// expected-error@+1 2 {{argument to 'collapse' clause must be a strictly positive integer value}} +// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}} #pragma omp target teams distribute parallel for simd collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; diff --git a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_map_messages.cpp b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_map_messages.cpp index b2da6808855..64fe5f6e092 100644 --- a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_map_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_map_messages.cpp @@ -86,6 +86,8 @@ T tmain(T argc) { for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for simd map(l[:-1]) // expected-error 2 {{section length is evaluated to a negative value -1}} for (i = 0; i < argc; ++i) foo(); +#pragma omp target teams distribute parallel for simd map(l[true:true]) + for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for simd map(x) for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for simd map(tofrom: t[:I]) @@ -206,6 +208,8 @@ int main(int argc, char **argv) { for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for simd map(l[:-1]) // expected-error {{section length is evaluated to a negative value -1}} for (i = 0; i < argc; ++i) foo(); +#pragma omp target teams distribute parallel for simd map(l[true:true]) + for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for simd map(x) for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute parallel for simd map(to: x) diff --git a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_safelen_messages.cpp b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_safelen_messages.cpp index f068e6b2e47..d05f071e915 100644 --- a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_safelen_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_safelen_messages.cpp @@ -49,9 +49,12 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} argv[0][i] = argv[0][i] - argv[0][i-ST]; #if __cplusplus >= 201103L - // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+5 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif -#pragma omp target teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{directive '#pragma omp target teams distribute parallel for simd' cannot contain more than one 'safelen' clause}} expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{expression is not an integral constant expression}} +// expected-error@+3 2 {{directive '#pragma omp target teams distribute parallel for simd' cannot contain more than one 'safelen' clause}} +// expected-error@+2 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+1 2 {{expression is not an integral constant expression}} +#pragma omp target teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; @@ -108,9 +111,12 @@ int main(int argc, char **argv) { argv[0][i] = argv[0][i] - argv[0][i-4]; #if __cplusplus >= 201103L - // expected-note@+2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+5 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif -#pragma omp target teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{directive '#pragma omp target teams distribute parallel for simd' cannot contain more than one 'safelen' clause}} expected-error {{expression is not an integral constant expression}} +// expected-error@+3 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+2 2 {{directive '#pragma omp target teams distribute parallel for simd' cannot contain more than one 'safelen' clause}} +// expected-error@+1 {{expression is not an integral constant expression}} +#pragma omp target teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; diff --git a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_simdlen_messages.cpp b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_simdlen_messages.cpp index d5f714c9c30..1c490582fd8 100644 --- a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_simdlen_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_simdlen_messages.cpp @@ -49,9 +49,12 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} argv[0][i] = argv[0][i] - argv[0][i-ST]; #if __cplusplus >= 201103L - // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+5 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif -#pragma omp target teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{directive '#pragma omp target teams distribute parallel for simd' cannot contain more than one 'safelen' clause}} expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{expression is not an integral constant expression}} +// expected-error@+3 2 {{directive '#pragma omp target teams distribute parallel for simd' cannot contain more than one 'safelen' clause}} +// expected-error@+2 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+1 2 {{expression is not an integral constant expression}} +#pragma omp target teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; @@ -108,9 +111,12 @@ int main(int argc, char **argv) { argv[0][i] = argv[0][i] - argv[0][i-4]; #if __cplusplus >= 201103L - // expected-note@+2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+5 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif -#pragma omp target teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{directive '#pragma omp target teams distribute parallel for simd' cannot contain more than one 'safelen' clause}} expected-error {{expression is not an integral constant expression}} +// expected-error@+3 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+2 2 {{directive '#pragma omp target teams distribute parallel for simd' cannot contain more than one 'safelen' clause}} +// expected-error@+1 {{expression is not an integral constant expression}} +#pragma omp target teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; diff --git a/clang/test/OpenMP/target_teams_distribute_simd_collapse_messages.cpp b/clang/test/OpenMP/target_teams_distribute_simd_collapse_messages.cpp index a2d3bde44af..6561091ec8a 100644 --- a/clang/test/OpenMP/target_teams_distribute_simd_collapse_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_simd_collapse_messages.cpp @@ -53,7 +53,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp target teams distribute simd', but found only 1}} // expected-error@+6 2 {{directive '#pragma omp target teams distribute simd' cannot contain more than one 'collapse' clause}} -// expected-error@+5 2 {{argument to 'collapse' clause must be a strictly positive integer value}} +// expected-error@+5 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -118,7 +118,7 @@ int main(int argc, char **argv) { // expected-error@+6 {{expression is not an integral constant expression}} // expected-error@+5 2 {{directive '#pragma omp target teams distribute simd' cannot contain more than one 'collapse' clause}} -// expected-error@+4 2 {{argument to 'collapse' clause must be a strictly positive integer value}} +// expected-error@+4 {{argument to 'collapse' clause must be a strictly positive integer value}} #if __cplusplus >= 201103L // expected-note@+2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif diff --git a/clang/test/OpenMP/target_teams_distribute_simd_map_messages.cpp b/clang/test/OpenMP/target_teams_distribute_simd_map_messages.cpp index c559bcb410a..3806c4ecf5b 100644 --- a/clang/test/OpenMP/target_teams_distribute_simd_map_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_simd_map_messages.cpp @@ -86,6 +86,8 @@ T tmain(T argc) { for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute simd map(l[:-1]) // expected-error 2 {{section length is evaluated to a negative value -1}} for (i = 0; i < argc; ++i) foo(); +#pragma omp target teams distribute simd map(l[true:true]) + for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute simd map(x) for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute simd map(tofrom: t[:I]) @@ -206,6 +208,8 @@ int main(int argc, char **argv) { for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute simd map(l[:-1]) // expected-error {{section length is evaluated to a negative value -1}} for (i = 0; i < argc; ++i) foo(); +#pragma omp target teams distribute simd map(l[true:true]) + for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute simd map(x) for (i = 0; i < argc; ++i) foo(); #pragma omp target teams distribute simd map(to: x) diff --git a/clang/test/OpenMP/target_teams_distribute_simd_safelen_messages.cpp b/clang/test/OpenMP/target_teams_distribute_simd_safelen_messages.cpp index 67b22216b97..da5c8eb75d9 100644 --- a/clang/test/OpenMP/target_teams_distribute_simd_safelen_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_simd_safelen_messages.cpp @@ -49,9 +49,12 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} argv[0][i] = argv[0][i] - argv[0][i-ST]; #if __cplusplus >= 201103L - // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+5 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif -#pragma omp target teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{directive '#pragma omp target teams distribute simd' cannot contain more than one 'safelen' clause}} expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{expression is not an integral constant expression}} +// expected-error@+3 2 {{directive '#pragma omp target teams distribute simd' cannot contain more than one 'safelen' clause}} +// expected-error@+2 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+1 2 {{expression is not an integral constant expression}} +#pragma omp target teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; @@ -108,9 +111,12 @@ int main(int argc, char **argv) { argv[0][i] = argv[0][i] - argv[0][i-4]; #if __cplusplus >= 201103L - // expected-note@+2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+5 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif -#pragma omp target teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{directive '#pragma omp target teams distribute simd' cannot contain more than one 'safelen' clause}} expected-error {{expression is not an integral constant expression}} +// expected-error@+3 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+2 2 {{directive '#pragma omp target teams distribute simd' cannot contain more than one 'safelen' clause}} +// expected-error@+1 {{expression is not an integral constant expression}} +#pragma omp target teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; diff --git a/clang/test/OpenMP/target_teams_distribute_simd_simdlen_messages.cpp b/clang/test/OpenMP/target_teams_distribute_simd_simdlen_messages.cpp index 6fea25a57ab..851fff36f20 100644 --- a/clang/test/OpenMP/target_teams_distribute_simd_simdlen_messages.cpp +++ b/clang/test/OpenMP/target_teams_distribute_simd_simdlen_messages.cpp @@ -49,9 +49,12 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} argv[0][i] = argv[0][i] - argv[0][i-ST]; #if __cplusplus >= 201103L - // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+5 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif -#pragma omp target teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{directive '#pragma omp target teams distribute simd' cannot contain more than one 'safelen' clause}} expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{expression is not an integral constant expression}} +// expected-error@+3 2 {{directive '#pragma omp target teams distribute simd' cannot contain more than one 'safelen' clause}} +// expected-error@+2 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+1 2 {{expression is not an integral constant expression}} +#pragma omp target teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; @@ -108,9 +111,12 @@ int main(int argc, char **argv) { argv[0][i] = argv[0][i] - argv[0][i-4]; #if __cplusplus >= 201103L - // expected-note@+2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+5 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif -#pragma omp target teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{directive '#pragma omp target teams distribute simd' cannot contain more than one 'safelen' clause}} expected-error {{expression is not an integral constant expression}} +// expected-error@+3 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+2 2 {{directive '#pragma omp target teams distribute simd' cannot contain more than one 'safelen' clause}} +// expected-error@+1 {{expression is not an integral constant expression}} +#pragma omp target teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; diff --git a/clang/test/OpenMP/target_teams_map_messages.cpp b/clang/test/OpenMP/target_teams_map_messages.cpp index e59a96c8813..8608756bd4e 100644 --- a/clang/test/OpenMP/target_teams_map_messages.cpp +++ b/clang/test/OpenMP/target_teams_map_messages.cpp @@ -57,6 +57,8 @@ struct SA { {} #pragma omp target teams map(b[:-1]) // expected-error {{section length is evaluated to a negative value -1}} {} + #pragma omp target teams map(b[true:true]) + {} #pragma omp target teams map(always, tofrom: c,f) {} diff --git a/clang/test/OpenMP/taskloop_collapse_messages.cpp b/clang/test/OpenMP/taskloop_collapse_messages.cpp index 4de0f38dae8..091b8b83212 100644 --- a/clang/test/OpenMP/taskloop_collapse_messages.cpp +++ b/clang/test/OpenMP/taskloop_collapse_messages.cpp @@ -39,7 +39,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp taskloop collapse ((ST > 0) ? 1 + ST : 2) // expected-note 2 {{as specified in 'collapse' clause}} for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp taskloop', but found only 1}} // expected-error@+6 2 {{directive '#pragma omp taskloop' cannot contain more than one 'collapse' clause}} - // expected-error@+5 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+5 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -86,7 +86,7 @@ int main(int argc, char **argv) { // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp taskloop' cannot contain more than one 'collapse' clause}} - // expected-error@+1 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}} #pragma omp taskloop collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; #pragma omp taskloop collapse (S1) // expected-error {{'S1' does not refer to a value}} diff --git a/clang/test/OpenMP/taskloop_simd_collapse_messages.cpp b/clang/test/OpenMP/taskloop_simd_collapse_messages.cpp index 3f7e66a2770..fd620c8fc16 100644 --- a/clang/test/OpenMP/taskloop_simd_collapse_messages.cpp +++ b/clang/test/OpenMP/taskloop_simd_collapse_messages.cpp @@ -39,7 +39,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp taskloop simd collapse ((ST > 0) ? 1 + ST : 2) // expected-note 2 {{as specified in 'collapse' clause}} for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp taskloop simd', but found only 1}} // expected-error@+6 2 {{directive '#pragma omp taskloop simd' cannot contain more than one 'collapse' clause}} - // expected-error@+5 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+5 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -86,7 +86,7 @@ int main(int argc, char **argv) { // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp taskloop simd' cannot contain more than one 'collapse' clause}} - // expected-error@+1 2 {{argument to 'collapse' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}} #pragma omp taskloop simd collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; #pragma omp taskloop simd collapse (S1) // expected-error {{'S1' does not refer to a value}} diff --git a/clang/test/OpenMP/taskloop_simd_safelen_messages.cpp b/clang/test/OpenMP/taskloop_simd_safelen_messages.cpp index 87c4fe07ab0..b926689c3b1 100644 --- a/clang/test/OpenMP/taskloop_simd_safelen_messages.cpp +++ b/clang/test/OpenMP/taskloop_simd_safelen_messages.cpp @@ -39,7 +39,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp taskloop simd safelen ((ST > 0) ? 1 + ST : 2) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error@+6 2 {{directive '#pragma omp taskloop simd' cannot contain more than one 'safelen' clause}} - // expected-error@+5 2 {{argument to 'safelen' clause must be a strictly positive integer value}} + // expected-error@+5 {{argument to 'safelen' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -84,7 +84,7 @@ int main(int argc, char **argv) { // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp taskloop simd' cannot contain more than one 'safelen' clause}} - // expected-error@+1 2 {{argument to 'safelen' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'safelen' clause must be a strictly positive integer value}} #pragma omp taskloop simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; #pragma omp taskloop simd safelen (S1) // expected-error {{'S1' does not refer to a value}} diff --git a/clang/test/OpenMP/taskloop_simd_simdlen_messages.cpp b/clang/test/OpenMP/taskloop_simd_simdlen_messages.cpp index 4170d012dd5..75d9a1d360b 100644 --- a/clang/test/OpenMP/taskloop_simd_simdlen_messages.cpp +++ b/clang/test/OpenMP/taskloop_simd_simdlen_messages.cpp @@ -39,7 +39,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} #pragma omp taskloop simd simdlen ((ST > 0) ? 1 + ST : 2) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error@+6 2 {{directive '#pragma omp taskloop simd' cannot contain more than one 'simdlen' clause}} - // expected-error@+5 2 {{argument to 'simdlen' clause must be a strictly positive integer value}} + // expected-error@+5 {{argument to 'simdlen' clause must be a strictly positive integer value}} // expected-error@+4 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -84,7 +84,7 @@ int main(int argc, char **argv) { // expected-note@+4 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif // expected-error@+2 2 {{directive '#pragma omp taskloop simd' cannot contain more than one 'simdlen' clause}} - // expected-error@+1 2 {{argument to 'simdlen' clause must be a strictly positive integer value}} + // expected-error@+1 {{argument to 'simdlen' clause must be a strictly positive integer value}} #pragma omp taskloop simd simdlen (foobool(argc)), simdlen (true), simdlen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; #pragma omp taskloop simd simdlen (S1) // expected-error {{'S1' does not refer to a value}} diff --git a/clang/test/OpenMP/teams_distribute_collapse_messages.cpp b/clang/test/OpenMP/teams_distribute_collapse_messages.cpp index bcbd774e8ea..d95109c3dc3 100644 --- a/clang/test/OpenMP/teams_distribute_collapse_messages.cpp +++ b/clang/test/OpenMP/teams_distribute_collapse_messages.cpp @@ -63,7 +63,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} // expected-note@+6 2 {{non-constexpr function 'foobool' cannot be used}} #endif // expected-error@+4 2 {{directive '#pragma omp teams distribute' cannot contain more than one 'collapse' clause}} -// expected-error@+3 2 {{argument to 'collapse' clause must be a strictly positive integer value}} +// expected-error@+3 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+2 2 {{expression is not an integral constant expression}} #pragma omp target #pragma omp teams distribute collapse (foobool(argc)), collapse (true), collapse (-5) @@ -140,7 +140,7 @@ int main(int argc, char **argv) { #endif // expected-error@+4 {{expression is not an integral constant expression}} // expected-error@+3 2 {{directive '#pragma omp teams distribute' cannot contain more than one 'collapse' clause}} -// expected-error@+2 2 {{argument to 'collapse' clause must be a strictly positive integer value}} +// expected-error@+2 {{argument to 'collapse' clause must be a strictly positive integer value}} #pragma omp target #pragma omp teams distribute collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = 4; i < 12; i++) diff --git a/clang/test/OpenMP/teams_distribute_parallel_for_collapse_messages.cpp b/clang/test/OpenMP/teams_distribute_parallel_for_collapse_messages.cpp index 2e83a37bc95..1171807fdb9 100644 --- a/clang/test/OpenMP/teams_distribute_parallel_for_collapse_messages.cpp +++ b/clang/test/OpenMP/teams_distribute_parallel_for_collapse_messages.cpp @@ -63,7 +63,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} // expected-note@+6 2 {{non-constexpr function 'foobool' cannot be used}} #endif // expected-error@+4 2 {{directive '#pragma omp teams distribute parallel for' cannot contain more than one 'collapse' clause}} -// expected-error@+3 2 {{argument to 'collapse' clause must be a strictly positive integer value}} +// expected-error@+3 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+2 2 {{expression is not an integral constant expression}} #pragma omp target #pragma omp teams distribute parallel for collapse (foobool(argc)), collapse (true), collapse (-5) @@ -139,7 +139,7 @@ int main(int argc, char **argv) { #endif // expected-error@+4 {{expression is not an integral constant expression}} // expected-error@+3 2 {{directive '#pragma omp teams distribute parallel for' cannot contain more than one 'collapse' clause}} -// expected-error@+2 2 {{argument to 'collapse' clause must be a strictly positive integer value}} +// expected-error@+2 {{argument to 'collapse' clause must be a strictly positive integer value}} #pragma omp target #pragma omp teams distribute parallel for collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = 4; i < 12; i++) diff --git a/clang/test/OpenMP/teams_distribute_parallel_for_simd_collapse_messages.cpp b/clang/test/OpenMP/teams_distribute_parallel_for_simd_collapse_messages.cpp index a287da7a36c..31611c7ff01 100644 --- a/clang/test/OpenMP/teams_distribute_parallel_for_simd_collapse_messages.cpp +++ b/clang/test/OpenMP/teams_distribute_parallel_for_simd_collapse_messages.cpp @@ -63,7 +63,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} // expected-note@+6 2 {{non-constexpr function 'foobool' cannot be used}} #endif // expected-error@+4 2 {{directive '#pragma omp teams distribute parallel for simd' cannot contain more than one 'collapse' clause}} -// expected-error@+3 2 {{argument to 'collapse' clause must be a strictly positive integer value}} +// expected-error@+3 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+2 2 {{expression is not an integral constant expression}} #pragma omp target #pragma omp teams distribute parallel for simd collapse (foobool(argc)), collapse (true), collapse (-5) @@ -139,7 +139,7 @@ int main(int argc, char **argv) { #endif // expected-error@+4 {{expression is not an integral constant expression}} // expected-error@+3 2 {{directive '#pragma omp teams distribute parallel for simd' cannot contain more than one 'collapse' clause}} -// expected-error@+2 2 {{argument to 'collapse' clause must be a strictly positive integer value}} +// expected-error@+2 {{argument to 'collapse' clause must be a strictly positive integer value}} #pragma omp target #pragma omp teams distribute parallel for simd collapse (foobool(argc)), collapse (true), collapse (-5) for (int i = 4; i < 12; i++) diff --git a/clang/test/OpenMP/teams_distribute_parallel_for_simd_safelen_messages.cpp b/clang/test/OpenMP/teams_distribute_parallel_for_simd_safelen_messages.cpp index e673bb382af..2b31c896348 100644 --- a/clang/test/OpenMP/teams_distribute_parallel_for_simd_safelen_messages.cpp +++ b/clang/test/OpenMP/teams_distribute_parallel_for_simd_safelen_messages.cpp @@ -56,10 +56,13 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} argv[0][i] = argv[0][i] - argv[0][i-ST]; #if __cplusplus >= 201103L - // expected-note@+3 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+6 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif #pragma omp target -#pragma omp teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{directive '#pragma omp teams distribute parallel for simd' cannot contain more than one 'safelen' clause}} expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{expression is not an integral constant expression}} +// expected-error@+3 2 {{directive '#pragma omp teams distribute parallel for simd' cannot contain more than one 'safelen' clause}} +// expected-error@+2 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+1 2 {{expression is not an integral constant expression}} +#pragma omp teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; @@ -126,10 +129,13 @@ int main(int argc, char **argv) { argv[0][i] = argv[0][i] - argv[0][i-4]; #if __cplusplus >= 201103L - // expected-note@+3 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+6 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif #pragma omp target -#pragma omp teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{directive '#pragma omp teams distribute parallel for simd' cannot contain more than one 'safelen' clause}} expected-error {{expression is not an integral constant expression}} +// expected-error@+3 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+2 2 {{directive '#pragma omp teams distribute parallel for simd' cannot contain more than one 'safelen' clause}} +// expected-error@+1 {{expression is not an integral constant expression}} +#pragma omp teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; diff --git a/clang/test/OpenMP/teams_distribute_parallel_for_simd_simdlen_messages.cpp b/clang/test/OpenMP/teams_distribute_parallel_for_simd_simdlen_messages.cpp index e673bb382af..2b31c896348 100644 --- a/clang/test/OpenMP/teams_distribute_parallel_for_simd_simdlen_messages.cpp +++ b/clang/test/OpenMP/teams_distribute_parallel_for_simd_simdlen_messages.cpp @@ -56,10 +56,13 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} argv[0][i] = argv[0][i] - argv[0][i-ST]; #if __cplusplus >= 201103L - // expected-note@+3 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+6 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif #pragma omp target -#pragma omp teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{directive '#pragma omp teams distribute parallel for simd' cannot contain more than one 'safelen' clause}} expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{expression is not an integral constant expression}} +// expected-error@+3 2 {{directive '#pragma omp teams distribute parallel for simd' cannot contain more than one 'safelen' clause}} +// expected-error@+2 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+1 2 {{expression is not an integral constant expression}} +#pragma omp teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; @@ -126,10 +129,13 @@ int main(int argc, char **argv) { argv[0][i] = argv[0][i] - argv[0][i-4]; #if __cplusplus >= 201103L - // expected-note@+3 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+6 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif #pragma omp target -#pragma omp teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{directive '#pragma omp teams distribute parallel for simd' cannot contain more than one 'safelen' clause}} expected-error {{expression is not an integral constant expression}} +// expected-error@+3 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+2 2 {{directive '#pragma omp teams distribute parallel for simd' cannot contain more than one 'safelen' clause}} +// expected-error@+1 {{expression is not an integral constant expression}} +#pragma omp teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; diff --git a/clang/test/OpenMP/teams_distribute_simd_collapse_messages.cpp b/clang/test/OpenMP/teams_distribute_simd_collapse_messages.cpp index d0b2f814bf8..a5eb6d20e02 100644 --- a/clang/test/OpenMP/teams_distribute_simd_collapse_messages.cpp +++ b/clang/test/OpenMP/teams_distribute_simd_collapse_messages.cpp @@ -60,7 +60,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp teams distribute simd', but found only 1}} // expected-error@+7 2 {{directive '#pragma omp teams distribute simd' cannot contain more than one 'collapse' clause}} -// expected-error@+6 2 {{argument to 'collapse' clause must be a strictly positive integer value}} +// expected-error@+6 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+5 2 {{expression is not an integral constant expression}} #if __cplusplus >= 201103L // expected-note@+3 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} @@ -136,7 +136,7 @@ int main(int argc, char **argv) { // expected-error@+7 {{expression is not an integral constant expression}} // expected-error@+6 2 {{directive '#pragma omp teams distribute simd' cannot contain more than one 'collapse' clause}} -// expected-error@+5 2 {{argument to 'collapse' clause must be a strictly positive integer value}} +// expected-error@+5 {{argument to 'collapse' clause must be a strictly positive integer value}} #if __cplusplus >= 201103L // expected-note@+3 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif diff --git a/clang/test/OpenMP/teams_distribute_simd_safelen_messages.cpp b/clang/test/OpenMP/teams_distribute_simd_safelen_messages.cpp index 7be581a96b9..a3ea61e1da1 100644 --- a/clang/test/OpenMP/teams_distribute_simd_safelen_messages.cpp +++ b/clang/test/OpenMP/teams_distribute_simd_safelen_messages.cpp @@ -56,10 +56,13 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} argv[0][i] = argv[0][i] - argv[0][i-ST]; #if __cplusplus >= 201103L - // expected-note@+3 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+6 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif #pragma omp target -#pragma omp teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{directive '#pragma omp teams distribute simd' cannot contain more than one 'safelen' clause}} expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{expression is not an integral constant expression}} +// expected-error@+3 2 {{directive '#pragma omp teams distribute simd' cannot contain more than one 'safelen' clause}} +// expected-error@+2 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+1 2 {{expression is not an integral constant expression}} +#pragma omp teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; @@ -126,10 +129,13 @@ int main(int argc, char **argv) { argv[0][i] = argv[0][i] - argv[0][i-4]; #if __cplusplus >= 201103L - // expected-note@+3 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+6 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif #pragma omp target -#pragma omp teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{directive '#pragma omp teams distribute simd' cannot contain more than one 'safelen' clause}} expected-error {{expression is not an integral constant expression}} +// expected-error@+3 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+2 2 {{directive '#pragma omp teams distribute simd' cannot contain more than one 'safelen' clause}} +// expected-error@+1 {{expression is not an integral constant expression}} +#pragma omp teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; diff --git a/clang/test/OpenMP/teams_distribute_simd_simdlen_messages.cpp b/clang/test/OpenMP/teams_distribute_simd_simdlen_messages.cpp index 7be581a96b9..a3ea61e1da1 100644 --- a/clang/test/OpenMP/teams_distribute_simd_simdlen_messages.cpp +++ b/clang/test/OpenMP/teams_distribute_simd_simdlen_messages.cpp @@ -56,10 +56,13 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}} argv[0][i] = argv[0][i] - argv[0][i-ST]; #if __cplusplus >= 201103L - // expected-note@+3 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+6 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif #pragma omp target -#pragma omp teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{directive '#pragma omp teams distribute simd' cannot contain more than one 'safelen' clause}} expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{expression is not an integral constant expression}} +// expected-error@+3 2 {{directive '#pragma omp teams distribute simd' cannot contain more than one 'safelen' clause}} +// expected-error@+2 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+1 2 {{expression is not an integral constant expression}} +#pragma omp teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; @@ -126,10 +129,13 @@ int main(int argc, char **argv) { argv[0][i] = argv[0][i] - argv[0][i-4]; #if __cplusplus >= 201103L - // expected-note@+3 {{non-constexpr function 'foobool' cannot be used in a constant expression}} + // expected-note@+6 {{non-constexpr function 'foobool' cannot be used in a constant expression}} #endif #pragma omp target -#pragma omp teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5) // expected-error 2 {{argument to 'safelen' clause must be a strictly positive integer value}} expected-error 2 {{directive '#pragma omp teams distribute simd' cannot contain more than one 'safelen' clause}} expected-error {{expression is not an integral constant expression}} +// expected-error@+3 {{argument to 'safelen' clause must be a strictly positive integer value}} +// expected-error@+2 2 {{directive '#pragma omp teams distribute simd' cannot contain more than one 'safelen' clause}} +// expected-error@+1 {{expression is not an integral constant expression}} +#pragma omp teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5) for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; diff --git a/clang/test/Sema/shift.c b/clang/test/Sema/shift.c index 47744fb049f..63c95382492 100644 --- a/clang/test/Sema/shift.c +++ b/clang/test/Sema/shift.c @@ -20,6 +20,9 @@ void test() { c = 1 >> -0; c = 1 << -1; // expected-warning {{shift count is negative}} c = 1 >> -1; // expected-warning {{shift count is negative}} + c = 1 << (unsigned)-1; // expected-warning {{shift count >= width of type}} + // expected-warning@-1 {{implicit conversion}} + c = 1 >> (unsigned)-1; // expected-warning {{shift count >= width of type}} c = 1 << c; c <<= 0; c >>= 0; diff --git a/clang/test/SemaCXX/constexpr-unsigned-high-bit.cpp b/clang/test/SemaCXX/constexpr-unsigned-high-bit.cpp new file mode 100644 index 00000000000..19d8dcab660 --- /dev/null +++ b/clang/test/SemaCXX/constexpr-unsigned-high-bit.cpp @@ -0,0 +1,15 @@ +// RUN: %clang_cc1 -std=c++14 -fsyntax-only %s + +#include <limits.h> + +constexpr unsigned inc() { + unsigned i = INT_MAX; + ++i; // should not warn value is outside range + return i; +} + +constexpr unsigned dec() { + unsigned i = INT_MIN; + --i; // should not warn value is outside range + return i; +} diff --git a/llvm/include/llvm/ADT/APSInt.h b/llvm/include/llvm/ADT/APSInt.h index be366116141..0f991826c45 100644 --- a/llvm/include/llvm/ADT/APSInt.h +++ b/llvm/include/llvm/ADT/APSInt.h @@ -42,6 +42,24 @@ public: /// \param Str the string to be interpreted. explicit APSInt(StringRef Str); + /// Determine sign of this APSInt. + /// + /// \returns true if this APSInt is negative, false otherwise + bool isNegative() const { return isSigned() && APInt::isNegative(); } + + /// Determine if this APSInt Value is non-negative (>= 0) + /// + /// \returns true if this APSInt is non-negative, false otherwise + bool isNonNegative() const { return !isNegative(); } + + /// Determine if this APSInt Value is positive. + /// + /// This tests if the value of this APSInt is positive (> 0). Note + /// that 0 is not a positive value. + /// + /// \returns true if this APSInt is positive. + bool isStrictlyPositive() const { return isNonNegative() && !isNullValue(); } + APSInt &operator=(APInt RHS) { // Retain our current sign. APInt::operator=(std::move(RHS)); diff --git a/llvm/unittests/ADT/APSIntTest.cpp b/llvm/unittests/ADT/APSIntTest.cpp index c76a32051d8..1ad38716c77 100644 --- a/llvm/unittests/ADT/APSIntTest.cpp +++ b/llvm/unittests/ADT/APSIntTest.cpp @@ -159,4 +159,90 @@ TEST(APSIntTest, StringDeath) { #endif +TEST(APSIntTest, SignedHighBit) { + APSInt False(APInt(1, 0), false); + APSInt True(APInt(1, 1), false); + APSInt CharMin(APInt(8, 0), false); + APSInt CharSmall(APInt(8, 0x13), false); + APSInt CharBoundaryUnder(APInt(8, 0x7f), false); + APSInt CharBoundaryOver(APInt(8, 0x80), false); + APSInt CharLarge(APInt(8, 0xd9), false); + APSInt CharMax(APInt(8, 0xff), false); + + EXPECT_FALSE(False.isNegative()); + EXPECT_TRUE(False.isNonNegative()); + EXPECT_FALSE(False.isStrictlyPositive()); + + EXPECT_TRUE(True.isNegative()); + EXPECT_FALSE(True.isNonNegative()); + EXPECT_FALSE(True.isStrictlyPositive()); + + EXPECT_FALSE(CharMin.isNegative()); + EXPECT_TRUE(CharMin.isNonNegative()); + EXPECT_FALSE(CharMin.isStrictlyPositive()); + + EXPECT_FALSE(CharSmall.isNegative()); + EXPECT_TRUE(CharSmall.isNonNegative()); + EXPECT_TRUE(CharSmall.isStrictlyPositive()); + + EXPECT_FALSE(CharBoundaryUnder.isNegative()); + EXPECT_TRUE(CharBoundaryUnder.isNonNegative()); + EXPECT_TRUE(CharBoundaryUnder.isStrictlyPositive()); + + EXPECT_TRUE(CharBoundaryOver.isNegative()); + EXPECT_FALSE(CharBoundaryOver.isNonNegative()); + EXPECT_FALSE(CharBoundaryOver.isStrictlyPositive()); + + EXPECT_TRUE(CharLarge.isNegative()); + EXPECT_FALSE(CharLarge.isNonNegative()); + EXPECT_FALSE(CharLarge.isStrictlyPositive()); + + EXPECT_TRUE(CharMax.isNegative()); + EXPECT_FALSE(CharMax.isNonNegative()); + EXPECT_FALSE(CharMax.isStrictlyPositive()); +} + +TEST(APSIntTest, UnsignedHighBit) { + APSInt False(APInt(1, 0)); + APSInt True(APInt(1, 1)); + APSInt CharMin(APInt(8, 0)); + APSInt CharSmall(APInt(8, 0x13)); + APSInt CharBoundaryUnder(APInt(8, 0x7f)); + APSInt CharBoundaryOver(APInt(8, 0x80)); + APSInt CharLarge(APInt(8, 0xd9)); + APSInt CharMax(APInt(8, 0xff)); + + EXPECT_FALSE(False.isNegative()); + EXPECT_TRUE(False.isNonNegative()); + EXPECT_FALSE(False.isStrictlyPositive()); + + EXPECT_FALSE(True.isNegative()); + EXPECT_TRUE(True.isNonNegative()); + EXPECT_TRUE(True.isStrictlyPositive()); + + EXPECT_FALSE(CharMin.isNegative()); + EXPECT_TRUE(CharMin.isNonNegative()); + EXPECT_FALSE(CharMin.isStrictlyPositive()); + + EXPECT_FALSE(CharSmall.isNegative()); + EXPECT_TRUE(CharSmall.isNonNegative()); + EXPECT_TRUE(CharSmall.isStrictlyPositive()); + + EXPECT_FALSE(CharBoundaryUnder.isNegative()); + EXPECT_TRUE(CharBoundaryUnder.isNonNegative()); + EXPECT_TRUE(CharBoundaryUnder.isStrictlyPositive()); + + EXPECT_FALSE(CharBoundaryOver.isNegative()); + EXPECT_TRUE(CharBoundaryOver.isNonNegative()); + EXPECT_TRUE(CharBoundaryOver.isStrictlyPositive()); + + EXPECT_FALSE(CharLarge.isNegative()); + EXPECT_TRUE(CharLarge.isNonNegative()); + EXPECT_TRUE(CharLarge.isStrictlyPositive()); + + EXPECT_FALSE(CharMax.isNegative()); + EXPECT_TRUE(CharMax.isNonNegative()); + EXPECT_TRUE(CharMax.isStrictlyPositive()); +} + } // end anonymous namespace |