From: Nathan Froyd Date: Wed, 16 Jun 2010 18:07:09 +0000 (+0000) Subject: class.c (build_vtbl_initializer): Adjust computation of new_position and which entry... X-Git-Tag: upstream/12.2.0~92284 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=25d8a217d2b437481e45954e4412c29c073ba1c4;p=platform%2Fupstream%2Fgcc.git class.c (build_vtbl_initializer): Adjust computation of new_position and which entry to add padding for. * class.c (build_vtbl_initializer): Adjust computation of new_position and which entry to add padding for. From-SVN: r160856 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8402afd..7456c82 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2010-06-16 Nathan Froyd + + * class.c (build_vtbl_initializer): Adjust computation of new_position + and which entry to add padding for. + 2010-06-16 Jason Merrill * except.c (check_noexcept_r): Return the problematic function. diff --git a/gcc/cp/class.c b/gcc/cp/class.c index 60908ff..f945923 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -7607,14 +7607,15 @@ build_vtbl_initializer (tree binfo, ix--) { int j; - int new_position = TARGET_VTABLE_DATA_ENTRY_DISTANCE * ix; + int new_position = (TARGET_VTABLE_DATA_ENTRY_DISTANCE * ix + + (TARGET_VTABLE_DATA_ENTRY_DISTANCE - 1)); VEC_replace (constructor_elt, vid.inits, new_position, e); for (j = 1; j < TARGET_VTABLE_DATA_ENTRY_DISTANCE; ++j) { - constructor_elt *f = VEC_index (constructor_elt, *inits, - new_position + j); + constructor_elt *f = VEC_index (constructor_elt, vid.inits, + new_position - j); f->index = NULL_TREE; f->value = build1 (NOP_EXPR, vtable_entry_type, null_pointer_node);