pt.c (tsubst_aggr_type): Bail if creating the argvec fails.
* pt.c (tsubst_aggr_type): Bail if creating the argvec fails. (tsubst_template_arg_vector): Likewise. * decl2.c (build_anon_union_vars): Choose the largest field; don't assume that one will be as large as the union. From-SVN: r35581
This commit is contained in:
parent
8e32b501b8
commit
08e72a1929
@ -1,3 +1,11 @@
|
|||||||
|
2000-08-08 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
|
* pt.c (tsubst_aggr_type): Bail if creating the argvec fails.
|
||||||
|
(tsubst_template_arg_vector): Likewise.
|
||||||
|
|
||||||
|
* decl2.c (build_anon_union_vars): Choose the largest field; don't
|
||||||
|
assume that one will be as large as the union.
|
||||||
|
|
||||||
2000-08-07 Kazu Hirata <kazu@hxi.com>
|
2000-08-07 Kazu Hirata <kazu@hxi.com>
|
||||||
|
|
||||||
* cp-tree.h (CLASSTYPE_HAS_PRIMARY_BASE_P): Fix a comment typo.
|
* cp-tree.h (CLASSTYPE_HAS_PRIMARY_BASE_P): Fix a comment typo.
|
||||||
|
@ -2190,12 +2190,17 @@ build_anon_union_vars (anon_decl, elems, static_p, external_p)
|
|||||||
DECL_INITIAL (decl) = NULL_TREE;
|
DECL_INITIAL (decl) = NULL_TREE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Only write out one anon union element--choose the one that
|
/* Only write out one anon union element--choose the largest
|
||||||
can hold them all. */
|
one. We used to try to find one the same size as the union,
|
||||||
|
but that fails if the ABI forces us to align the union more
|
||||||
|
strictly. */
|
||||||
if (main_decl == NULL_TREE
|
if (main_decl == NULL_TREE
|
||||||
&& simple_cst_equal (DECL_SIZE (decl),
|
|| tree_int_cst_lt (DECL_SIZE (main_decl), DECL_SIZE (decl)))
|
||||||
DECL_SIZE (anon_decl)) == 1)
|
{
|
||||||
main_decl = decl;
|
if (main_decl)
|
||||||
|
TREE_ASM_WRITTEN (main_decl) = 1;
|
||||||
|
main_decl = decl;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
/* ??? This causes there to be no debug info written out
|
/* ??? This causes there to be no debug info written out
|
||||||
about this decl. */
|
about this decl. */
|
||||||
|
@ -5261,6 +5261,9 @@ tsubst_template_arg_vector (t, args, complain)
|
|||||||
(tsubst_expr (TREE_VEC_ELT (t, i), args, complain,
|
(tsubst_expr (TREE_VEC_ELT (t, i), args, complain,
|
||||||
NULL_TREE));
|
NULL_TREE));
|
||||||
|
|
||||||
|
if (elts[i] == error_mark_node)
|
||||||
|
return error_mark_node;
|
||||||
|
|
||||||
if (elts[i] != TREE_VEC_ELT (t, i))
|
if (elts[i] != TREE_VEC_ELT (t, i))
|
||||||
need_new = 1;
|
need_new = 1;
|
||||||
}
|
}
|
||||||
@ -5380,6 +5383,8 @@ tsubst_aggr_type (t, args, complain, in_decl, entering_scope)
|
|||||||
S we only want {double}. */
|
S we only want {double}. */
|
||||||
argvec = tsubst_template_arg_vector (TYPE_TI_ARGS (t), args,
|
argvec = tsubst_template_arg_vector (TYPE_TI_ARGS (t), args,
|
||||||
complain);
|
complain);
|
||||||
|
if (argvec == error_mark_node)
|
||||||
|
return error_mark_node;
|
||||||
|
|
||||||
r = lookup_template_class (t, argvec, in_decl, context,
|
r = lookup_template_class (t, argvec, in_decl, context,
|
||||||
entering_scope);
|
entering_scope);
|
||||||
|
Loading…
Reference in New Issue
Block a user