From: Jason Merrill Date: Mon, 19 Nov 2012 14:05:48 +0000 (-0500) Subject: re PR c++/55262 ([C++0x] g++.dg/cpp0x/inh-ctor10.C ICEs with -g) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=61d1b8214569675bd18c508ac7d75325a0e721c6;p=gcc.git re PR c++/55262 ([C++0x] g++.dg/cpp0x/inh-ctor10.C ICEs with -g) PR c++/55262 * method.c (implicitly_declare_fn): Set DECL_PARM_INDEX on the parms of an inheriting ctor. From-SVN: r193622 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 6d4ab8bedde..088959f7f46 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2012-11-19 Jason Merrill + PR c++/55262 + * method.c (implicitly_declare_fn): Set DECL_PARM_INDEX on + the parms of an inheriting ctor. + PR c++/55261 * class.c (add_implicitly_declared_members): Use lookup_fnfields_slot to get the base constructors. diff --git a/gcc/cp/method.c b/gcc/cp/method.c index 64580324909..6dcb63a185e 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -1663,10 +1663,14 @@ implicitly_declare_fn (special_function_kind kind, tree type, else if (kind == sfk_inheriting_constructor) { tree *p = &DECL_ARGUMENTS (fn); + int index = 1; for (tree parm = inherited_parms; parm != void_list_node; parm = TREE_CHAIN (parm)) { *p = cp_build_parm_decl (NULL_TREE, TREE_VALUE (parm)); + retrofit_lang_decl (*p); + DECL_PARM_LEVEL (*p) = 1; + DECL_PARM_INDEX (*p) = index++; DECL_CONTEXT (*p) = fn; p = &DECL_CHAIN (*p); } diff --git a/gcc/testsuite/g++.dg/cpp0x/inh-ctor10.C b/gcc/testsuite/g++.dg/cpp0x/inh-ctor10.C index de5745358ef..56c5bd6028c 100644 --- a/gcc/testsuite/g++.dg/cpp0x/inh-ctor10.C +++ b/gcc/testsuite/g++.dg/cpp0x/inh-ctor10.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++11" } +// { dg-options "-std=c++11 -g" } struct A {