Commit 091871ea by Jason Merrill Committed by Jason Merrill

* semantics.c (sort_constexpr_mem_initializers): Tweak.

From-SVN: r191139
parent d75171f3
2012-09-07 Jason Merrill <jason@redhat.com>
* semantics.c (sort_constexpr_mem_initializers): Tweak.
2012-09-09 Mark Kettenis <kettenis@openbsd.org> 2012-09-09 Mark Kettenis <kettenis@openbsd.org>
* decl.c (reshape_init_class): Avoid dereferencing a * decl.c (reshape_init_class): Avoid dereferencing a
......
...@@ -5903,24 +5903,26 @@ check_constexpr_ctor_body (tree last, tree list) ...@@ -5903,24 +5903,26 @@ check_constexpr_ctor_body (tree last, tree list)
static VEC(constructor_elt,gc) * static VEC(constructor_elt,gc) *
sort_constexpr_mem_initializers (tree type, VEC(constructor_elt,gc) *vec) sort_constexpr_mem_initializers (tree type, VEC(constructor_elt,gc) *vec)
{ {
if (!CLASSTYPE_HAS_PRIMARY_BASE_P (type) tree pri = CLASSTYPE_PRIMARY_BINFO (type);
|| (CLASSTYPE_PRIMARY_BINFO (type) constructor_elt elt;
== BINFO_BASE_BINFO (TYPE_BINFO (type), 0))) int i;
if (pri == NULL_TREE
|| pri == BINFO_BASE_BINFO (TYPE_BINFO (type), 0))
return vec; return vec;
/* Find the element for the primary base and move it to the beginning of /* Find the element for the primary base and move it to the beginning of
the vec. */ the vec. */
tree pri = BINFO_TYPE (CLASSTYPE_PRIMARY_BINFO (type));
VEC(constructor_elt,gc) &v = *vec; VEC(constructor_elt,gc) &v = *vec;
int pri_idx; pri = BINFO_TYPE (pri);
for (i = 1; ; ++i)
for (pri_idx = 1; ; ++pri_idx) if (TREE_TYPE (v[i].index) == pri)
if (TREE_TYPE (v[pri_idx].index) == pri)
break; break;
constructor_elt pri_elt = v[pri_idx];
for (int i = 0; i < pri_idx; ++i) elt = v[i];
v[i+1] = v[i]; for (; i > 0; --i)
v[0] = pri_elt; v[i] = v[i-1];
v[0] = elt;
return vec; return vec;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment