diff options
author | Nathan Sidwell <nathan@acm.org> | 2020-11-19 08:00:49 -0800 |
---|---|---|
committer | Nathan Sidwell <nathan@acm.org> | 2020-11-19 09:56:30 -0800 |
commit | 255483e5b70beade63efdf1f3efa6b814831da08 (patch) | |
tree | f9abf5a9329e47af9c023413e96ab45badb49c52 /gcc | |
parent | 5ace1776b88d4b0fc371414d0b3983015e22fead (diff) | |
download | gcc-255483e5b70beade63efdf1f3efa6b814831da08.zip gcc-255483e5b70beade63efdf1f3efa6b814831da08.tar.gz gcc-255483e5b70beade63efdf1f3efa6b814831da08.tar.bz2 |
c++: Relax new assert [PR 97905]
It turns out there are legitimate cases for the new decl to not have
lang-specific.
PR c++/97905
gcc/cp/
* decl.c (duplicate_decls): Relax new assert.
gcc/testsuite/
* g++.dg/lookup/pr97905.C: New.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/decl.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lookup/pr97905.C | 7 |
2 files changed, 9 insertions, 3 deletions
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index d90e984..f5c6f5c 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -2749,9 +2749,8 @@ duplicate_decls (tree newdecl, tree olddecl, bool hiding, bool was_hidden) with that from NEWDECL below. */ if (DECL_LANG_SPECIFIC (olddecl)) { - gcc_checking_assert (DECL_LANG_SPECIFIC (newdecl) - && (DECL_LANG_SPECIFIC (olddecl) - != DECL_LANG_SPECIFIC (newdecl))); + gcc_checking_assert (DECL_LANG_SPECIFIC (olddecl) + != DECL_LANG_SPECIFIC (newdecl)); ggc_free (DECL_LANG_SPECIFIC (olddecl)); } diff --git a/gcc/testsuite/g++.dg/lookup/pr97905.C b/gcc/testsuite/g++.dg/lookup/pr97905.C new file mode 100644 index 0000000..22a7e5c --- /dev/null +++ b/gcc/testsuite/g++.dg/lookup/pr97905.C @@ -0,0 +1,7 @@ +// PR 97905 + + +template <typename> void a() { + extern int *b; // This decl gets an (unneeded) decl-lang-specific +} +int *b; // this does not |