diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2014-12-12 21:50:12 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2014-12-12 21:50:12 +0000 |
commit | 88957d5e1497d3e27e31f3513866e7d88904c08f (patch) | |
tree | 1f0a6098fda104214d7e0b892aa8b56fe5d198df /gcc | |
parent | d95521b4118c83b23997a823b0682a385609fd84 (diff) | |
download | gcc-88957d5e1497d3e27e31f3513866e7d88904c08f.zip gcc-88957d5e1497d3e27e31f3513866e7d88904c08f.tar.gz gcc-88957d5e1497d3e27e31f3513866e7d88904c08f.tar.bz2 |
re PR c++/59628 (ICE with invalid OpenMP "declare reduction" clause)
/cp
2014-12-12 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/59628
* semantics.c (finish_omp_reduction_clause): Early return true
if DECL_SAVED_TREE (id) is NULL_TREE.
/testsuite
2014-12-12 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/59628
* g++.dg/gomp/pr59628.C: New.
From-SVN: r218692
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/gomp/pr59628.C | 13 |
4 files changed, 26 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4fb8a13..576610d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2014-12-12 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/59628 + * semantics.c (finish_omp_reduction_clause): Early return true + if DECL_SAVED_TREE (id) is NULL_TREE. + 2014-12-12 Jason Merrill <jason@redhat.com> N3922 diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 8a1de7e..5ad391e 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -5138,6 +5138,8 @@ finish_omp_reduction_clause (tree c, bool *need_default_ctor, bool *need_dtor) id = OVL_CURRENT (id); mark_used (id); tree body = DECL_SAVED_TREE (id); + if (!body) + return true; if (TREE_CODE (body) == STATEMENT_LIST) { tree_stmt_iterator tsi; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 378f309..7676177 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2014-12-12 Paolo Carlini <paolo.carlini@oracle.com> + PR c++/59628 + * g++.dg/gomp/pr59628.C: New. + +2014-12-12 Paolo Carlini <paolo.carlini@oracle.com> + PR c++/61924 * g++.dg/cpp0x/pr61924.C: New. diff --git a/gcc/testsuite/g++.dg/gomp/pr59628.C b/gcc/testsuite/g++.dg/gomp/pr59628.C new file mode 100644 index 0000000..518200b --- /dev/null +++ b/gcc/testsuite/g++.dg/gomp/pr59628.C @@ -0,0 +1,13 @@ +// PR c++/59628 +// { dg-do compile } +// { dg-options "-fopenmp" } + +struct A { int i; }; + +void foo() +{ + A a; + #pragma omp declare reduction (+: A: omp_out.i +: omp_in.i) // { dg-error "expected" } + #pragma omp parallel reduction (+: a) + ; +} |