From c930bee57a4a1c17f77d10165ae7ab285880e2fa Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 11 Feb 2016 10:28:23 +0100 Subject: [PATCH] backport: re PR c++/59627 (ICE with OpenMP "declare reduction" and -flto) Backported from mainline 2016-02-08 Jakub Jelinek PR c++/59627 * parser.c (cp_parser_omp_declare_reduction): Set assembler name of the DECL_OMP_DECLARE_REDUCTION_P decls. * g++.dg/gomp/pr59627.C: New test. From-SVN: r233336 --- gcc/cp/ChangeLog | 9 +++++++++ gcc/cp/parser.c | 1 + gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/gomp/pr59627.C | 14 ++++++++++++++ 4 files changed, 29 insertions(+) create mode 100644 gcc/testsuite/g++.dg/gomp/pr59627.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 2afcffa807eb..02776465da74 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,12 @@ +2016-02-11 Jakub Jelinek + + Backported from mainline + 2016-02-08 Jakub Jelinek + + PR c++/59627 + * parser.c (cp_parser_omp_declare_reduction): Set assembler name + of the DECL_OMP_DECLARE_REDUCTION_P decls. + 2016-02-10 Jason Merrill PR c++/68926 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 18c706846bac..c811c482725d 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -30918,6 +30918,7 @@ cp_parser_omp_declare_reduction (cp_parser *parser, cp_token *pragma_tok, DECL_DECLARED_INLINE_P (fndecl) = 1; DECL_IGNORED_P (fndecl) = 1; DECL_OMP_DECLARE_REDUCTION_P (fndecl) = 1; + SET_DECL_ASSEMBLER_NAME (fndecl, get_identifier ("")); DECL_ATTRIBUTES (fndecl) = tree_cons (get_identifier ("gnu_inline"), NULL_TREE, DECL_ATTRIBUTES (fndecl)); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 65e4b56d5086..3eba02f66890 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2016-02-11 Jakub Jelinek Backported from mainline + 2016-02-08 Jakub Jelinek + + PR c++/59627 + * g++.dg/gomp/pr59627.C: New test. + 2016-01-22 Jakub Jelinek PR target/69432 diff --git a/gcc/testsuite/g++.dg/gomp/pr59627.C b/gcc/testsuite/g++.dg/gomp/pr59627.C new file mode 100644 index 000000000000..ab6f44df116b --- /dev/null +++ b/gcc/testsuite/g++.dg/gomp/pr59627.C @@ -0,0 +1,14 @@ +// PR c++/59627 +// { dg-do compile { target lto } } +// { dg-options "-fopenmp -flto" } + +struct A { A () : i (0) {} int i; }; + +void +foo () +{ + A a; + #pragma omp declare reduction (+: A: omp_out.i += omp_in.i) + #pragma omp parallel reduction (+: a) + ; +} -- 2.47.2