Summary: | g++ confused by friend and static member with same name | ||
---|---|---|---|
Product: | gcc | Reporter: | nmusatti |
Component: | c++ | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | critical | CC: | gcc-bugs, gdr, mmitchel, nmusatti, raoulgough |
Priority: | P1 | Keywords: | rejects-valid |
Version: | 3.1 | ||
Target Milestone: | --- | ||
Host: | Target: | ||
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: |
Description
nmusatti
2002-07-01 04:56:03 UTC
From: "Raoul Gough" <RaoulGough@yahoo.co.uk> To: <gcc-gnats@gcc.gnu.org>, <gcc-prs@gcc.gnu.org>, <gcc-bugs@gcc.gnu.org>, <nobody@gcc.gnu.org>, <nmusatti@comm2000.it> Cc: Subject: Re: c++/7176: g++ confused by friend and static member with same name Date: Sat, 3 Aug 2002 16:04:12 +0100 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&p r=7176 Is this PR related to (or the same) as the following much simpler compile problem? typedef int foo; struct bar { foo foo; }; $ f:/mingw/bin/g++ -c typename_reuse.cc typename_reuse.cc:4: declaration of `foo bar::foo' typename_reuse.cc:1: changes meaning of `foo' from `typedef int foo' BTW, I don't write code like that myself - it's representative of some code in the Microsoft DirectX samples. Regards, Raoul Gough. __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com From: Nicola Musatti <nmusatti@comm2000.it> To: Raoul Gough <RaoulGough@yahoo.co.uk> Cc: gcc-gnats@gcc.gnu.org, gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org, nobody@gcc.gnu.org Subject: Re: c++/7176: g++ confused by friend and static member with same name Date: Wed, 14 Aug 2002 08:26:13 +0200 Sorry for the delay in answering. Raoul Gough wrote: > > http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&p > r=7176 > > Is this PR related to (or the same) as the following much simpler compile > problem? > > typedef int foo; > > struct bar { > foo foo; > }; > > $ f:/mingw/bin/g++ -c typename_reuse.cc > typename_reuse.cc:4: declaration of `foo bar::foo' > typename_reuse.cc:1: changes meaning of `foo' from `typedef int foo' This has many similarities with the problem I submitted, but I don't know enough about language details or the compiler to venture an opinion. Cheers, Nicola Musatti State-Changed-From-To: open->analyzed State-Changed-Why: Confirmed. A regression from 2.95 State-Changed-From-To: analyzed->closed State-Changed-Why: Fixed in GCC 3.2.1. From: mmitchel@gcc.gnu.org To: gcc-gnats@gcc.gnu.org Cc: Subject: c++/7176 Date: 14 Oct 2002 07:46:30 -0000 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-3_2-branch Changes by: mmitchel@gcc.gnu.org 2002-10-14 00:46:30 Modified files: gcc/cp : ChangeLog lex.c parse.y gcc/testsuite : ChangeLog gcc/testsuite/g++.old-deja/g++.pt: memtemp64.C Added files: gcc/testsuite/g++.dg/parse: friend1.C Log message: PR c++/7176 * lex.c (do_identifier): Add another option for the parsing parameter. * parse.y (do_id): Use it. PR c++/7176 * g++.dg/parse/friend1.C: New test. * g++.old-deja/g++.pt/memtemp64.C: Adjust. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.2685.2.114.2.19&r2=1.2685.2.114.2.20 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/lex.c.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.265.2.2&r2=1.265.2.2.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/parse.y.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.248.2.5.4.1&r2=1.248.2.5.4.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.1672.2.166.2.23&r2=1.1672.2.166.2.24 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/friend1.C.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=NONE&r2=1.1.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.old-deja/g++.pt/memtemp64.C.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.3&r2=1.3.36.1 From: mmitchel@gcc.gnu.org To: gcc-gnats@gcc.gnu.org Cc: Subject: c++/7176 Date: 14 Oct 2002 07:46:30 -0000 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-3_2-branch Changes by: mmitchel@gcc.gnu.org 2002-10-14 00:46:30 Modified files: gcc/cp : ChangeLog lex.c parse.y gcc/testsuite : ChangeLog gcc/testsuite/g++.old-deja/g++.pt: memtemp64.C Added files: gcc/testsuite/g++.dg/parse: friend1.C Log message: PR c++/7176 * lex.c (do_identifier): Add another option for the parsing parameter. * parse.y (do_id): Use it. PR c++/7176 * g++.dg/parse/friend1.C: New test. * g++.old-deja/g++.pt/memtemp64.C: Adjust. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.2685.2.114.2.19&r2=1.2685.2.114.2.20 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/lex.c.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.265.2.2&r2=1.265.2.2.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/parse.y.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.248.2.5.4.1&r2=1.248.2.5.4.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.1672.2.166.2.23&r2=1.1672.2.166.2.24 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/friend1.C.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=NONE&r2=1.1.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.old-deja/g++.pt/memtemp64.C.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.3&r2=1.3.36.1 From: mmitchel@gcc.gnu.org To: gcc-gnats@gcc.gnu.org Cc: Subject: c++/7176 Date: 14 Oct 2002 21:09:27 -0000 CVSROOT: /cvs/gcc Module name: gcc Changes by: mmitchel@gcc.gnu.org 2002-10-14 14:09:26 Modified files: gcc/testsuite : ChangeLog gcc/testsuite/g++.old-deja/g++.pt: memtemp64.C gcc/cp : ChangeLog lex.c parse.y Added files: gcc/testsuite/g++.dg/parse: friend1.C Log message: PR c++/7176 * g++.dg/parse/friend1.C: New test. * g++.old-deja/g++.pt/memtemp64.C: Adjust. PR c++/7176 * lex.c (do_identifier): Add another option for the parsing parameter. * parse.y (do_id): Use it. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.2136&r2=1.2137 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/friend1.C.diff?cvsroot=gcc&r1=1.1&r2=1.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.old-deja/g++.pt/memtemp64.C.diff?cvsroot=gcc&r1=1.3&r2=1.4 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&r1=1.2995&r2=1.2996 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/lex.c.diff?cvsroot=gcc&r1=1.291&r2=1.292 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/parse.y.diff?cvsroot=gcc&r1=1.282&r2=1.283 From: mmitchel@gcc.gnu.org To: gcc-gnats@gcc.gnu.org Cc: Subject: c++/7176 Date: 14 Oct 2002 21:09:27 -0000 CVSROOT: /cvs/gcc Module name: gcc Changes by: mmitchel@gcc.gnu.org 2002-10-14 14:09:26 Modified files: gcc/testsuite : ChangeLog gcc/testsuite/g++.old-deja/g++.pt: memtemp64.C gcc/cp : ChangeLog lex.c parse.y Added files: gcc/testsuite/g++.dg/parse: friend1.C Log message: PR c++/7176 * g++.dg/parse/friend1.C: New test. * g++.old-deja/g++.pt/memtemp64.C: Adjust. PR c++/7176 * lex.c (do_identifier): Add another option for the parsing parameter. * parse.y (do_id): Use it. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.2136&r2=1.2137 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/friend1.C.diff?cvsroot=gcc&r1=1.1&r2=1.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.old-deja/g++.pt/memtemp64.C.diff?cvsroot=gcc&r1=1.3&r2=1.4 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&r1=1.2995&r2=1.2996 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/lex.c.diff?cvsroot=gcc&r1=1.291&r2=1.292 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/parse.y.diff?cvsroot=gcc&r1=1.282&r2=1.283 |