public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/26122]  New: [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble
@ 2006-02-06 12:25 reichelt at gcc dot gnu dot org
  2006-02-06 12:46 ` [Bug c++/26122] " pinskia at gcc dot gnu dot org
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: reichelt at gcc dot gnu dot org @ 2006-02-06 12:25 UTC (permalink / raw)
  To: gcc-bugs

The following invalid code snippet is accepted by GCC since at least
GCC 2.95.3:

====================================
struct A
{
    template<int> void foo() = 0;
};
====================================


A similar code snippet causes an ICE since GCC 4.0.0:

====================================
struct A
{
    template<int> void foo() = 1;
};
====================================

  bug.cc:3: internal compiler error: in grokfield, at cp/decl2.c:899
  Please submit a full bug report, [etc.]

It was rejected before, but only because the pure specifier was malformed,
and not because it was present at all:

  bug.cc:3: error: invalid initializer for virtual method `void A::foo()'


-- 
           Summary: [4.0/4.1/4.2 regression] Pure specifiers for templates
                    causing trouble
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Keywords: ice-on-invalid-code, accepts-invalid, monitored
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: reichelt at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26122


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/26122] [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble
  2006-02-06 12:25 [Bug c++/26122] New: [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble reichelt at gcc dot gnu dot org
@ 2006-02-06 12:46 ` pinskia at gcc dot gnu dot org
  2006-02-06 15:14 ` reichelt at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-02-06 12:46 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from pinskia at gcc dot gnu dot org  2006-02-06 12:46 -------
Confirmed.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2006-02-06 12:46:29
               date|                            |
   Target Milestone|---                         |4.0.3


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26122


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/26122] [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble
  2006-02-06 12:25 [Bug c++/26122] New: [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble reichelt at gcc dot gnu dot org
  2006-02-06 12:46 ` [Bug c++/26122] " pinskia at gcc dot gnu dot org
@ 2006-02-06 15:14 ` reichelt at gcc dot gnu dot org
  2006-02-14  9:00 ` mmitchel at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: reichelt at gcc dot gnu dot org @ 2006-02-06 15:14 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from reichelt at gcc dot gnu dot org  2006-02-06 15:14 -------
Btw, we also fail to diagnose the following invalid code snippet:

=================================
template<int> struct A
{
    void foo() = 0;
};
=================================


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26122


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/26122] [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble
  2006-02-06 12:25 [Bug c++/26122] New: [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble reichelt at gcc dot gnu dot org
  2006-02-06 12:46 ` [Bug c++/26122] " pinskia at gcc dot gnu dot org
  2006-02-06 15:14 ` reichelt at gcc dot gnu dot org
@ 2006-02-14  9:00 ` mmitchel at gcc dot gnu dot org
  2006-02-18  9:51 ` mmitchel at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2006-02-14  9:00 UTC (permalink / raw)
  To: gcc-bugs



-- 

mmitchel at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P2


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26122


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/26122] [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble
  2006-02-06 12:25 [Bug c++/26122] New: [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble reichelt at gcc dot gnu dot org
                   ` (2 preceding siblings ...)
  2006-02-14  9:00 ` mmitchel at gcc dot gnu dot org
@ 2006-02-18  9:51 ` mmitchel at gcc dot gnu dot org
  2006-02-24  0:30 ` mmitchel at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2006-02-18  9:51 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from mmitchel at gcc dot gnu dot org  2006-02-18 09:51 -------
The reason that the first and last examples are accepted is that, were there
dependent base classes, we would have no way of knowing whether or not those
base classes might declare a virtual function for which this function was an
override.  We will detect the problem at template instantiation time.  So,
diagnosing those examples is almost a feature request, rather than a bug fix.

I am testing a patch for the ICE.


-- 

mmitchel at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |mark at codesourcery dot com
                   |dot org                     |
             Status|NEW                         |ASSIGNED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26122


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/26122] [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble
  2006-02-06 12:25 [Bug c++/26122] New: [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble reichelt at gcc dot gnu dot org
                   ` (3 preceding siblings ...)
  2006-02-18  9:51 ` mmitchel at gcc dot gnu dot org
@ 2006-02-24  0:30 ` mmitchel at gcc dot gnu dot org
  2006-04-11 23:00 ` mmitchel at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2006-02-24  0:30 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from mmitchel at gcc dot gnu dot org  2006-02-24 00:26 -------
This issue will not be resolved in GCC 4.1.0; retargeted at GCC 4.1.1.


-- 

mmitchel at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.0.3                       |4.1.1


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26122


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/26122] [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble
  2006-02-06 12:25 [Bug c++/26122] New: [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble reichelt at gcc dot gnu dot org
                   ` (4 preceding siblings ...)
  2006-02-24  0:30 ` mmitchel at gcc dot gnu dot org
@ 2006-04-11 23:00 ` mmitchel at gcc dot gnu dot org
  2006-04-12  1:18 ` mmitchel at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2006-04-11 23:00 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from mmitchel at gcc dot gnu dot org  2006-04-11 23:00 -------
Subject: Bug 26122

Author: mmitchel
Date: Tue Apr 11 22:59:57 2006
New Revision: 112869

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=112869
Log:
        * g++.dg/parse/dtor7.C: New test.
        * g++.dg/parse/new1.C: Add error marker.
        * g++.dg/template/new3.C: New test.

        PR c++/26122
        * g++.dg/template/pure1.C: New test.

        PR c++/26295
        * g++.dg/parse/ptrmem4.C: New test.

Added:
    trunk/gcc/testsuite/g++.dg/parse/ptrmem4.C
    trunk/gcc/testsuite/g++.dg/template/new3.C
    trunk/gcc/testsuite/g++.dg/template/pure1.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/call.c
    trunk/gcc/cp/cp-tree.h
    trunk/gcc/cp/decl.c
    trunk/gcc/cp/init.c
    trunk/gcc/cp/parser.c
    trunk/gcc/cp/pt.c
    trunk/gcc/cp/semantics.c
    trunk/gcc/cp/typeck2.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/g++.dg/parse/dtor7.C
    trunk/gcc/testsuite/g++.dg/parse/new1.C


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26122


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/26122] [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble
  2006-02-06 12:25 [Bug c++/26122] New: [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble reichelt at gcc dot gnu dot org
                   ` (5 preceding siblings ...)
  2006-04-11 23:00 ` mmitchel at gcc dot gnu dot org
@ 2006-04-12  1:18 ` mmitchel at gcc dot gnu dot org
  2006-04-12  1:19 ` mmitchel at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2006-04-12  1:18 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from mmitchel at gcc dot gnu dot org  2006-04-12 01:18 -------
Subject: Bug 26122

Author: mmitchel
Date: Wed Apr 12 01:18:06 2006
New Revision: 112879

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=112879
Log:
        PR c++/26122
        * parser.c (cp_parser_init_declarator): Adjust logic for deciding
        whether or not to look for a pure-specifier.
        (cp_parser_member_declaration): Likewise.

Added:
    branches/gcc-4_1-branch/gcc/testsuite/g++.dg/template/pure1.C
Modified:
    branches/gcc-4_1-branch/gcc/cp/ChangeLog
    branches/gcc-4_1-branch/gcc/cp/parser.c
    branches/gcc-4_1-branch/gcc/testsuite/ChangeLog


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26122


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/26122] [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble
  2006-02-06 12:25 [Bug c++/26122] New: [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble reichelt at gcc dot gnu dot org
                   ` (6 preceding siblings ...)
  2006-04-12  1:18 ` mmitchel at gcc dot gnu dot org
@ 2006-04-12  1:19 ` mmitchel at gcc dot gnu dot org
  2006-05-17 21:39 ` mmitchel at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2006-04-12  1:19 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from mmitchel at gcc dot gnu dot org  2006-04-12 01:19 -------
The ICE is now fixed.  

I'm not sure if the failure to diagnose the fact that a non-virtual function
has a pure specifier in a template class is a regression or not.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26122


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/26122] [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble
  2006-02-06 12:25 [Bug c++/26122] New: [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble reichelt at gcc dot gnu dot org
                   ` (7 preceding siblings ...)
  2006-04-12  1:19 ` mmitchel at gcc dot gnu dot org
@ 2006-05-17 21:39 ` mmitchel at gcc dot gnu dot org
  2006-05-17 21:43 ` [Bug c++/26122] [4.0/4.1 " mmitchel at gcc dot gnu dot org
  2007-03-03 21:54 ` pinskia at gcc dot gnu dot org
  10 siblings, 0 replies; 12+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2006-05-17 21:39 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from mmitchel at gcc dot gnu dot org  2006-05-17 21:39 -------
Subject: Bug 26122

Author: mmitchel
Date: Wed May 17 21:39:07 2006
New Revision: 113873

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=113873
Log:
        PR c++/26122
        * decl2.c (check_member_template): Remove checks for virtual
        functions.
        * parser.c (cp_parser_function_specifier_opt): Complain about
        virtual templates.
        (cp_parser_pure_specifier): Likewise.
        PR c++/26122
        * g++.old-deja/g++.oliva/template9.C: Remove XFAIL.

Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/decl2.c
    trunk/gcc/cp/parser.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/g++.old-deja/g++.oliva/template9.C


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26122


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/26122] [4.0/4.1 regression] Pure specifiers for templates causing trouble
  2006-02-06 12:25 [Bug c++/26122] New: [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble reichelt at gcc dot gnu dot org
                   ` (8 preceding siblings ...)
  2006-05-17 21:39 ` mmitchel at gcc dot gnu dot org
@ 2006-05-17 21:43 ` mmitchel at gcc dot gnu dot org
  2007-03-03 21:54 ` pinskia at gcc dot gnu dot org
  10 siblings, 0 replies; 12+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2006-05-17 21:43 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from mmitchel at gcc dot gnu dot org  2006-05-17 21:43 -------
Fixed in 4.2.

I consider the issue in Comment #2 to be somewhere between a feature request
and a non-bug, as were there a dependent base class, it would not be possible
to tell if A::foo were virtual or not at the point of parsing the template.


-- 

mmitchel at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED
            Summary|[4.0/4.1/4.2 regression]    |[4.0/4.1 regression] Pure
                   |Pure specifiers for         |specifiers for templates
                   |templates causing trouble   |causing trouble


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26122


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/26122] [4.0/4.1 regression] Pure specifiers for templates causing trouble
  2006-02-06 12:25 [Bug c++/26122] New: [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble reichelt at gcc dot gnu dot org
                   ` (9 preceding siblings ...)
  2006-05-17 21:43 ` [Bug c++/26122] [4.0/4.1 " mmitchel at gcc dot gnu dot org
@ 2007-03-03 21:54 ` pinskia at gcc dot gnu dot org
  10 siblings, 0 replies; 12+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2007-03-03 21:54 UTC (permalink / raw)
  To: gcc-bugs



-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.1.1                       |4.2.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26122


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2007-03-03 21:54 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-02-06 12:25 [Bug c++/26122] New: [4.0/4.1/4.2 regression] Pure specifiers for templates causing trouble reichelt at gcc dot gnu dot org
2006-02-06 12:46 ` [Bug c++/26122] " pinskia at gcc dot gnu dot org
2006-02-06 15:14 ` reichelt at gcc dot gnu dot org
2006-02-14  9:00 ` mmitchel at gcc dot gnu dot org
2006-02-18  9:51 ` mmitchel at gcc dot gnu dot org
2006-02-24  0:30 ` mmitchel at gcc dot gnu dot org
2006-04-11 23:00 ` mmitchel at gcc dot gnu dot org
2006-04-12  1:18 ` mmitchel at gcc dot gnu dot org
2006-04-12  1:19 ` mmitchel at gcc dot gnu dot org
2006-05-17 21:39 ` mmitchel at gcc dot gnu dot org
2006-05-17 21:43 ` [Bug c++/26122] [4.0/4.1 " mmitchel at gcc dot gnu dot org
2007-03-03 21:54 ` pinskia at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).