diff options
author | Jakub Jelinek <jakub@redhat.com> | 2019-03-26 08:54:02 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2019-03-26 08:54:02 +0100 |
commit | 22a32ea068e2ec48fc4d377d2c450a873e76faca (patch) | |
tree | a3c75ea28a53fe313abce17f436ebd9d4a291175 /gcc/testsuite | |
parent | 7a03cad76c1d2d7f156424f0bd9290dfcb1d4488 (diff) | |
download | gcc-22a32ea068e2ec48fc4d377d2c450a873e76faca.zip gcc-22a32ea068e2ec48fc4d377d2c450a873e76faca.tar.gz gcc-22a32ea068e2ec48fc4d377d2c450a873e76faca.tar.bz2 |
re PR c++/89796 (Incorrect warning generated with OpenMP atomic capture)
PR c++/89796
* semantics.c (finish_omp_atomic): Add warning_sentinel for
-Wunused-value around finish_expr_stmt call.
* g++.dg/gomp/pr89796.C: New test.
* gcc.dg/gomp/pr89796.c: New test.
From-SVN: r269933
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/gomp/pr89796.C | 53 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/gomp/pr89796.c | 23 |
3 files changed, 82 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ddd5f50..f5d92b6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2019-03-26 Jakub Jelinek <jakub@redhat.com> + + PR c++/89796 + * g++.dg/gomp/pr89796.C: New test. + * gcc.dg/gomp/pr89796.c: New test. + 2019-03-25 David Malcolm <dmalcolm@redhat.com> PR rtl-optimization/88347 diff --git a/gcc/testsuite/g++.dg/gomp/pr89796.C b/gcc/testsuite/g++.dg/gomp/pr89796.C new file mode 100644 index 0000000..6bbc34e --- /dev/null +++ b/gcc/testsuite/g++.dg/gomp/pr89796.C @@ -0,0 +1,53 @@ +// PR c++/89796 +// { dg-do compile } +// { dg-additional-options "-Wunused-value" } + +int +f1 (int &c) +{ + int r; + #pragma omp atomic capture // { dg-bogus "value computed is not used" } + { r = c; c++; } + return r; +} + +template <int N> +int +f2 (int &c) +{ + int r; + #pragma omp atomic capture // { dg-bogus "value computed is not used" } + { r = c; c++; } + return r; +} + +int +f3 (int &c) +{ + return f2 <0> (c); +} + +int +f4 (int *p) +{ + int r; + #pragma omp atomic capture // { dg-bogus "value computed is not used" } + { r = *p; (*p)++; } + return r; +} + +template <int N> +int +f5 (int *p) +{ + int r; + #pragma omp atomic capture // { dg-bogus "value computed is not used" } + { r = *p; (*p)++; } + return r; +} + +int +f6 (int *p) +{ + return f5 <0> (p); +} diff --git a/gcc/testsuite/gcc.dg/gomp/pr89796.c b/gcc/testsuite/gcc.dg/gomp/pr89796.c new file mode 100644 index 0000000..14f5093 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/pr89796.c @@ -0,0 +1,23 @@ +/* PR c++/89796 */ +/* { dg-do compile } */ +/* { dg-additional-options "-Wunused-value" } */ + +int +f1 (int *p) +{ + int r; + #pragma omp atomic capture /* { dg-bogus "value computed is not used" } */ + { r = *p; (*p)++; } + return r; +} + +int +f2 (int *p) +{ + int s + = ({ int r; + #pragma omp atomic capture /* { dg-bogus "value computed is not used" } */ + { r = *p; (*p)++; } + r; }); + return s; +} |