public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/51463] New: [c++0x] [4.7 Regression] ICE declaring a member function virtual and static
@ 2011-12-08  8:15 reichelt at gcc dot gnu.org
  2011-12-08  8:20 ` [Bug c++/51463] " reichelt at gcc dot gnu.org
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: reichelt at gcc dot gnu.org @ 2011-12-08  8:15 UTC (permalink / raw)
  To: gcc-bugs

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

             Bug #: 51463
           Summary: [c++0x] [4.7 Regression] ICE declaring a member
                    function virtual and static
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: reichelt@gcc.gnu.org


The following invalid code snippet triggers an ICE on trunk when compiled with
"-std=c++0x":

==============================
struct A
{
  virtual static int i = 0;
};
==============================

bug.cc:3:26: error: member 'i' cannot be declared both virtual and static
bug.cc:3:26: error: 'i' declared as a 'virtual' field
bug.cc:4:1: internal compiler error: tree check: expected default_arg, have
integer_cst in cp_parser_late_parse_one_default_arg, at cp/parser.c:21781
Please submit a full bug report, [etc.]


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

* [Bug c++/51463] [c++0x] [4.7 Regression] ICE declaring a member function virtual and static
  2011-12-08  8:15 [Bug c++/51463] New: [c++0x] [4.7 Regression] ICE declaring a member function virtual and static reichelt at gcc dot gnu.org
@ 2011-12-08  8:20 ` reichelt at gcc dot gnu.org
  2011-12-14 17:05 ` jakub at gcc dot gnu.org
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: reichelt at gcc dot gnu.org @ 2011-12-08  8:20 UTC (permalink / raw)
  To: gcc-bugs

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

Volker Reichelt <reichelt at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |error-recovery,
                   |                            |ice-checking,
                   |                            |ice-on-invalid-code
   Target Milestone|---                         |4.7.0


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

* [Bug c++/51463] [c++0x] [4.7 Regression] ICE declaring a member function virtual and static
  2011-12-08  8:15 [Bug c++/51463] New: [c++0x] [4.7 Regression] ICE declaring a member function virtual and static reichelt at gcc dot gnu.org
  2011-12-08  8:20 ` [Bug c++/51463] " reichelt at gcc dot gnu.org
@ 2011-12-14 17:05 ` jakub at gcc dot gnu.org
  2011-12-15 20:50 ` jakub at gcc dot gnu.org
  2011-12-15 20:55 ` jakub at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: jakub at gcc dot gnu.org @ 2011-12-14 17:05 UTC (permalink / raw)
  To: gcc-bugs

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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2011-12-14
         AssignedTo|unassigned at gcc dot       |jakub at gcc dot gnu.org
                   |gnu.org                     |
     Ever Confirmed|0                           |1

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-12-14 16:39:37 UTC ---
Created attachment 26084
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26084
gcc47-pr51463.patch

Untested fix.  Not very happy about the patch, it is not very nice, but
we decide to parse the initializer as NSDMI resp. normal static initializer
already before grokdeclarator is called, have apparently no access to that
initializer in there and because of the errors decide to clear staticp (and
override storage_class to sc_none).  So something that has been parsed as
static data member initializer is now used as NSDMI.


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

* [Bug c++/51463] [c++0x] [4.7 Regression] ICE declaring a member function virtual and static
  2011-12-08  8:15 [Bug c++/51463] New: [c++0x] [4.7 Regression] ICE declaring a member function virtual and static reichelt at gcc dot gnu.org
  2011-12-08  8:20 ` [Bug c++/51463] " reichelt at gcc dot gnu.org
  2011-12-14 17:05 ` jakub at gcc dot gnu.org
@ 2011-12-15 20:50 ` jakub at gcc dot gnu.org
  2011-12-15 20:55 ` jakub at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: jakub at gcc dot gnu.org @ 2011-12-15 20:50 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-12-15 20:46:01 UTC ---
Author: jakub
Date: Thu Dec 15 20:45:53 2011
New Revision: 182387

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=182387
Log:
    PR c++/51463
    * decl.c (grokdeclarator): Set DECL_INITIAL of decl
    to error_mark_node to disallow NSDMI if declspecs->storage_class
    is sc_static.
    * parser.c (cp_parser_late_parse_one_default_arg): Return early
    if default_arg is error_mark_node.

    * g++.dg/cpp0x/pr51463.C: New test.

Added:
    trunk/gcc/testsuite/g++.dg/cpp0x/pr51463.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/decl.c
    trunk/gcc/cp/parser.c
    trunk/gcc/testsuite/ChangeLog


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

* [Bug c++/51463] [c++0x] [4.7 Regression] ICE declaring a member function virtual and static
  2011-12-08  8:15 [Bug c++/51463] New: [c++0x] [4.7 Regression] ICE declaring a member function virtual and static reichelt at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2011-12-15 20:50 ` jakub at gcc dot gnu.org
@ 2011-12-15 20:55 ` jakub at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: jakub at gcc dot gnu.org @ 2011-12-15 20:55 UTC (permalink / raw)
  To: gcc-bugs

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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-12-15 20:52:15 UTC ---
Fixed.


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

end of thread, other threads:[~2011-12-15 20:53 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-12-08  8:15 [Bug c++/51463] New: [c++0x] [4.7 Regression] ICE declaring a member function virtual and static reichelt at gcc dot gnu.org
2011-12-08  8:20 ` [Bug c++/51463] " reichelt at gcc dot gnu.org
2011-12-14 17:05 ` jakub at gcc dot gnu.org
2011-12-15 20:50 ` jakub at gcc dot gnu.org
2011-12-15 20:55 ` jakub at gcc dot gnu.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).