tiemann@sun.com (Michael Tiemann) (09/12/89)
The last bugfix I posted for expr.c was *WRONG*. The following diff
undoes it, if you have already installed it. In any event, the fixes
for cplus-init.c do solve the problem.
teacake% diff -c2 expr.c~ expr.c
*** expr.c~ Mon Sep 11 18:06:27 1989
--- expr.c Mon Sep 11 18:05:55 1989
***************
*** 2306,2310 ****
if (RTL_EXPR_SEQUENCE (exp) == const0_rtx)
abort ();
! emit_insn (RTL_EXPR_SEQUENCE (exp));
RTL_EXPR_SEQUENCE (exp) = const0_rtx;
return RTL_EXPR_RTL (exp);
--- 2306,2310 ----
if (RTL_EXPR_SEQUENCE (exp) == const0_rtx)
abort ();
! emit_insns (RTL_EXPR_SEQUENCE (exp));
RTL_EXPR_SEQUENCE (exp) = const0_rtx;
return RTL_EXPR_RTL (exp);
teacake% diff -c2 cplus-init.c~ cplus-init.c
*** cplus-init.c~ Mon Sep 11 10:42:53 1989
--- cplus-init.c Mon Sep 11 18:09:40 1989
***************
*** 1023,1030 ****
CLASSTYPE_AS_LIST (for_type), flags);
/* Private, protected, or otherwise unavailable. */
! if (rval == error_mark_node)
error_with_aggr_type (for_type, "in base initialization for class `%s'");
/* A valid initialization using constructor. */
! else if (rval != NULL_TREE)
{
if (alias_this == 0
--- 1023,1030 ----
CLASSTYPE_AS_LIST (for_type), flags);
/* Private, protected, or otherwise unavailable. */
! if (rval == error_mark_node && protect > 0)
error_with_aggr_type (for_type, "in base initialization for class `%s'");
/* A valid initialization using constructor. */
! else if (rval != error_mark_node && rval != NULL_TREE)
{
if (alias_this == 0
***************
*** 1137,1141 ****
else
{
! error_with_aggr_type (for_type, "invalid initializer to constructor for type `%s'");
return;
}
--- 1137,1142 ----
else
{
! error_with_aggr_type (for_type, "in base initialization for class `%s',");
! error_with_aggr_type (type, "invalid initializer to constructor for type `%s'");
return;
}
***************
*** 1145,1148 ****
--- 1146,1150 ----
if (init == NULL_TREE)
assert (parms == NULL_TREE);
+ error_with_aggr_type (for_type, "in base initialization for class `%s',");
/* This will make an error message for us. */
build_method_call (exp, DECL_NAME (TYPE_NAME (type)), parms,
***************
*** 3188,3194 ****
return build (NOP_EXPR, void_type_node, integer_zero_node);
! rval = build (RTL_EXPR, void_type_node);
! head = start_sequence ();
expand_vec_delete (base, maxindex, elt_size,
dtor_dummy, auto_delete_vec,
--- 3190,3197 ----
return build (NOP_EXPR, void_type_node, integer_zero_node);
! rval = make_node (RTL_EXPR);
! TREE_TYPE (rval) = void_type_node;
! start_sequence ();
expand_vec_delete (base, maxindex, elt_size,
dtor_dummy, auto_delete_vec,
***************
*** 3195,3199 ****
auto_delete);
TREE_VOLATILE (rval) = 1;
! RTL_EXPR_SEQUENCE (rval) = gen_sequence ();
end_sequence ();
return rval;
--- 3198,3203 ----
auto_delete);
TREE_VOLATILE (rval) = 1;
! emit_insn (gen_sequence ());
! RTL_EXPR_SEQUENCE (rval) = get_insns ();
end_sequence ();
return rval;
teacake%
Michael