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