This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/22452] [4.1 regression] ICE expected tree that contains 'decl with visibility' structure, have 'const_decl' in decl_linkage, at cp/tree.c:2132
- From: "gdr at integrable-solutions dot net" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 14 Jul 2005 21:17:40 -0000
- Subject: [Bug c++/22452] [4.1 regression] ICE expected tree that contains 'decl with visibility' structure, have 'const_decl' in decl_linkage, at cp/tree.c:2132
- References: <20050713043209.22452.belyshev@depni.sinp.msu.ru>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From gdr at integrable-solutions dot net 2005-07-14 21:17 -------
Subject: Re: [4.1 regression] ICE expected tree that contains 'decl with visibility' structure, have 'const_decl' in decl_linkage, at cp/tree.c:2132
"dberlin at dberlin dot org" <gcc-bugzilla@gcc.gnu.org> writes:
| ------- Additional Comments From dberlin at gcc dot gnu dot org 2005-07-14 20:40 -------
| Subject: Re: [4.1 regression] ICE expected tree that
| contains 'decl with visibility' structure, have 'const_decl' in
| decl_linkage, at cp/tree.c:2132
|
|
| > |
| > | I really don't have the skills to play language lawyer here, my
| >
| > I'm not here to play language lawyer neither; but the claim just looks
| > wrong to me. Unless you define playing language lawyer as giving
| > asnwer you questions you raised.
| Playing language lawyer is sitting here quoting the standard at me
| instead of demonstrating a testcase where the old answer is wrong.
The comment in front of DECL_EXTERNAL_LINKAGE_P says this:
/* Returns nonzero if DECL has external linkage, as specified by the
language standard. (This predicate may hold even when the
corresponding entity is not actually given external linkage in the
object file; see decl_linkage for details.) */
#define DECL_EXTERNAL_LINKAGE_P(DECL) \
(decl_linkage (DECL) == lk_external)
So, if you find a testcase where decl_linkage() returns lk_internal
insteand of lk_external, then you have found a bug in the compiler.
The fix is not to copy-and-paste that error. Language lawyering
notwithstanding.
-- Gaby
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22452