diff options
author | Jason Merrill <jason@redhat.com> | 2012-11-19 09:05:48 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2012-11-19 09:05:48 -0500 |
commit | 61d1b8214569675bd18c508ac7d75325a0e721c6 (patch) | |
tree | 39543a0767f3425802a7ef1d179a615a71e16d98 /gcc | |
parent | 5aeb734800f9bcf6216458eb39a1efa8b85fea1e (diff) | |
download | gcc-61d1b8214569675bd18c508ac7d75325a0e721c6.zip gcc-61d1b8214569675bd18c508ac7d75325a0e721c6.tar.gz gcc-61d1b8214569675bd18c508ac7d75325a0e721c6.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/method.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/inh-ctor10.C | 2 |
3 files changed, 9 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 6d4ab8b..088959f 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2012-11-19 Jason Merrill <jason@redhat.com> + 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 6458032..6dcb63a 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 de57453..56c5bd6 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 { |