[PATCH ping] Make CONSTRUCTOR use VEC

Giovanni Bajo rasky@develer.com
Sat Jul 9 16:05:00 GMT 2005


Hello,

Pinging my patch here:
http://gcc.gnu.org/ml/gcc-patches/2005-07/msg00095.html
[C++ and Fortran bits have been already approved]

I have attached an patch updated against today's sources (after DannyB's
DECL patch). I'm retesting it just in case, but I don't foresee any
problems. This patch also incorporates the suggestions made by Nathan
Sidwell.

Giovanni Bajo


2005-07-02  Giovanni Bajo  <giovannibajo@libero.it>

        Make CONSTRUCTOR use VEC to store initializers.
        * c-common.c (complete_array_type): Update to cope with VEC in
        CONSTRUCTOR_ELTS.
        * c-pretty-print.c (pp_c_initializer_list): Use
pp_c_constructor_elts.
        (pp_c_constructor_elts): New function.
        * c-pretty-print.h (pp_c_constructor_elts): Declare.
        * c-typeck.c (build_function_call, build_c_cast, digest_init,
        struct constructor_stack, struct initializer_stack,
        constructor_elements, push_init_level, pop_init_level,
add_pending_init,
        find_init_member, output_init_element): Update to cope with VEC in
        CONSTRUCTOR_ELTS.
        * coverage.c (build_fn_info_value, build_ctr_info_value,
        build_gcov_info): Likewise.
        * expr.c (categorize_ctor_elements_1, store_constructor,
        expand_expr_real_1): Likewise.
        * fold-const.c (fold_ternary): Likewise.
        * gimplify.c (gimplify_init_ctor_preeval, zero_sized_field_decl,
        gimplify_init_constructor, gimplify_expr): Likewise.
        * tree-dump.c (dequeue_and_dump): Likewise.
        * tree-inline.c (copy_tree_r): Add code to duplicate a CONSTRUCTOR
        node.
        * tree-pretty-print.c (dump_generic_node): Update to cope with VEC
in
        CONSTRUCTOR_ELTS.
        * tree-sra.c (generate_element_init_1): Likewise.
        * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
        * tree-ssa-operands.c (get_expr_operands): Likewise.
        * tree-vect-generic.c (expand_vector_piecewise): Likewise.
        * tree-vect-transform.c (vect_get_vec_def_for_operand):
        (get_initial_def_for_reduction): Likewise.
        * tree-vn.c (set_value_handle, get_value_handle): CONSTURCTOR uses
        value handle in annotations.
        * tree.c (tree_node_kind, tree_code_size, make_node_stat,
        tree_node_structure): Add support for constr_kind.
        (build_vector_from_ctor, build_constructor_single,
        build_constructor_from_list): New functions.
        (build_constructor): Update to take a VEC instead of a TREE_LIST.
        (simple_cst_equal, iterative_hash_expr, initializer_zerop,
walk_tree):
        Update to cope with VEC in CONSTRUCTOR_ELTS.
        * tree.def (CONSTRUCTOR): Make it a tcc_exceptional node.
        * tree.h (FOR_EACH_CONSTRUCTOR_VALUE, FOR_EACH_CONSTRUCTOR_ELT,
        CONSTRUCTOR_APPEND_ELT): New macros.
        (struct constructor_elt, struct tree_constructor): New data types.
        (union tree_node): Add tree_constructor field.
        * treestruct.def: Define TS_CONSTRUCTOR.
        * varasm.c (const_hash_1, compare_constant, copy_constant,
        compute_reloc_for_constant, output_addressed_constants,
        initializer_constant_valid_p, output_constant,
        array_size_for_constructor, output_constructor): Update to cope with
        VEC in CONSTRUCTOR_ELTS.
        * vec.h (VEC_empty, VEC_copy): New macros.

ada/
        Make CONSTRUCTOR use VEC to store initializers.
        * decl.c (gnat_to_gnu_entity): Update to cope with VEC in
        CONSTRUCTOR_ELTS.
        * trans.c (extract_values): Likewise.
        * utils.c (convert, remove_conversions): Likewise.
        * utils2.c (contains_save_expr_p, build_binary_op, build_unary_op,
        gnat_build_constructor): Likewise.

cp/
        Make CONSTRUCTOR use VEC to store initializers.
        * call.c (convert_default_arg): Update call to digest_init.
        * class.c (dump_class_hierarchy, dump_array): Update to cope with
