From 59bce4ad03e438e81dcaa8ed956fbad6461c7d75 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Mon, 26 Aug 2019 14:03:26 -0400 Subject: [PATCH] * decl.c (duplicate_decls): Always merge DECL_DECLARED_CONSTEXPR_P. From-SVN: r274932 --- gcc/cp/ChangeLog | 4 ++++ gcc/cp/decl.c | 5 ++--- gcc/testsuite/g++.dg/cpp0x/constexpr-redeclaration2.C | 5 +++++ 3 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/g++.dg/cpp0x/constexpr-redeclaration2.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f0eb35c1e4e..162b2c81c75 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2019-08-26 Jason Merrill + + * decl.c (duplicate_decls): Always merge DECL_DECLARED_CONSTEXPR_P. + 2019-08-26 Marek Polacek PR c++/91545 - ICE in constexpr store evaluation. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 9f7923871db..847817029e4 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -2204,9 +2204,8 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend) SET_DECL_DEPENDENT_INIT_P (newdecl, true); DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (newdecl) |= DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (olddecl); - if (DECL_CLASS_SCOPE_P (olddecl)) - DECL_DECLARED_CONSTEXPR_P (newdecl) - |= DECL_DECLARED_CONSTEXPR_P (olddecl); + DECL_DECLARED_CONSTEXPR_P (newdecl) + |= DECL_DECLARED_CONSTEXPR_P (olddecl); /* Merge the threadprivate attribute from OLDDECL into NEWDECL. */ if (DECL_LANG_SPECIFIC (olddecl) diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-redeclaration2.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-redeclaration2.C new file mode 100644 index 00000000000..3d492faccdf --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-redeclaration2.C @@ -0,0 +1,5 @@ +// { dg-do compile { target c++11 } } + +constexpr float pi = 3.14; +extern const float pi; +constexpr float x = pi; -- 2.30.2