[Bug c++/49921] [C++0x] Segfault during compilation, decltype and operator-*

2011-08-06 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49921

Jason Merrill jason at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.6.2

--- Comment #6 from Jason Merrill jason at gcc dot gnu.org 2011-08-06 
22:23:19 UTC ---
Fixed for 4.6.2.


[Bug c++/49921] [C++0x] Segfault during compilation, decltype and operator-*

2011-08-05 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49921

Jason Merrill jason at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 CC||jason at gcc dot gnu.org
 AssignedTo|unassigned at gcc dot   |jason at gcc dot gnu.org
   |gnu.org |


[Bug c++/49921] [C++0x] Segfault during compilation, decltype and operator-*

2011-08-05 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49921

--- Comment #4 from Jason Merrill jason at gcc dot gnu.org 2011-08-06 
04:34:40 UTC ---
Author: jason
Date: Sat Aug  6 04:34:37 2011
New Revision: 177498

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=177498
Log:
PR c++/49921
* semantics.c (finish_decltype_type): Call invalid_nonstatic_memfn_p.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/decltype31.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/semantics.c
trunk/gcc/testsuite/ChangeLog


[Bug c++/49921] [C++0x] Segfault during compilation, decltype and operator-*

2011-08-05 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49921

--- Comment #5 from Jason Merrill jason at gcc dot gnu.org 2011-08-06 
04:38:27 UTC ---
Author: jason
Date: Sat Aug  6 04:38:24 2011
New Revision: 177502

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=177502
Log:
PR c++/49921
* semantics.c (finish_decltype_type): Call invalid_nonstatic_memfn_p.

Added:
branches/gcc-4_6-branch/gcc/testsuite/g++.dg/cpp0x/decltype31.C
Modified:
branches/gcc-4_6-branch/gcc/cp/ChangeLog
branches/gcc-4_6-branch/gcc/cp/semantics.c
branches/gcc-4_6-branch/gcc/testsuite/ChangeLog


[Bug c++/49921] [C++0x] Segfault during compilation, decltype and operator-*

2011-08-01 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49921

--- Comment #3 from Jonathan Wakely redi at gcc dot gnu.org 2011-08-01 
09:51:56 UTC ---
Yes, the standard says:

If the result of .* or -* is a function, then that result can be used only as
the operand for the function call operator ()

So I think G++ should reject decltype((l-*ptr))


[Bug c++/49921] [C++0x] Segfault during compilation, decltype and operator-*

2011-07-31 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49921

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011.07.31 10:38:25
Summary|Segfault during |[C++0x] Segfault during
   |compilation, decltype and   |compilation, decltype and
   |operator-* |operator-*
 Ever Confirmed|0   |1
   Severity|blocker |normal

--- Comment #1 from Paolo Carlini paolo.carlini at oracle dot com 2011-07-31 
10:38:25 UTC ---
Confirmed. Mainline says:

49921.C: In function ‘int main()’:
49921.C:15:25: internal compiler error: tree check: expected record_type or
union_type or qual_union_type, have translation_unit_decl in
maybe_dummy_object, at cp/tree.c:2474


[Bug c++/49921] [C++0x] Segfault during compilation, decltype and operator-*

2011-07-31 Thread fabian.bergmark at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49921

--- Comment #2 from fabian.bergmark at gmail dot com 2011-07-31 10:57:17 UTC ---
(In reply to comment #1)
 Confirmed. Mainline says:
 
 49921.C: In function ‘int main()’:
 49921.C:15:25: internal compiler error: tree check: expected record_type or
 union_type or qual_union_type, have translation_unit_decl in
 maybe_dummy_object, at cp/tree.c:2474

To quote Modern C++ Design by Andrei Alexandrescu:

In C++, where every object has a type, the result of operator-* or operator.*
is a unique exception.

and

Both are binary functions all right, and they return something to which you
can apply the function-call operator immediately, but that something does no
have a type.

Is this possibly the reason to the error?