[Bug c++/51884] [C++11] ICE with local class/lambda template argument
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51884 --- Comment #8 from Jason Merrill jason at gcc dot gnu.org 2013-03-08 16:03:57 UTC --- Author: jason Date: Fri Mar 8 16:03:48 2013 New Revision: 196549 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=196549 Log: PR c++/51494 PR c++/51884 PR c++/56222 * tree.c (maybe_dummy_object): Don't capture 'this'. * semantics.c (maybe_resolve_dummy): New. (finish_non_static_data_member): Use it. (finish_qualified_id_expr): Don't test is_dummy_object. * cp-tree.h: Declare maybe_resolve_dummy. * call.c (build_new_method_call_1): Use it. Added: trunk/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this11.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/call.c trunk/gcc/cp/cp-tree.h trunk/gcc/cp/semantics.c trunk/gcc/cp/tree.c
[Bug c++/51884] [C++11] ICE with local class/lambda template argument
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51884 --- Comment #9 from Jason Merrill jason at gcc dot gnu.org 2013-03-08 16:04:30 UTC --- Author: jason Date: Fri Mar 8 16:04:15 2013 New Revision: 196551 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=196551 Log: PR c++/51884 * class.c (modify_all_vtables): Mangle the vtable name before entering dfs_walk. Added: trunk/gcc/testsuite/g++.dg/cpp0x/local-targ1.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/class.c
[Bug c++/51884] [C++11] ICE with local class/lambda template argument
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51884 Jason Merrill jason at gcc dot gnu.org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED AssignedTo|unassigned at gcc dot |jason at gcc dot gnu.org |gnu.org | Target Milestone|--- |4.8.0 --- Comment #10 from Jason Merrill jason at gcc dot gnu.org 2013-03-08 16:09:09 UTC --- Fixed for 4.8.
[Bug c++/51884] [C++11] ICE with local class/lambda template argument
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51884 Jason Merrill jason at gcc dot gnu.org changed: What|Removed |Added Keywords||ice-on-valid-code Summary|lambda with templates |[C++11] ICE with local ||class/lambda template ||argument --- Comment #7 from Jason Merrill jason at gcc dot gnu.org 2013-03-06 14:09:01 UTC --- And reduced again, as much as possible. The ICE is caused by trying to generate the partially-instantiated type of fooint::bar, and thereby looking up testint::value, which uses the (non-reentrant) dfs functions, in order to mangle the name of BC's vtable, which is also done using the dfs functions. templatetypename struct test { static const int value = 0; }; templateint struct enable_if { typedef void type; }; struct A { virtual void f() {} }; templatetypename struct B : A { }; templatetypename, typename = void struct foo; templatetypename T struct fooT,typename enable_iftestT::value::type { template bool void bar() const { struct C { } c; BC b; } }; int main() { fooint f; f.bartrue(); }