From eed21ac462e193944bf1fec42d7739f8b7a5622c Mon Sep 17 00:00:00 2001 From: paolo Date: Fri, 12 Dec 2014 21:50:12 +0000 Subject: [PATCH] /cp 2014-12-12 Paolo Carlini 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 PR c++/59628 * g++.dg/gomp/pr59628.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218692 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/semantics.c | 2 ++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/gomp/pr59628.C | 13 +++++++++++++ 4 files changed, 26 insertions(+) create mode 100644 gcc/testsuite/g++.dg/gomp/pr59628.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4fb8a13c3224..576610deed0d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2014-12-12 Paolo Carlini + + 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 N3922 diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 8a1de7e095c9..5ad391eda5be 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 378f30973f32..767617798ab7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-12-12 Paolo Carlini + + PR c++/59628 + * g++.dg/gomp/pr59628.C: New. + 2014-12-12 Paolo Carlini PR c++/61924 diff --git a/gcc/testsuite/g++.dg/gomp/pr59628.C b/gcc/testsuite/g++.dg/gomp/pr59628.C new file mode 100644 index 000000000000..518200b9c292 --- /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) + ; +} -- 2.47.3