VEC
        in CONSTRUCTOR_ELTS.
        * cp-tree.h (EMPTY_CONSTRUCTOR_P): Likewise.
        (finish_compound_literal, digest_init): Update declaration.
        * decl.c (struct reshape_iter): New data type.
        (reshape_init_array): Rename to...
        (reshape_init_array_1): Update to cope with VEC in CONSTRUCTOR_ELTS.
        (reshape_init): Rewrite from scratch. Split parts into...
        (reshape_init_array, reshape_init_vector, reshape_init_class,
        reshape_init_r): New functions.
        (check_initializer): Update call to reshape_init. Remove obsolete
code.
        (initialize_artificial_var, cp_complete_array_type): Update to cope
        with VEC in CONSTRUCTOR_ELTS.
        * decl2.c (grokfield): Update calls to digest_init.
        (mark_vtable_entries): Update to cope with VEC in CONSTRUCTOR_ELTS.
        * error.c (dump_expr_init_vec): New function.
        (dump_expr): Use dump_expr_init_vec.
        * init.c (build_zero_init, build_vec_init): Update to cope with VEC
in
        CONSTRUCTOR_ELTS.
        (expand_default_init): Update call to digest_init.
        * parser.c  (cp_parser_postfix_expression): Use a VEC for the
        initializers.
        (cp_parser_initializer_list): Build a VEC of initializers.
        * pt.c (tsubst_copy, tsubst_copy_and_build): Update to cope with VEC
in
        CONSTRUCTOR_ELTS.
        * rtti.c (tinfo_base_init, generic_initializer, ptr_initializer,
        ptm_initializer, class_initializer, get_pseudo_ti_init): Use
        build_constructor_from_list instead of build_constructor.
        * semantics.c (finish_compound_literal): Update call to digest_init.
        * tree.c (stabilize_init): Update to cope with VEC in
CONSTRUCTOR_ELTS.
        * typeck.c (build_ptrmemfunc1): Likewise.
        * typeck2.c: (cxx_incomplete_type_error, split_nonconstant_init_1):
        Likewise.
        (store_init_value): Use build_constructor_from_list and update call
to
        digest_init.
        (digest_init): Rewrite.
        (process_init_constructor): Rewrite from scratch. Split into...
        (process_init_constructor_array, picflag_from_initializer,
        process_init_constructor_record, process_init_constructor_union):
New
        functions.
        (PICFLAG_ERRONEOUS, PICFLAG_NOT_ALL_CONSTANT,
PICFLAG_NOT_ALL_SIMPLE):
        New macros.
        (build_functional_cast): Use build_constructor_from_list instead of
        build_constructor.


fortran/
        Make CONSTRUCTOR use VEC to store initializers.
        * trans-array.c (gfc_build_null_descriptor,
        gfc_trans_array_constructor_value, gfc_conv_array_initializer):
        Update to cope with VEC in CONSTRUCTOR_ELTS.
        * trans-common.c (create_common): Likewise.
        * trans-expr.c (gfc_conv_structure): Likewise.
        * trans-stmt.c (gfc_trans_character_select): Use
        build_constructor_from_list instead of build_constructor.

java/
        Make CONSTRUCTOR use VEC to store initializers.
        * check-init.c (check_init): Update to cope with VEC in
        CONSTRUCTOR_ELTS.
        * class.c (make_field_value, make_method_value, get_dispatch_table,
        make_class_data, emit_symbol_table, emit_catch_table,
        emit_assertion_table): Use build_constructor_from_list instead of
        build_constructor.
        * constants.c (build_constants_constructor): Likewise.
        * java-gimplify.c (java_gimplify_new_array_init): Update to cope
with
        VEC in CONSTRUCTOR_ELTS.
        * java-tree.h (START_RECORD_CONSTRUCTOR, PUSH_SUPER_VALUE,
        PUSH_FIELD_VALUE, FINISH_RECORD_CONSTRUCTOR): Create a VEC instead
        of a TREE_LIST.
        * jcf-write.c (generate_bytecode_insns): Update to cope with VEC in
        CONSTRUCTOR_ELTS.
        * parse.y (build_new_array_init): Use build_constructor_from_list
        instead of build_constructor.
        (patch_new_array_init): Update to cope with VEC in
        CONSTRUCTOR_ELTS.
        (array_constructor_check_entry): Likewise.

objc/
        Make CONSTRUCTOR use VEC to store initializers.
        * objc-act.c (objc_build_constructor): Use
build_constructor_from_list
        instead of build_constructor.

testsuite/
        Make CONSTRUCTOR use VEC to store initializers.
        * g++.dg/ext/complit3.C: Check for specific error messages.
        * g++.dg/init/brace2.C: Update error message.
        * g++.dg/warn/Wbraces2.C: Likewise.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: patch-constructor-vec.txt.gz
Type: application/x-compressed
Size: 48278 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/java-patches/attachments/20050709/8701fc97/attachment.bin>


More information about the Java-patches mailing list