1. 09 Nov, 2005 1 commit
    • re PR other/4372 (#pragma weak pthread* inclusion causes applications to crash… · a0203ca7
      re PR other/4372 (#pragma weak pthread* inclusion causes applications to crash without a linker error when one forgets to link with -lpthread)
      
      PR other/4372
      * tree.h (IDENTIFIER_TRANSPARENT_ALIAS): New.
      (TREE_DEPRECATED): Adjust comment.  Check for a DECL.
      * c-common.c (handle_weakref_attribute): New.
      (c_common_attribute_table): Add weakref.
      * configure.ac (HAVE_GAS_WEAKREF): Check for weakref support
      in the assembler.
      * configure, config.in: Rebuilt.
      * defaults.h (ASM_OUTPUT_WEAKREF): Define if HAVE_GAS_WEAKREF.
      * doc/extend.texi: Document weakref attribute.
      * varasm.c (ultimate_transparent_alias_target): New
      (assemble_name): Use it.
      (weak_finish_1): Split out of...
      (weak_finish): ... and deal with weakrefs in...
      (weakref_targets): ... new list.
      (globalize_decl): Clean up weakref_targets.
      (do_assemble_alias): Handle weakrefs.
      (finish_aliases_1): Do not reject weakrefs to external symbols.
      (assemble_alias): Handle weakrefs.
      
      From-SVN: r106703
      Alexandre Oliva committed
  2. 08 Nov, 2005 1 commit
  3. 03 Nov, 2005 1 commit
    • re PR target/9350 (-fomit-frame-pointer does not work for main) · 150cdc9e
              PR target/9350
              PR target/24374
              * dwarf2out.c (dwarf2out_reg_save_reg): New.
              (dwarf2out_frame_debug_expr): Return after dwarf_handle_frame_unspec.
              * function.c (assign_parms): Use calls.internal_arg_pointer.
              (expand_main_function): Remove FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN
              code.
              * target-def.h (TARGET_INTERNAL_ARG_POINTER): New.
              (TARGET_CALLS): Add it.
              * target.h (struct gcc_target): Add calls.internal_arg_pointer.
              * targhooks.c (default_internal_arg_pointer): New.
              * targhooks.h (default_internal_arg_pointer): Declare.
              * tree.h (dwarf2out_reg_save_reg): Declare.
              * doc/tm.texi (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Remove.
              * config/i386/i386.c (dbx_register_map): Add return column.
              (dbx64_register_map, svr4_dbx_register_map): Likewise.
              (TARGET_INTERNAL_ARG_POINTER, ix86_internal_arg_pointer): New.
              (TARGET_DWARF_HANDLE_FRAME_UNSPEC, ix86_dwarf_handle_frame_unspec): New.        (ix86_function_ok_for_sibcall): Disable if force_align_arg_pointer.
              (ix86_save_reg): Save force_align_arg_pointer.
              (ix86_emit_save_regs): Make regno unsigned.
              (ix86_emit_save_regs_using_mov): Likewise.
              (ix86_expand_prologue): Handle force_align_arg_pointer.
              (ix86_expand_epilogue): Likewise.
              * config/i386/i386.h: (dbx_register_map): Update.
              (dbx64_register_map, svr4_dbx_register_map): Update.
              (struct machine_function): Add force_align_arg_pointer.
              * config/i386/i386.md (UNSPEC_REG_SAVE, UNSPEC_DEF_CFA): New.
              (UNSPEC_TP, UNSPEC_TLS_GD, UNSPEC_TLS_LD_BASE): Renumber.
              (TARGET_PUSH_MEMORY peepholes): Disable if RTX_FRAME_RELATED_P.
      
      From-SVN: r106420
      Richard Henderson committed
  4. 12 Oct, 2005 2 commits
    • re PR c/24255 (__transparent_union__ mishandled) · 52dd234b
              PR c/24255
              * tree.h (DECL_TRANSPARENT_UNION): Remove.
              * function.c (assign_parm_find_data_types): Don't support it.
              * print-tree.c (print_node): Likewise.
              * c-common.c (handle_transparent_union_attribute): Likewise.
              Use build_duplicate_type.
              * tree-inline.c (remap_type_1): Split out of remap_type;
              properly remap aggregate fields.
              (build_duplicate_type): New.
              * doc/extend.texi (Variable Attributes): Remove documentation
              for transparent_union.
      
      From-SVN: r105338
      Richard Henderson committed
    • re PR target/21275 (gcc 4.0.0 crash with mingw when using stdout in global var) · 43d9ad1d
      	PR middle-end/21275
      	PR middle-end/21766
      	* target.h (struct gcc_target): Add valid_dllimport_attribute_p
      	target hook.
      	(struct cxx): Add adjust_class_at_definition target hook.
      	* target-def.h: (TARGET_VALID_DLLIMPORT_ATTRIBUTE_P): New define,
      	defaulting to hook_bool_tree_true. Add to TARGET_INITIALIZER
      	(TARGET_CXX_ADJUST_CLASS_AT_DEFINITION): New define, defaulting to
      	hook_void_tree. Add to TARGET_CXX.
      	* tree.h (struct decl_with_vis): Rename non_addr_const_p field to
      	dllimport_flag.
      	(DECL_NON_ADDR_CONSTANT_P): Replace with DECL_DLLIMPORT_P macro.
      	* tree.c (merge_dllimport_decl_attributes): Check DECL_DLLIMPORT_P
      	instead of attribute. Check for dllexport override.  Warn if
      	inconsistent dll linkage. Don't lose old dllimport if decl has
      	had address referenced.   Tweak lookup of dllimport atribute.
      	(handle_dll_attribute): Check targetm.valid_dllimport_attribute_p
      	for target specific rules.  Don't add dllimport attribute if
      	DECL_DECLARED_INLINE_P.  Set DECL_DLLIMPORT_P when adding
      	dllimport attribute.
      	(staticp): Replace DECL_NON_ADDR_CONSTANT_P with DECL_DLLIMPORT_P.
      	* varasm.c (initializer_constant_valid_p): Replace
      	DECL_NON_ADDR_CONSTANT_P with DECL_DLLIMPORT_P
      
      	PR target/21801
      	PR target/23589
      	* config.gcc (i[34567]86-*-cygwin*): Add winnt-cxx.o to
      	'cxx_target_objs', winnt-stubs,o to 'extra_objs'.
      	(i[34567]86-*-mingw32*): Likewise.
      
      	* doc/tm.texi (TARGET_CXX_ADJUST_CLASS_AT_DEFINITION): Document.
      	(TARGET_VALID_DLLIMPORT_ATTRIBUTE_P): Document.
      
      	* config/i386/winnt.c (i386_pe_dllimport_p): Factor out
      	C++-specific code. Change return value to bool.
      	(i386_pe_dllimport_p): Likewise.
      	(associated_type): Simplify and make language-independent
      	(i386_pe_encode_section_info): Replace override of ambiguous
      	dllimport symbol refs with a gcc_assert.
      	(i386_pe_valid_dllimport_attribute_p): Define.
      	* config/i386/winnt-cxx.c: New file. Define C++ versions of
      	i386_pe_type_dllimport_p, i386_pe_type_dllexport_p,
      	i386_pe_adjust_class_at_definition.
      	* config/i386/winnt-stubs.c: New file. Define stub versions of
      	lang-specific functions.
      	* config/i386/i386-protos.h: Declare winnt-[cxx|stubs].c functions
      	i386_pe_type_dllimport_p, i386_pe_type_dllexport_p,
      	i386_pe_adjust_class_at_definition.
      	(i386_pe_valid_dllimport_attribute_p): Declare.
      	* config/i386/cygming.h (TARGET_VALID_DLLIMPORT_ATTRIBUTE_P): Define.
      	(TARGET_CXX_ADJUST_CLASS_AT_DEFINITION): Define.
      	* config/i386/t-cygming: Add rules for winnt-cxx.o, winnt-stubs.o.
      
      	PR target/19704
      	* config/i386/i386.c (ix86_function_ok_for_sibcall): Replace test for
      	dllimport attribute with test of DECL_DLLIMPORT_P.
      
      
      cp
      	PR target/21801
      	PR target/23589
      	* class.c (finish_struct_1): Call
      	targetm.cxx.adjust_class_at_definition.
      
      
      testsuite
      	* gcc.dg/dll-2.c: Add tests for warnings.
      	* gcc.dg/dll-3.c: Likewise.
      	* gcc.dg/dll-4.c: Likewise.
      
      	* g++.dg/ext/dllimport1.C: Adjust tests for warnings.
      	* g++.dg/ext/dllimport2.C: Likewise.
      	* g++.dg/ext/dllimport3.C: Likewise.
      	* g++.dg/ext/dllimport7.C: Likewise.
      	* g++.dg/ext/dllimport8.C: Likewise.
      	* g++.dg/ext/dllimport9.C: Likewise.
      
      From-SVN: r105332
      Danny Smith committed
  5. 03 Oct, 2005 1 commit
    • gimplify.c (find_single_pointer_decl_1): New static function. · 0b494699
      	* gimplify.c (find_single_pointer_decl_1): New static function.
      	(find_single_pointer_decl): New static function.
      	(internal_get_tmp_var): For a formal variable, set restrict base
      	information if appropriate.
      	* alias.c (find_base_decl): If a VAR_DECL has a restrict base,
      	return it.
      	* tree.h (DECL_BASED_ON_RESTRICT_P): Define.
      	(DECL_GET_RESTRICT_BASE): Define.
      	(SET_DECL_RESTRICT_BASE): Define.
      	(decl_restrict_base_lookup): Declare.
      	(decl_restrict_base_insert): Declare.
      	(struct tree_decl_with_vis): Add based_on_restrict_p field.
      	* tree.c (restrict_base_for_decl): New static variable.
      	(init_ttree): Initialize restrict_base_for_decl.
      	(copy_node_stat): Copy restrict base information.
      	(decl_restrict_base_lookup): New function.
      	(decl_restrict_base_insert): New function.
      	(print_restrict_base_statistics): New static function.
      	(dump_tree_statistics): Call print_restrict_base_statistics.
      
      From-SVN: r104890
      Ian Lance Taylor committed
  6. 19 Sep, 2005 1 commit
  7. 07 Sep, 2005 1 commit
    • function.c (ARG_POINTER_CFA_OFFSET): Move ... · 30e6f306
              * function.c (ARG_POINTER_CFA_OFFSET): Move ...
              * defaults.h (ARG_POINTER_CFA_OFFSET): ... here.
              (INCOMING_FRAME_SP_OFFSET): Move from dwarf2out.c.
              * dwarf2out.c (struct cfa_loc): Change reg to unsigned int,
              rearrange for better packing.
              (INCOMING_FRAME_SP_OFFSET): Move to defaults.h.
              (lookup_cfa_1): Remove inline marker.
              (cfa_equal_p): Split out of ...
              (def_cfa_1): ... here.  Use INVALID_REGNUM.
              (build_cfa_loc): Handle !cfa->indirect.
              (frame_pointer_cfa_offset): New.
              (dbx_reg_number): Assert register elimination performed; do
              leaf register remapping.
              (reg_loc_descriptor): Avoid calling dbx_reg_number when unused.
              (eliminate_reg_to_offset): New.
              (based_loc_descr): Remove can_use_fbreg argument.  Use fbreg only
              for verifiably local stack frame addresses; re-base to CFA.
              (mem_loc_descriptor): Remove can_use_fbreg argument.
              (concat_loc_descriptor, loc_descriptor): Likewise.
              (containing_function_has_frame_base): Remove.
              (rtl_for_decl_location): Don't do register elimination or
              leaf register remapping here.
              (secname_for_decl): Split out from ..
              (add_location_or_const_value_attribute): ... here.
              (convert_cfa_to_loc_list): New.
              (compute_frame_pointer_to_cfa_displacement): New.
              (gen_subprogram_die): Use them.
              * tree.h (frame_base_decl): Remove.
              * var-tracking.c (frame_base_decl, frame_stack_adjust): Remove.
              (prologue_stack_adjust): Remove.
              (vt_stack_adjustments): Use INCOMING_FRAME_SP_OFFSET.
              (adjust_stack_reference): Re-base memories to arg_pointer_rtx.
              (set_frame_base_location): Remove.
              (compute_bb_dataflow, emit_notes_in_bb): Don't call it.
              (dump_attrs_list, dump_dataflow_set): Use string concatenation.
              (vt_add_function_parameters): Don't eliminate_regs.
              (vt_initialize): Don't create frame_base_decl.
      
      From-SVN: r103983
      Richard Henderson committed
  8. 23 Aug, 2005 1 commit
    • re PR middle-end/22043 (Fields not initialized for automatic structs with flexible array members) · 73ed17ff
      	PR tree-optimization/22043
      	* tree.h (count_type_elements): Add ALLOW_FLEXARR argument.
      	* expr.c (count_type_elements): Add ALLOW_FLEXARR argument.
      	If ALLOW_FLEXARR, handle types ending with flexible array member.
      	Pass false as second argument to recursive count_type_elements calls.
      	(categorize_ctor_elements_1, mostly_zeros_p): Pass false as second
      	argument to count_type_elements call.
      	* tree-sra.c (decide_block_copy): Likewise.
      	* gimplify.c (gimplify_init_constructor): If num_type_elements < 0
      	for a constant-sized object, set cleared as well.  Pass true as
      	second argument to count_type_elements call.
      
      	* gcc.c-torture/execute/20050613-1.c: New test.
      
      From-SVN: r103389
      Jakub Jelinek committed
  9. 17 Aug, 2005 1 commit
    • c-typeck.c (build_function_call): Call fold_buildN_initializer or fold_buildN… · 00d1b1d6
      c-typeck.c (build_function_call): Call fold_buildN_initializer or fold_buildN instead of buildN then...
      
      2005-08-16  James A. Morrison  <phython@gcc.gnu.org>
      
              * c-typeck.c (build_function_call): Call fold_buildN_initializer or
              fold_buildN instead of buildN then fold_initializer or fold.
              (build_unary_op): Likewise.
              (build_binary_op): Likewise.
              * fold-const.c (fold_initializer): Remove.
              (fold_build1_initializer): New function.
              (fold_build2_initializer): New function.
              (fold_build3_initializer): New function.
              * tree.h (fold_initializer): Remove.
              (fold_build1_initializer): New function.
              (fold_build2_initializer): New function.
              (fold_build3_initializer): New function.
      
      From-SVN: r103201
      James A. Morrison committed
  10. 04 Aug, 2005 2 commits
    • tree.h (fold_build1): Change to macro and call fold_build1_stat. · 5808968e
      2005-08-04  Andrew Pinski  <pinskia@physics.uc.edu>
      
              * tree.h (fold_build1): Change to macro and call fold_build1_stat.
              (fold_build2): Likewise.
              (fold_build3): Likewise.
              (fold_build1_stat): New function prototype.
              (fold_build2_stat): Likewise.
              (fold_build3_stat): Likewise.
              * fold-const.c (fold_build1): Rename to ..
              (fold_build1_stat): this.  Add MEM_STAT_DECL.  Pass the mem stats
              through to build1_stat.
              (fold_build2): Rename to ..
              (fold_build2_stat): this.  Add MEM_STAT_DECL.  Pass the mem stats
              through to build2_stat.
              (fold_build3): Rename to ..
              (fold_build3_stat): this.  Add MEM_STAT_DECL.  Pass the mem stats
              through to build3_stat.
      
      From-SVN: r102743
      Andrew Pinski committed
    • re PR middle-end/23221 (-fstack-protector does not protect tail call functions) · b755446c
              PR 23221
              * function.c (stack_protect_epilogue): Export.
              * tree.h (stack_protect_epilogue): Declare.
              * calls.c (expand_call): Call it.
      
      From-SVN: r102731
      Richard Henderson committed
  11. 26 Jul, 2005 1 commit
    • Better debug info for inlined functions. · 3e2844cb
      * dwarf2out.c (add_call_src_coords_attributes): New.
      (gen_inlined_subroutine_die): Call it.
      (maybe_emit_file, init_file_table): Add comments.
      (prune_unused_types_walk_attribs): Pass DW_AT_call_file through
      maybe_emit_file.
      * tree-inline.c (remap_block): Copy BLOCK_SOURCE_LOCATION.
      (expand_call_inline): Set BLOCK_SOURCE_LOCATION.
      * tree.h (BLOCK_SOURCE_LOCATION): New.
      (struct tree_block): New field locus.
      
      From-SVN: r102379
      James E Wilson committed
  12. 25 Jul, 2005 1 commit
    • expr.c (highest_pow2_factor): Make extern. · 86a07404
              * expr.c (highest_pow2_factor): Make extern.
              * tree-data-ref.c (ptr_decl_may_alias_p): New function.
              (ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
              record_array_differ_p, array_ptr_differ_p): Likewise.
              (base_object_differ_p): Rename (from array_base_name_differ_p). Support
              additional cases. Call the above functions.
              (base_addr_differ_p): Moved from tree-vect-analyze.c. Call
              base_object_differ_p when there are two base objects. Otherwise, compare
              base address and offset. Call may_alias_p.
              (dump_data_reference): Use a correct field name.
              (analyze_array): Make static. Initialize new data-ref fields.
              (analyze_indirect_ref): New function.
              (init_data_ref): Initialize new data-ref fields.
              (strip_conversion): Moved from tree-vect-analyze.c.
              (analyze_offset_expr, get_ptr_offset, address_analysis, object_analysis):
              Likewise.
              (analyze_offset): New function.
              (create_data_ref): Likewise.
              (initialize_data_dependence_relation): Call base_addr_differ_p. Compare
              dimensions for ARRAY_REFs only.
              (build_classic_dist_vector): Make static.
              (access_functions_are_affine_or_constant_p): Call macro to get the
              address of access functions.
              (compute_all_dependences): Add new parameter
              compute_self_and_read_read_dependences. Compute self and read-read
              dependences if it is true.
              (find_data_references_in_loop): Call create_data_ref. Initialize new
              data-ref fields.
              (compute_data_dependences_for_loop): Add new parameter
              compute_self_and_read_read_dependences. Remove parameter nb_loops,
              compute nb_loops. Call compute_all_dependences, build_classic_dist_vector
              and build_classic_dir_vector with correct parameters.
              (analyze_all_data_dependences): Call compute_data_dependences_for_loop with
              correct parameters. Compare dimensions for ARRAY_REFs only.
              (free_data_refs): Call macro to free access functions.
              * tree-data-ref.h (struct first_location_in_loop): New structure. Move
              fields from stmt_vinfo.
              (struct base_object_info): New structure.
              (struct data_reference): Move fields to base_object_info. Add fields
              first_location and object_info for above structures. Move fields from
              stmt_info: memtag, ptr_info, subvars, misalignment. Add new field aligned_to.
              Add macros to access the new fields.
              Update functions declarations.
              * tree-flow.h (is_aliased_with): Declare.
              * tree-loop-linear.c (linear_transform_loops): Call
              compute_data_dependences_for_loop with correct parameters.
              * tree-ssa-alias.c (is_aliased_with): New function.
              * tree-vect-analyze.c (vect_get_ptr_offset): Remove.
              (vect_analyze_offset_expr, vect_base_addr_differ_p): Likewise.
              (vect_analyze_data_ref_dependence): Get ddr. Remove call to
              vect_base_addr_differ_p, compute_subscript_distance and
              build_classic_dist_vector. Add printings. Check absolute value of
              distance.
              (vect_analyze_data_ref_dependences): Go through ddrs instead of data-refs.
              (vect_compute_data_ref_alignment): Get the fields of data-ref instead of
              stmt. Check aligned_to. Check if the base is aligned. Remove conversion
              to bytes. Add printing.
              (vect_compute_data_refs_alignment): Go through loads and stores in one loop.
              (vect_enhance_data_refs_alignment, vect_analyze_data_refs_alignment,
              vect_analyze_data_ref_access): Likewise.
              (vect_analyze_pointer_ref_access): Remove.
              (vect_address_analysis, vect_object_analysis): Likewise.
              (vect_analyze_data_refs): Call compute_data_dependences_for_loop to find
              and analyze data-refs in the loop.
              * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): Get the
              fields of data-ref instead of stmt. Add init to the offset from the base.
              (vect_create_data_ref_ptr): Get the fields of data-ref instead of stmt.
              (vect_update_init_of_dr): Likewise.
              (vect_update_inits_of_drs): Go through loads and stores in one loop.
              * tree-vectorizer.c (new_stmt_vec_info): Remove initialization of removed
              fields.
              (new_loop_vec_info): Initialize new fields.
              (destroy_loop_vec_info): Free new fields.
              (vect_strip_conversion): Remove.
              * tree-vectorizer.h (enum verbosity_levels): Add new verbosity level.
              (struct _loop_vec_info): Unify data_ref_writes and data_ref_reads into
              datarefs. Add new field ddrs.
              Add macros for the new fields access.
              (struct _stmt_vec_info): Remove: base_address, initial_offset, step,
              base_aligned_p, misalignment, memtag, ptr_info and subvars.
              Remove their macros.
              * tree.h (highest_pow2_factor): Declare.
      
      From-SVN: r102356
      Ira Rosen committed
  13. 20 Jul, 2005 2 commits
    • tree.h (tree_expr_nonzero_p): Export. · 4db8040c
      2005-07-20  James A. Morrison  <phython@gcc.gnu.org>
      
              * tree.h (tree_expr_nonzero_p): Export.
              * fold-const.c (tree_expr_nonzero_p): Likewise.
              Return true for CALL_EXPRs that are alloca calls.
              (fold_binary): Use omit_one_operand when checking EQ_EXPRs or NE_EXPRs
              against zero.
              * tree-flow.h (expr_computes_nonzero): Remove.
              * tree-vrp.c (expr_computes_nonzero): Remove.
              (vrp_expr_computes_nonzero): Use tree_expr_nonzero_p.
              (extract_range_from_unary_expr): Likewise.
              * tree-ssa-dom.c (record_equivalences_from_stmt): Use
              tree_expr_nonzero_p.
      
      From-SVN: r102201
      James A. Morrison committed
    • Make CONSTRUCTOR use VEC to store initializers. · 4038c495
      	* 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.
      
      From-SVN: r102182
      Giovanni Bajo committed
  14. 11 Jul, 2005 1 commit
  15. 08 Jul, 2005 1 commit
    • Makefile.in (TREE_H): Add treestruct.def. · 820cc88f
      2005-07-08  Daniel Berlin  <dberlin@dberlin.org>
      
      	* Makefile.in (TREE_H): Add treestruct.def.
      	(c-decl.o): Add pointer-set.h
      	* c-decl.c (diagnose_mismatched_decls): Don't attempt to look at
      	visibility on regular DECL's.
      	(merge_decls): Fix the copying of decl nodes of various types for
      	the new structures.  Don't update RTL, section name, weak status,
      	etc, on DECL's without RTL.
      	(grokdeclarator): DECL_ARG_TYPE_AS_WRITTEN is gone.
      	Don't check volatile on non-variable types.
      	(store_parm_decls_oldstyle): Use pointer_set instead of DECL_WEAK
      	to check whether we have seen arguments.
      	* c-objc-common.c (c_tree_printer): Reverse order of tests so that
      	flag is checked before field (flag is common, field is not).
      	* dwarf2out.c (decl_ultimate_origin):  Only DECL's with
      	TS_DECL_COMMON could have an origin.
      	(add_location_or_const_value_attribute): Don't check section name
      	on non-var/function decls.
      	(dwarf2out_var_location): Reverse order of tests.
      	* emit-rtl.c (set_reg_attrs_for_parm): DECL_CHECK is dead, replace
      	with DECL_WRTL_CHECK.
      	* expmed.c (make_tree): rtl is now in decl_with_rtl.
      	* fold-const.c (fold_binary): Don't check weakness on
      	non-var/function decls.
      	(tree_expr_nonzero_p): Ditto.
      	(fold_checksum_tree): Use tree_decl_extra as sizeof
      	buffer.
      	* ggc-page.c (extra_order_size_table): Add sizes for
      	tree_decl_non_common, tree_parm_decl,  tree_var_decl, and
      	tree_field_decl.
      	* gimplify.c (gimplify_bind_expr): Only set
      	DECL_SEEN_IN_BIND_EXPR_P on VAR_DECL.
      	* integrate.c (copy_decl_for_inlining): Don't set RTL on decl's
      	without RTL.
      	* langhooks-def.h (LANG_HOOK_INIT_TS): New.
      	* langhooks.h (init_ts). New langhook.
      	* passes.c (rest_of_decl_compilation): Reverse order of tests.
      	* print-tree.c (print_node): Update to only print fields that
      	exist in the structures the passed decl has.
      	* toplev.c (wrapup_global_declarations): Don't reset
      	DECL_DEFER_OUTPUT on DECL's that don't contain it.
      	* tree-browser.c (browse_tree): DECL_ARG_TYPE_AS_WRITTEN removed.
      	* tree-inline.c (remap_decl): Ditto.
      	* tree-outof-ssa.c (create_temp): Reverse order of tests.
      	* tree-pretty-print.c (print_declaration): Don't print
      	DECL_REGISTER on things that don't contain it.
      	* tree-vrp.c (expr_computes_nonzero): Don't check weakness on
      	non-var/function decls.
      	* tree.c (tree_contains_struct): New structure.
      	(init_priority_for_decl): New hashtable.
      	(tree_int_map): New structure.
      	(tree_int_map_eq): New function.
      	(tree_int_map_marked_p): Ditto.
      	(tree_int_map_hash): Ditto.
      	(tree_map): Move to tree.h.
      	(tree_map_eq): Externalize.
      	(tree_map_hash): Ditto.
      	(tree_map_marked_p): Ditto.
      	(init_ttree): Set up tree_contains_struct and call langhook.
      	(decl_assembler_name): Use DECL_NON_COMMON_CHECK..
      	(tree_code_size): Update for new structures.
      	(tree_node_structure): Update for new structures.
      	(make_node_stat): Don't try to set DECL_IN_SYSTEM_HEADER on decls
      	without the field.
      	(copy_node_stat):  Copy init priority.
      	(build_decl_stat): Ditto for visibility.
      	(ts_enum_names): New.
      	(tree_contains_struct_check_failed): New function.
      	(decl_init_priority_lookup): Ditto.
      	(decl_init_priority_insert): Ditto.
      	* treestruct.def: New file.
      	* tree.h (CODE_CONTAINS_STRUCT): New macro.
      	(CONTAINS_STRUCT_CHECK): Ditto.
      	(tree_contains_struct_check_failed): New prototype.
      	(DECL_CHECK): Removed.
      	(DECL_MINIMAL_CHECK): New.
      	(DECL_COMMON_CHECK): Ditto.
      	(DECL_WRTL_CHECK): Ditto.
      	(DECL_NON_COMMON_CHECK): Ditto.
      	(DECL_WITH_VIS_CHECK): Ditto.
      	(VAR_OR_FUNCTION_DECL_P): Ditto
      	(struct tree_decl_minimal): New structure.
      	(struct tree_decl_common): Ditto.
      	(struct tree_decl_with_rtl): Ditto.
      	(struct tree_decl_with_vis): Ditto.
      	(struct tree_decl_non_common): Ditto.
      	(struct tree_field_decl): Ditto.
      	(struct tree_parm_decl): Ditto.
      	(struct tree_var_decl): Ditto.
      	(struct tree_function_decl): Ditto.
      	(struct tree_const_decl): Ditto.
      	(struct tree_result_decl): Ditto.
      	(union tree_node): Add new structures.
      	* var-tracking.c (track_expr_p): Reverse order of tests.
      
      	* doc/c-tree.texi: Add documentation on DECL node internal structure.
      
      
      2005-07-08  Daniel Berlin  <dberlin@dberlin.org>
      
      	* utils.c (create_param_decl): DECL_ARG_TYPE_AS_WRITTEN is
      	removed.
      
      2005-07-08  Daniel Berlin  <dberlin@dberlin.org>
      
      	* Make-lang.in: Add gt-cp-lang.h.
      	(cp-lang.o): Ditto.
      	* class.c (create_vtable_ptr): Stop setting DECL_ASSEMBLER_NAME on
      	the field.
      	* config-lang.in: Add cp-lang.c to gtfiles.
      	* cp-lang.c: Include hashtab.h.
      	(cp_init_ts): New function.
      	(LANG_HOOK_INIT_TS): Use macro.
      	(decl_shadowed_for_var_lookup): New function.
      	(decl_shadowed_for_var_insert): Ditto.
      	* cp-tree.h (THUNK_FUNCTION_CHECK): Use decl_common.
      	(NON_THUNK_FUNCTION_CHECK): Ditto.
      	(DECL_NAMESPACE_ASSOCIATIONS): Use decl_non_common.
      	(DECL_INIT_PRIORITY): Ditto.
      	(DECL_HAS_SHADOWED_FOR_VAR_P): Ditto.
      	(DECL_SHADOWED_FOR_VAR): Use hashtable.
      	(SET_DECL_SHADOWED_FOR_VAR): Ditto.
      	* decl.c (duplicate_decls): Update for new/updated structures.
      	(poplevel): Use SET_DECL_SHADOWED_FOR_VAR.
      	* decl2.c (start_static_initialization_or_destruction): Deal with
      	priority.
      	* pt.c (tsubst_decl): Check TS_DECL_WRTL before doing
      	SET_DECL_RTL.
      	* tree.c (handle_init_priority_attribute): Handle priority.
      
      2005-07-08  Daniel Berlin  <dberlin@dberlin.org>
      
      	* objc-act.c (objc_push_parm): DECL_ARG_TYPE_AS_WRITTEN is
      	removed.
      	* objc-act.h (KEYWORD_ARG_NAME): Use decl_non_common.
      	(KEYWORD_KEY_NAME): Use decl_minimal.
      	(METHOD_SEL_NAME): Ditto..
      	(METHOD_SEL_ARGS): Use decl_non_common.
      	(METHOD_ADD_ARGS): Ditto.
      	(METHOD_ADD_ARGS_ELLIPSIS_P): Use decl_common.
      	(METHOD_DEFINITION): Ditto.
      	(METHOD_ENCODING): Ditto.
      	* objc-lang.c: (objc_init_ts): New function.
      
      2005-07-08  Daniel Berlin  <dberlin@dberlin.org>
      
      	* trans-decl.c (create_function_arglist): DECL_ARG_TYPE_AS_WRITTEN
      	is removed.
      
      From-SVN: r101799
      Daniel Berlin committed
  16. 05 Jul, 2005 1 commit
    • Makefile.in: Adjust dependencies. · ef330312
      2005-07-05  Paolo Bonzini  <bonzini@gnu.org>
      
      	* Makefile.in: Adjust dependencies.
      	* tree-pass.h: Add new passes and passes formerly in tree-optimize.c.
      	* basic-block.h (duplicate_computed_gotos): Remove, it is now static.
      	* alias.c (rest_of_handle_cfg, pass_cfg): New.
      	* bb-reorder.c (duplicate_computed_gotos): Make it static.
      	* cfgexpand.c (tree_expand_cfg): Add code formerly at the beginning of
      	rest_of_compilation.
      
      	* bb-reorder.c (gate_duplicate_computed_gotos,
      	pass_duplicate_computed_gotos, gate_handle_reorder_blocks,
      	rest_of_handle_reorder_blocks, pass_reorder_blocks,
      	gate_handle_partition_blocks, rest_of_handle_partition_blocks,
      	pass_partition_blocks): New.
      	* bt-load.c (gate_handle_branch_target_load_optimize,
      	rest_of_handle_branch_target_load_optimize,
      	pass_branch_target_load_optimize): New.
      	* cfgcleanup.c (rest_of_handle_jump, pass_jump, rest_of_handle_jump2,
      	pass_jump2): New.
      	* cfglayout.c (pass_insn_locators_initialize): New.
      	* cfgrtl.c (pass_free_cfg): New.
      	* combine.c (gate_handle_combine, rest_of_handle_combine,
      	pass_combine): New.
      	* cse.c (gate_handle_cse, rest_of_handle_cse, pass_cse,
      	gate_handle_cse2, rest_of_handle_cse2, pass_cse2): New.
      	* emit-rtl.c (pass_unshare_all_rtl, pass_remove_unnecessary_notes): New.
      	* except.c (pass_set_nothrow_function_flags,
      	pass_convert_to_eh_region_ranges, gate_handle_eh, rest_of_handle_eh,
      	pass_rtl_eh): New.
      	* final.c (pass_compute_alignments, rest_of_handle_final, pass_final,
      	rest_of_handle_shorten_branches, pass_shorten_branches,
      	rest_of_clean_state, pass_clean_state): New.
      	* flow.c (pass_recompute_reg_usage, gate_remove_death_notes,
      	rest_of_handle_remove_death_notes, pass_remove_death_notes,
      	rest_of_handle_life, pass_life, rest_of_handle_flow2,
      	pass_flow2): New.
      	* function.c (pass_instantiate_virtual_regs, pass_init_function,
      	rest_of_handle_check_leaf_regs, pass_leaf_regs): New.
      	* gcse.c (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
      	pass_jump_bypass, gate_handle_gcse, rest_of_handle_gcse,
      	pass_gcse): New.
      	* global.c (rest_of_handle_global_alloc, pass_global_alloc): New.
      	* ifcvt.c (gate_handle_if_conversion, rest_of_handle_if_conversion,
      	pass_rtl_ifcvt, gate_handle_if_after_combine,
      	rest_of_handle_if_after_combine, pass_if_after_combine,
      	gate_handle_if_after_reload, rest_of_handle_if_after_reload,
      	pass_if_after_reload): New.
      	* integrate.c (pass_initial_value_sets): New.
      	* jump.c (pass_cleanup_barriers, purge_line_number_notes,
      	pass_purge_lineno_notes): New.
      	* mode-switching.c (rest_of_handle_mode_switching,
      	pass_mode_switching): New.
      	* local-alloc.c (rest_of_handle_local_alloc, pass_local_alloc): New.
      	* loop-init.c (gate_handle_loop2, rest_of_handle_loop2,
      	pass_loop2): New.
      	* loop.c (gate_handle_loop_optimize, rest_of_handle_loop_optimize,
      	pass_loop_optimize): New.
      	* modulo-sched.c (gate_handle_sms, rest_of_handle_sms,
      	pass_sms): New.
      	* postreload-gcse.c (gate_handle_gcse2, rest_of_handle_gcse2,
      	pass_gcse2): New.
      	* postreload.c (gate_handle_postreload, rest_of_handle_postreload,
      	pass_postreload_cse): New.
      	* profile.c (gate_handle_profiling, pass_profiling,
      	rest_of_handle_branch_prob, pass_branch_prob): New.
      	* recog.c (pass pass_split_for_shorten_branches, gate_do_final_split,
      	pass_split_before_regstack, gate_handle_split_before_regstack,
      	gate_handle_peephole2, rest_of_handle_peephole2, pass_peephole2,
      	rest_of_handle_split_all_insns, pass_split_all_insns): New.
      	* reg-stack.c (gate_handle_stack_regs, rest_of_handle_stack_regs,
      	pass_stack_regs): New.
      	* regmove.c (gate_handle_regmove, rest_of_handle_regmove, pass_regmove,
      	gate_handle_stack_adjustments, rest_of_handle_stack_adjustments,
      	pass_stack_adjustments): New.
      	* regrename.c (gate_handle_regrename, rest_of_handle_regrename,
      	pass_regrename): New.
      	* reorg.c (gate_handle_delay_slots, rest_of_handle_delay_slots,
      	pass_delay_slots, gate_handle_machine_reorg,
      	rest_of_handle_machine_reorg, pass_machine_reorg): New.
      	* rtl.h (extern void purge_line_number_notes): New.
      	* sched-rgn.c (gate_handle_sched, rest_of_handle_sched,
      	gate_handle_sched2, rest_of_handle_sched2, pass_sched,
      	pass_sched2): New.
      	* tracer.c (gate_handle_tracer, rest_of_handle_tracer,
      	pass_tracer): New.
      	* value-prof.c (gate_handle_value_profile_transformations,
      	rest_of_handle_value_profile_transformations,
      	pass_value_profile_transformations): New.
      	* var-tracking.c (gate_handle_var_tracking,
      	pass_variable_tracking): New.
      	* web.c (gate_handle_web, rest_of_handle_web, pass_web): New.
      
      	* passes.c (open_dump_file, close_dump_file, rest_of_handle_final,
      	rest_of_handle_delay_slots, rest_of_handle_stack_regs,
      	rest_of_handle_variable_tracking, rest_of_handle_machine_reorg,
      	rest_of_handle_old_regalloc, rest_of_handle_regrename,
      	rest_of_handle_reorder_blocks, rest_of_handle_partition_blocks,
      	rest_of_handle_sms, rest_of_handle_sched, rest_of_handle_sched2,
      	rest_of_handle_gcse2, rest_of_handle_regmove,
      	rest_of_handle_tracer, rest_of_handle_if_conversion,
      	rest_of_handle_if_after_combine, rest_of_handle_if_after_reload,
      	rest_of_handle_web, rest_of_handle_branch_prob,
      	rest_of_handle_value_profile_transformations, rest_of_handle_cfg,
      	rest_of_handle_jump_bypass, rest_of_handle_combine,
      	rest_of_handle_life, rest_of_handle_cse, rest_of_handle_cse2,
      	rest_of_handle_gcse, rest_of_handle_loop_optimize,
      	rest_of_handle_loop2, rest_of_handle_branch_target_load_optimize,
      	rest_of_handle_mode_switching, rest_of_handle_jump,
      	rest_of_handle_eh, rest_of_handle_stack_adjustments,
      	rest_of_handle_flow2, rest_of_handle_jump2,
      	rest_of_handle_peephole2, rest_of_handle_postreload,
      	rest_of_handle_shorten_branches, rest_of_clean_state,
      	rest_of_compilation): Remove.
      
      	* cgraphunit.c (ipa_passes): Moved from tree-optimize.c.
      	* passes.c (dump_flags, in_gimple_form, all_passes,
      	all_ipa_passes, all_lowering_passes, register_one_dump_file,
      	register_dump_files, next_pass_1, last_verified, execute_todo,
      	execute_one_pass, execute_pass_list, execute_ipa_pass_list): Moved
      	from tree-optimize.c.
      	(init_optimization_passes): Moved from tree-optimize.c,
      	adding the RTL optimizations.
      	* tree-dump.h (dump_info_p, dump_flag): Moved from tree.h.
      	* tree-optimize.c (dump_flags, in_gimple_form, all_passes,
      	all_ipa_passes, all_lowering_passes, register_one_dump_file,
      	register_dump_files, next_pass_1, last_verified, execute_todo,
      	execute_one_pass, execute_pass_list, execute_ipa_pass_list,
      	init_tree_optimization_passes, ipa_passes): Delete.
      	* tree-pass.h (enum tree_dump_index): Moved from tree.h, removing
      	the RTL dumps.
      	(TDF_*, get_dump_file_name, dump_enabled_p, dump_initialized_p,
      	dump_begin, dump_end, dump_node, dump_switch_p, dump_flag_name): Moved
      	from tree.h.
      	(ipa_passes): Remove.
      	(all_passes, all_ipa_passes, all_lowering_passes): Now extern.
      	* tree.h (enum tree_dump_index, TDF_*, get_dump_file_name,
      	dump_enabled_p, dump_initialized_p, dump_begin, dump_end, dump_node,
      	dump_switch_p, dump_flag_name): Moved to tree-pass.h.
      	(dump_info_p, dump_flag): Moved to tree-dump.h.
      
      	* Makefile.in: Adjust dependencies for tree-pretty-print.c,
      	cgraph.c, opts.c.
      	* passes.c (finish_optimization_passes): Use dump_begin
      	and dump_end, TDI_end.
      	(gate_rest_of_compilation): New.
      	(pass_rest_of_compilation): Use it.
      	(gate_postreload, pass_postreload): New.
      	* toplev.c (general_init): Rename init_tree_optimization_passes.
      	* toplev.h (init_tree_optimization_passes): Rename to
      	init_optimizations_passes.
      	* tree-dump.c (dump_flag): Make static.
      	(dump_files): Remove RTL dumps.
      	* tree-optimize.c (pass_all_optimizations, pass_early_local_passes,
      	pass_cleanup_cfg, pass_free_cfg_annotations,
      	pass_cleanup_cfg_post_optimizing, pass_free_datastructures,
      	pass_init_datastructures, pass_fixup_cfg): Make non-static.
      	* tree-pretty-print.c: Include tree-pass.h.
      	* cgraph.c: Include tree-dump.h.
      
      cp:
      2005-07-05  Paolo Bonzini  <bonzini@gnu.org>
      
      	* Makefile.in (class.o, decl2.o): Adjust dependencies.
      	* class.c: Include tree-dump.h.
      	* decl2.c: Include tree-dump.h.
      
      java:
      2005-07-05  Paolo Bonzini  <bonzini@gnu.org>
      
      	* Makefile.in (parse.o): Adjust dependencies.
      	* parse.y: Include tree-dump.h.
      
      From-SVN: r101627
      Paolo Bonzini committed
  17. 30 Jun, 2005 1 commit
    • coretypes.h (tls_model): Add TLS_MODEL_NONE as 0. · c2f7fa15
      	* coretypes.h (tls_model): Add TLS_MODEL_NONE as 0.
      	* tree.h (struct tree_decl): New field `tls_model'.
      	(DECL_TLS_MODEL): New.
      	(DECL_THREAD_LOCAL_P): Rename from DECL_THREAD_LOCAL, make it
      	a predicate.
      	* rtl.h (decl_default_tls_model): Add prototype for it.
      	* varasm.c (decl_tls_model): Rewritten and renamed to ...
      	(decl_default_tls_model): ... this.
      	(default_encode_section_info): Use DECL_TLS_MODEL instead of
      	decl_tls_model.
      	(assemble_variable): Replace DECL_THREAD_LOCAL with
      	DECL_THREAD_LOCAL_P.
      	(default_section_type_flags_1): Likewise.
      	(categorize_decl_for_section): Likewise.
      	* tree.c (staticp): Likewise.
      	(recompute_tree_invarant_for_addr_expr): Likewise.
      	* drawf2out (loc_descriptor_from_tree_1): Likewise.
      	* c-decl.c (diagnose_mismatched_decls): Likewise.
      	with DECL_THREAD_LOCAL_P.
      	(start_decl): Likewise.
      	* print-tree.c (print_node): Likewise.  Print the TLS model.
      	(grokdeclarator): Set the default DECL_TLS_MODEL here.
      	* c-common.c (handle_tls_model_attribute): Rewrite to set the
      	TLS model up based on the attribute.  Never add the attribute
      	to the decl's attributes list.
      	* config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Replace
      	DECL_THREAD_LOCAL with DECL_THREAD_LOCAL_P.
      
      cp/
      	* decl.c (start_decl): Replace DECL_THREAD_LOCAL with
      	DECL_THREAD_LOCAL_P.
      	(cp_finish_decl): Likewise.
      	(grokvardecl): Set the default DECL_TLS_MODEL here.
      
      From-SVN: r101465
      Steven Bosscher committed
  18. 29 Jun, 2005 1 commit
  19. 27 Jun, 2005 2 commits
    • builtin-attrs.def (DEF_ATTR_FOR_INT): Add for 5 and 6. · 10a0d495
      	* builtin-attrs.def (DEF_ATTR_FOR_INT): Add for 5 and 6.
      	(DEF_LIST_INT_INT): Add for 4,0, 4,5, 5,0, 5,6.
      	(ATTR_NOTHROW_NONNULL_4, ATTR_NOTHROW_NONNULL_5): Define.
      	(ATTR_FORMAT_PRINTF_4_0, ATTR_FORMAT_PRINTF_4_5,
      	ATTR_FORMAT_PRINTF_5_0, ATTR_FORMAT_PRINTF_5_6): Define.
      	* builtins.c: Include tree-flow.h.
      	(expand_builtin_mempcpy, expand_builtin_memmove): Comment fixes.
      	(expand_builtin_object_size, expand_builtin_memory_chk,
      	maybe_emit_chk_warning, maybe_emit_sprintf_chk_warning,
      	compute_object_offset, compute_builtin_object_size,
      	fold_builtin_object_size): New functions.
      	(expand_builtin): Handle BUILT_IN_OBJECT_SIZE and BUILT_IN_*_CHK.
      	(fold_builtin_1): Likewise.  Handle BUILT_IN_{,V}{,F}PRINTF
      	and BUILT_IN_{,F}PRINTF_UNLOCKED.
      	(fold_builtin_memory_chk, fold_builtin_stxcpy_chk,
      	fold_builtin_strncpy_chk, fold_builtin_strcat_chk,
      	fold_builtin_strncat_chk, fold_builtin_sprintf_chk,
      	fold_builtin_snprintf_chk, fold_builtin_printf, fold_builtin_fprintf):
      	New functions.
      	* builtins.def (BUILT_IN_OBJECT_SIZE, BUILT_IN_MEMCPY_CHK,
      	BUILT_IN_MEMMOVE_CHK, BUILT_IN_MEMPCPY_CHK, BUILT_IN_MEMSET_CHK,
      	BUILT_IN_STPCPY_CHK, BUILT_IN_STRCAT_CHK, BUILT_IN_STRCPY_CHK,
      	BUILT_IN_STRNCAT_CHK, BUILT_IN_STRNCPY_CHK, BUILT_IN_SNPRINTF_CHK,
      	BUILT_IN_SPRINTF_CHK, BUILT_IN_VSNPRINTF_CHK, BUILT_IN_VSPRINTF_CHK,
      	BUILT_IN_FPRINTF_CHK, BUILT_IN_PRINTF_CHK, BUILT_IN_VFPRINTF_CHK,
      	BUILT_IN_VPRINTF_CHK): New builtins.
      	* builtin-types.def (DEF_FUNCTION_TYPE_5, DEF_FUNCTION_TYPE_VAR_4):
      	Document.
      	(BT_FN_SIZE_CONST_PTR_INT, BT_FN_INT_INT_CONST_STRING_VALIST_ARG,
      	BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, BT_FN_PTR_PTR_INT_SIZE_SIZE,
      	BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE,
      	BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG,
      	BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG,
      	BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG,
      	BT_FN_INT_INT_CONST_STRING_VAR, BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR,
      	BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR,
      	BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR): New types.
      	* c-common.c (DEF_FUNCTION_TYPE_5, DEF_FUNCTION_TYPE_6,
      	DEF_FUNCTION_TYPE_VAR_4, DEF_FUNCTION_TYPE_VAR_5): Define.
      	* Makefile.in (OBJS-common): Add tree-object-size.o.
      	(tree-object-size.o): Add dependencies.
      	* tree-pass.h (pass_object_sizes): Add.
      	* tree-optimize.c (init_tree_optimization_passes): Add
      	pass_object_sizes.
      	* tree-object-size.c: New file.
      	* tree.h (fold_builtin_memory_chk, fold_builtin_stxcpy_chk,
      	fold_builtin_strncpy_chk, fold_builtin_snprintf_chk,
      	compute_builtin_object_size, init_object_sizes, fini_object_sizes):
      	New prototypes.
      	* tree-ssa-ccp.c (get_strlen): Rename to ...
      	(get_maxval_strlen): ...this function.  Handle also computing of maximum
      	string length and maximum integral value.
      	(ccp_fold_builtin): Handle BUILT_IN_*_CHK.  Use get_maxval_strlen
      	instead of get_strlen.  Pass CALLEE and ARGLIST variables to the
      	folding functions instead of computing them again.
      	(execute_fold_all_builtins): Retry ccp_fold_builtin if a builtin changed
      	into some other builtin.
      	* doc/extend.texi (Object Size Checking): Document.
      
      	* gcc.c-torture/execute/builtins/lib/main.c (abort): Add prototype.
      	* gcc.c-torture/execute/builtins/lib/strncat.c (strncat): Avoid
      	testing uninitialized var.
      
      	* gcc.c-torture/execute/builtins/chk.h: New.
      	* gcc.c-torture/execute/builtins/lib/chk.c: New.
      	* gcc.c-torture/execute/builtins/memcpy-chk.c: New test.
      	* gcc.c-torture/execute/builtins/memcpy-chk-lib.c: New.
      	* gcc.c-torture/execute/builtins/memmove-chk.c: New test.
      	* gcc.c-torture/execute/builtins/memmove-chk-lib.c: New.
      	* gcc.c-torture/execute/builtins/mempcpy-chk.c: New test.
      	* gcc.c-torture/execute/builtins/mempcpy-chk-lib.c: New.
      	* gcc.c-torture/execute/builtins/memset-chk.c: New test.
      	* gcc.c-torture/execute/builtins/memset-chk-lib.c: New.
      	* gcc.c-torture/execute/builtins/snprintf-chk.c: New test.
      	* gcc.c-torture/execute/builtins/snprintf-chk-lib.c: New.
      	* gcc.c-torture/execute/builtins/sprintf-chk.c: New test.
      	* gcc.c-torture/execute/builtins/sprintf-chk-lib.c: New.
      	* gcc.c-torture/execute/builtins/stpcpy-chk.c: New test.
      	* gcc.c-torture/execute/builtins/stpcpy-chk-lib.c: New.
      	* gcc.c-torture/execute/builtins/strcat-chk.c: New test.
      	* gcc.c-torture/execute/builtins/strcat-chk-lib.c: New.
      	* gcc.c-torture/execute/builtins/strcpy-chk.c: New test.
      	* gcc.c-torture/execute/builtins/strcpy-chk-lib.c: New.
      	* gcc.c-torture/execute/builtins/strncat-chk.c: New test.
      	* gcc.c-torture/execute/builtins/strncat-chk-lib.c: New.
      	* gcc.c-torture/execute/builtins/strncpy-chk.c: New test.
      	* gcc.c-torture/execute/builtins/strncpy-chk-lib.c: New.
      	* gcc.c-torture/execute/builtins/vsnprintf-chk.c: New test.
      	* gcc.c-torture/execute/builtins/vsnprintf-chk-lib.c: New.
      	* gcc.c-torture/execute/builtins/vsprintf-chk.c: New test.
      	* gcc.c-torture/execute/builtins/vsprintf-chk-lib.c: New.
      	* gcc.dg/builtin-object-size-1.c: New test.
      	* gcc.dg/builtin-object-size-2.c: New test.
      	* gcc.dg/builtin-object-size-3.c: New test.
      	* gcc.dg/builtin-object-size-4.c: New test.
      	* gcc.dg/builtin-object-size-5.c: New test.
      	* gcc.dg/builtin-stringop-chk-1.c: New test.
      	* gcc.dg/builtin-stringop-chk-2.c: New test.
      	* gcc.dg/tree-ssa/builtin-fprintf-1.c: New test.
      	* gcc.dg/tree-ssa/builtin-fprintf-chk-1.c: New test.
      	* gcc.dg/tree-ssa/builtin-printf-1.c: New test.
      	* gcc.dg/tree-ssa/builtin-printf-chk-1.c: New test.
      	* gcc.dg/tree-ssa/builtin-vfprintf-1.c: New test.
      	* gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c: New test.
      	* gcc.dg/tree-ssa/builtin-vprintf-1.c: New test.
      	* gcc.dg/tree-ssa/builtin-vprintf-chk-1.c: New test.
      	* gcc.c-torture/execute/printf-1.c: New test.
      	* gcc.c-torture/execute/fprintf-1.c: New test.
      	* gcc.c-torture/execute/vprintf-1.c: New test.
      	* gcc.c-torture/execute/vfprintf-1.c: New test.
      	* gcc.c-torture/execute/printf-chk-1.c: New test.
      	* gcc.c-torture/execute/fprintf-chk-1.c: New test.
      	* gcc.c-torture/execute/vprintf-chk-1.c: New test.
      	* gcc.c-torture/execute/vfprintf-chk-1.c: New test.
      
      From-SVN: r101352
      Jakub Jelinek committed
    • c-cppbuiltin.c (c_cpp_builtins): Add __SSP_ALL__ and __SSP__. · 7d69de61
      	* c-cppbuiltin.c (c_cpp_builtins): Add __SSP_ALL__ and __SSP__.
      	* cfgexpand.c: Include params.h.
      	(has_protected_decls, has_short_buffer): New.
      	(expand_stack_vars): Take a predicate to determine what to expand.
      	(defer_stack_allocation): True when flag_stack_protect on.
      	(SPCT_HAS_LARGE_CHAR_ARRAY, SPCT_HAS_SMALL_CHAR_ARRAY): New.
      	(SPCT_HAS_ARRAY, SPCT_HAS_AGGREGATE): New.
      	(stack_protect_classify_type, stack_protect_decl_phase): New.
      	(stack_protect_decl_phase_1, stack_protect_decl_phase_2): New.
      	(add_stack_protection_conflicts, create_stack_guard): New.
      	(expand_used_vars): Add stack protection logic.
      	(tree_expand_cfg): Likewise.
      	* common.opt (Wstack-protector): New.
      	(fstack-protector, fstack-protector-all): New.
      	* function.c: Include predict.h.
      	(assign_parm_adjust_stack_rtl): Zap stack_parm when stack protect
      	wants to copy the parameter into the stack frame.
      	(stack_protect_prologue, stack_protect_epilogue): New.
      	(expand_function_end): Call stack_protect_epilogue.  Do
      	sjlj_emit_function_exit_after after naked_return_label.
      	* function.h (struct function): Add stack_protect_guard.
      	* params.def (PARAM_SSP_BUFFER_SIZE): New.
      	* toplev.c (process_options): Disable flag_stack_protect and/or
      	warn_stack_protect based on FRAME_GROWS_DOWNWARD.
      	* tree.h (stack_protect_prologue): Declare.
      
      	* target-def.h (TARGET_STACK_PROTECT_GUARD): New.
      	(TARGET_STACK_PROTECT_FAIL): New.
      	(TARGET_INITIALIZER): Add them.
      	* target.h (struct gcc_target): Add stack_protect_guard and
      	stack_protect_fail.
      	* targhooks.c: Include ggc.h, gty header.
      	(stack_chk_guard_decl, default_stack_protect_guard): New.
      	(stack_chk_fail_decl, default_external_stack_protect_fail): New.
      	(default_hidden_stack_protect_fail): New.
      	* targhooks.h (default_stack_protect_guard): Declare.
      	(default_external_stack_protect_fail): Declare.
      	(default_hidden_stack_protect_fail): Declare.
      	* config/i386/i386.c (TARGET_STACK_PROTECT_FAIL): New.
      	* config/i386/i386.md (UNSPEC_SP_SET, UNSPEC_SP_TEST): New.
      	(trap): Use ud2.
      	(conditional_trap, conditional_trap_1): Remove.
      	(stack_protect_set, stack_protect_set_si, stack_protect_set_di): New.
      	(stack_protect_test, stack_protect_test_si, stack_protect_test_di): New.
      	* doc/md.texi (stack_protect_set, stack_protect_test): New.
      	* doc/tm.texi (TARGET_STACK_PROTECT_GUARD): New.
      	(TARGET_STACK_PROTECT_FAIL): New.
      
      	* libgcc-std.ver (GCC_4.1.0): New.
      	* libgcc.h (__stack_chk_guard): Declare.
      	(__stack_chk_fail, __stack_chk_fail_local): Declare.
      	* libgcc2.c (L_stack_chk, L_stack_chk_local): New.
      	* mklibgcc.in (lib2funcs): Add them.
      
      From-SVN: r101348
      Richard Henderson committed
  20. 25 Jun, 2005 1 commit
  21. 23 Jun, 2005 1 commit
    • re PR c++/19317 (removing a temporary return value when we cannot) · fa47911c
              PR c++/19317
              Leave the return slot target in the MODIFY_EXPR rather than making
              it an argument, but only use it if the CALL_EXPR has a flag set.
              * tree.h (CALL_EXPR_HAS_RETURN_SLOT_ADDR): Rename to
              CALL_EXPR_RETURN_SLOT_OPT.
              * calls.c (expand_call): Adjust.
              * tree-inline.c (expand_call_inline): Adjust.
              * tree-pretty-print.c (dump_generic_node): Adjust.
      
              And set the flag as appropriate.
              * gimplify.c (gimplify_modify_expr_rhs): Set
              CALL_EXPR_HAS_RETURN_SLOT_ADDR where the LHS is obviously safe.
              * tree-nrv.c (execute_return_slot_opt): Set
              CALL_EXPR_HAS_RETURN_SLOT_ADDR based on escape analysis.
              * tree-pass.h: Declare pass_return_slot.
              * tree-optimize.c (init_tree_optimization_passes): Add it.
      
              * cp/semantics.c (simplify_aggr_init_expr): Use
              CALL_EXPR_RETURN_SLOT_OPT, not CALL_EXPR_HAS_RETURN_SLOT_ADDR.
      
      From-SVN: r101269
      Jason Merrill committed
  22. 16 Jun, 2005 1 commit
    • re PR tree-optimization/22035 (complex float comparison broken) · 8f8abce4
              PR tree-opt/22035
              * builtins.c (fold_builtin_complex_mul): Remove.
              (fold_builtin_complex_div): Remove.
              (fold_builtin_1): Don't call them.
              * fold-const.c (fold_complex_add, fold_complex_mult_parts,
              fold_complex_mult, fold_complex_div_parts, fold_complex_div): Remove.
              (fold_binary): Don't call them.  Don't expand complex comparisons to
              elementary comparisons.
              * tree-complex.c (init_dont_simulate_again): Enhance search for
              stmts that require decomposition.
              (complex_visit_stmt): Handle RETURN_EXPR properly.
              (create_components): Handle no referenced variables properly.
              * tree.h (fold_complex_mult_parts): Remove.
              (fold_complex_div_parts): Remove.
      
      From-SVN: r101086
      Richard Henderson committed
  23. 09 Jun, 2005 1 commit
    • re PR tree-optimization/20610 (Real by complex multiplications perform unnecessary operations) · e41d82f5
              PR tree-opt/20610
              * tree.h (DECL_COMPLEX_GIMPLE_REG_P): New.
              (struct tree_decl): Add gimple_reg_flag.
              * integrate.c (copy_decl_for_inlining): Copy it.
              * gimplify.c (internal_get_tmp_var): Set it.
              (gimplify_bind_expr): Likewise.
              (gimplify_function_tree): Likewise.
              (gimplify_modify_expr_complex_part): New.
              (gimplify_modify_expr): Use it.
              * tree-gimple.c (is_gimple_reg_type): Allow complex.
              (is_gimple_reg): Allow complex with DECL_COMPLEX_GIMPLE_REG_P set.
      
              * tree-complex.c (complex_lattice_t): New.
              (complex_lattice_values, complex_variable_components): New.
              (some_nonzerop, find_lattice_value, is_complex_reg,
              init_parameter_lattice_values, init_dont_simulate_again,
              complex_visit_stmt, complex_visit_phi, create_components,
              update_complex_components, update_parameter_components,
              update_phi_components, update_all_vops, expand_complex_move): New.
              (extract_component): Handle INDIRECT_REF, COMPONENT_REF, ARRAY_REF,
              SSA_NAME.
              (update_complex_assignment): Use update_complex_components;
              handle updates of return_expr properly.
              (expand_complex_addition): Use complex lattice values.
              (expand_complex_multiplication): Likewise.
              (expand_complex_division): Likewise.
              (expand_complex_libcall): Use update_complex_components.
              (expand_complex_comparison): Use update_stmt.
              (expand_complex_operations_1): Use expand_complex_move, retrieve
              lattice values.
              (tree_lower_complex): Compute lattice values.
              (tree_lower_complex_O0): Duplicate from tree_lower_complex.
              (pass_lower_complex_O0): Rename from pass_lower_complex.
              (pass_lower_complex, gate_no_optimization): New.
              * tree-optimize.c (init_tree_optimization_passes): Update for
              complex pass changes.
              * tree-pass.h (pass_lower_complex_O0): Declare.
      
      From-SVN: r100793
      Richard Henderson committed
  24. 07 Jun, 2005 1 commit
    • tree-ssa-address.c: New file. · ac182688
      	* tree-ssa-address.c: New file.
      	* Makefile.in (tree-ssa-address.o): Add.
      	* expr.c (expand_expr_real_1): Do not handle REF_ORIGINAL on
      	INDIRECT_REFs.  Handle TARGET_MEM_REFs.
      	* tree-eh.c (tree_could_trap_p): Handle TARGET_MEM_REFs.
      	* tree-flow.h (struct mem_address): New.
      	(struct affine_tree_combination): Moved from tree-ssa-loop-ivopts.c.
      	(create_mem_ref, addr_for_mem_ref, get_address_description,
      	maybe_fold_tmr, multiplier_allowed_in_address_p,
      	multiply_by_cost):  Declare.
      	* tree-mudflap.c (mf_xform_derefs_1): Handle TARGET_MEM_REFs.
      	* tree-pretty-print.c (dump_generic_node): Ditto.
      	* tree-ssa-loop-im.c (for_each_index): Ditto.
      	* tree-ssa-loop-ivopts.c (may_be_unaligned_p,
      	find_interesting_uses_address): Ditto.
      	(rewrite_address_base, build_addr_strip_iref): Removed.
      	(struct affine_tree_combination): Moved to tree-flow.h.
      	(get_ref_tag, copy_ref_info): New functions.
      	(rewrite_use_address): Produce TARGET_MEM_REFs.
      	(tree_ssa_iv_optimize): Do not call update_ssa
      	and rewrite_into_loop_closed_ssa.
      	(tree_to_aff_combination): Use build_fold_addr_expr instead of
      	build_addr_strip_iref.
      	(unshare_aff_combination): New function.
      	(fold_affine_sum): Removed.
      	(get_computation_at): Use get_computation_aff.  Unshare the result.
      	(get_computation_aff, multiplier_allowed_in_address_p): New function.
      	(multiply_by_cost): Exported.
      	(get_address_cost): Use multiplier_allowed_in_address_p.
      	* tree-ssa-operands.c (get_tmr_operands): New function.
      	(get_expr_operands): Handle TARGET_MEM_REFs.
      	* tree.c (copy_node_stat): Copy annotations for TARGET_MEM_REFs.
      	(build): Handle 7 arguments.
      	(build7_stat): New function.
      	* tree.def (TARGET_MEM_DEF): New.
      	* tree.h (REF_ORIGINAL): Removed.
      	(TMR_SYMBOL, TMR_BASE, TMR_INDEX, TMR_STEP, TMR_OFFSET, TMR_ORIGINAL,
      	TMR_TAG, build7): New macros.
      	(build7_stat, tree_mem_ref_addr, copy_mem_ref_info): Declare.
      	* tree-ssa-ccp.c (fold_stmt_r): Call maybe_fold_tmr.
      	* doc/c-tree.texi: Document TARGET_MEM_REF.
      	* doc/tree-ssa.texi: Add TARGET_MEM_REF to gimple grammar.
      
      	* gcc.dg/tree-ssa/loop-2.c: Update outcome.
      	* gcc.dg/tree-ssa/loop-3.c: Update outcome.
      	* gcc.dg/tree-ssa/loop-4.c: Update outcome.
      	* gcc.dg/tree-ssa/loop-9.c: New test.
      
      From-SVN: r100708
      Zdenek Dvorak committed
  25. 04 Jun, 2005 1 commit
    • cfgexpand.c (expand_one_var): Use DECL_HAS_VALUE_EXPR_P. · 833b3afe
      2005-06-01  Daniel Berlin  <dberlin@dberlin.org>
      
      	* cfgexpand.c (expand_one_var): Use DECL_HAS_VALUE_EXPR_P.
      	* dwarf2out.c (loc_descriptor_from_tree_1): Ditto.
      	* expr.c (expand_var): Ditto.
      	* function.c (gimplify_parameters): Use SET_DECL_VALUE_EXPR too.
      	* gimplify.c (gimplify_decl_expr): Ditto.
      	(gimplify_expr): Ditto.
      	* tree-mudflap.c (mf_decl_eligible_p): Use DECL_HAS_VALUE_EXPR_P.
      	* tree.c (value_expr_for_decl): New.
      	(print_value_expr_statistics): New.
      	(init_ttree): Init value_expr_for_decl.
      	(decl_value_expr_lookup): New.
      	(decl_value_expr_insert): Ditto.
      	(copy_node_stat): Copy DECL_VALUE_EXPR status.
      	* tree.h (DECL_VALUE_EXPR): Use hashtable.
      	(SET_DECL_VALUE_EXPR): New.
      	(DECL_HAS_VALUE_EXPR_P): New.
      
      From-SVN: r100592
      Daniel Berlin committed
  26. 02 Jun, 2005 1 commit
    • [multiple changes] · 227858d1
      2005-06-01  Diego Novillo  <dnovillo@redhat.com>
      
      	PR 14341, PR 21332, PR 20701, PR 21029, PR 21086, PR 21090
      	PR 21289, PR 21348, PR 21367, PR 21368, PR 21458.
      	* fold-const.c (invert_tree_comparison): Make extern.
      	* tree-flow.h (enum value_range_type): Move to tree-ssa-propagate.
      	(struct value_range_def): Limewise.
      	(get_value_range): Remove.
      	(dump_value_range): Remove.
      	(dump_all_value_ranges): Remove.
      	(debug_all_value_ranges): Remove.
      	(vrp_evaluate_conditional): Declare.
      	* tree-ssa-propagate.c (struct prop_stats_d): Add field
      	num_pred_folded.
      	(substitute_and_fold): Add argument use_ranges_p.
      	Update all callers.
      	If use_ranges_p is true, call fold_predicate_in to fold
      	predicates using range information.
      	Ignore ASSERT_EXPRs.
      	Change debugging output to only show statements that have been
      	folded.
      	(replace_phi_args_in): Move debugging output code from
      	substitute and fold.
      	(fold_predicate_in): New local function.
      	* tree-ssa-propagate.h (enum value_range_type): Move from
      	tree-flow.h.
      	(struct value_range_d): Likewise.
      	Add field 'equiv'.
      	(value_range_t): Rename from value_range.
      	* tree-vrp.c (found_in_subgraph): Rename from found.
      	(get_opposite_operand): Remove.
      	(struct assert_locus_d): Declare.
      	(assert_locus_t): Declare.
      	(need_assert_for): Declare.
      	(asserts_for): Declare.
      	(blocks_visited): Declare.
      	(vr_value): Declare.
      	(set_value_range): Add argument 'equiv'.
      	Don't drop to VARYING ranges that cover all values in the
      	type.
      	Make deep copy of equivalence set 'equiv'.
      	(copy_value_range): New local function.
      	(set_value_range_to_undefined): New local function.
      	(compare_values): Return -2 if either value has overflowed.
      	(range_includes_zero_p): New local function.
      	(extract_range_from_assert): Flip the predicate code if the
      	name being asserted is on the RHS of the predicate.
      	Avoid creating unnecessary symbolic ranges if the comparison
      	includes another name with a known numeric range.
      	Update the equivalnce set of the new range when asserting
      	EQ_EXPR predicates.
      	(extract_range_from_ssa_name): Update the equivalence set of
      	the new range with VAR.
      	(extract_range_from_binary_expr): Also handle TRUTH_*_EXPR.
      	If -fwrapv is used, set the resulting range to VARYING if the
      	operation overflows.  Otherwise, use TYPE_MIN_VALUE and
      	TYPE_MAX_VALUE to represent -INF and +INF.
      	Fix handling of *_DIV_EXPR.
      	(extract_range_from_unary_expr): Handle MINUS_EXPR and
      	ABS_EXPR properly by switching the range around if necessary.
      	(extract_range_from_comparison): New local function.
      	(extract_range_from_expr): Call it.
      	(adjust_range_with_scev): Do not adjust the range if using
      	wrapping arithmetic (-fwrapv).
      	(dump_value_range): Also show equivalence set.
      	Show -INF and +INF for TYPE_MIN_VALUE and TYPE_MAX_VALUE.
      	(build_assert_expr_for): Also build ASSERT_EXPR for EQ_EXPR.
      	(infer_value_range): Change return value to bool.
      	Add arguments 'comp_code_p' and 'val_p'.
      	Do not attempt to infer ranges from statements that may throw.
      	Store the comparison code in comp_code_p.
      	Store the other operand to be used in the predicate in val_p.
      	(dump_asserts_for): New.
      	(debug_asserts_for): New.
      	(dump_all_asserts): New.
      	(debug_all_asserts): New.
      	(register_new_assert_for): New.
      	(register_edge_assert_for): New.
      	(find_conditional_asserts): New.
      	(find_assert_locations): New.
      	(process_assert_insertions_for): New.
      	(process_assert_insertions): New.
      	(insert_range_assertions): Initialize found_in_subgraph,
      	blocks_visited, need_assert_for and asserts_for.
      	Call find_assert_locations and process_assert_insertions.
      	(remove_range_assertions): Add more documentation.
      	(vrp_initialize): Change return type to void.
      	Do not try to guess if running VRP is worth it.
      	(compare_name_with_value): New.
      	(compare_names): New.
      	(vrp_evaluate_conditional): Add argument 'use_equiv_p'.  If
      	use_equiv_p is true, call compare_names and
      	compare_name_with_value to compare all the ranges for every
      	name in the equivalence set of the predicate operands.
      	Update all callers.
      	(vrp_meet): Try harder not to derive a VARYING range.
      	If two values meet, the resulting equivalence set is the
      	intersection of the two equivalence sets.
      	(vrp_visit_phi_node): Call copy_value_range to get the current
      	range information of the LHS.
      	(vrp_finalize): Create a value vector representing all the
      	names that ended up with exactly one value in their range.
      	Call substitute_and_fold.
      	(execute_vrp): Document equivalence sets in ranges.
      	* tree.h (SSA_NAME_VALUE_RANGE): Remove.
      	(struct tree_ssa_name): Remove field value_range.
      	(invert_tree_comparison): Declare.
      
      testsuite/ChangeLog
      
      2005-06-01  Diego Novillo  <dnovillo@redhat.com>
      
      	PR 14341, PR 21332, PR 20701, PR 21086, PR 21090
      	PR 21289, PR 21348, PR 21367, PR 21368, PR 21458.
      	* gcc.dg/tree-ssa/pr14341.c: New test.
      	* gcc.dg/tree-ssa/pr14841.c: New test.
      	* gcc.dg/tree-ssa/pr20701.c: New test.
      	* gcc.dg/tree-ssa/pr21086.c: New test.
      	* gcc.dg/tree-ssa/pr21090.c: New test.
      	* gcc.dg/tree-ssa/pr21332.c: New test.
      	* gcc.dg/tree-ssa/pr21458.c: New test.
      	* gcc.dg/tree-ssa/pr21658.c: New test.
      	* gcc.dg/tree-ssa/vrp01.c: New test.
      	* gcc.dg/tree-ssa/vrp02.c: New test.
      	* gcc.dg/tree-ssa/vrp03.c: New test.
      	* gcc.dg/tree-ssa/vrp04.c: New test.
      	* gcc.dg/tree-ssa/vrp05.c: New test.
      	* gcc.dg/tree-ssa/vrp06.c: New test.
      	* gcc.dg/tree-ssa/vrp07.c: New test.
      	* gcc.dg/tree-ssa/vrp08.c: New test.
      	* gcc.dg/tree-ssa/vrp09.c: New test.
      	* gcc.dg/tree-ssa/vrp10.c: New test.
      	* gcc.dg/tree-ssa/vrp11.c: New test.
      	* gcc.dg/tree-ssa/vrp12.c: New test.
      	* gcc.dg/tree-ssa/vrp13.c: New test.
      
      2005-06-01  Alexandre Oliva  <aoliva@redhat.com>
      
      	PR 21029
      	* gcc.dg/tree-ssa/pr21029.c: New test.
      
      From-SVN: r100478
      Diego Novillo committed
  27. 01 Jun, 2005 2 commits
    • tree.h (fold_indirect_ref_1): Export from fold-const.c. · 095ecc24
      2005-06-01  Richard Guenther  <rguenth@gcc.gnu.org>
      
      	* tree.h (fold_indirect_ref_1): Export from fold-const.c.
      	* fold-const.c (fold_indirect_ref_1): No longer static.
      	* tree-inline.c (copy_body_r): Use fold_indirect_ref_1 for
      	folding, if possible.
      
      From-SVN: r100458
      Richard Guenther committed
    • c-objc-common.c (c_tree_printer): Check flag before hashtable. · f991abd1
      2005-05-30  Daniel Berlin  <dberlin@dberlin.org>
      
      	* c-objc-common.c (c_tree_printer): Check flag before hashtable.
      	Use DECL_DEBUG_EXPR and SET_DECL_DEBUG_EXPR.
      	* dwarf2out.c (dwarf2out_var_location): Ditto.
      	* toplev.c (default_tree_printer): Ditto.
      	* tree-outof-ssa.c (create_temp): Ditto.
      	* tree-sra.c (instantiate_element): Ditto.
      	* var-tracking.c (track_expr_p): Ditto.
      	* tree.c (struct tree_map): New structure.
      	(debug_expr_for_decl): New.
      	(tree_map_eq): New function.
      	(tree_map_hash): Ditto.
      	(tree_map_marked_p): Ditto.
      	(print_debug_expr_statistics): Ditto.
      	(decl_debug_expr_lookup): Ditto.
      	(decl_debug_expr_insert): Ditto.
      	(dump_tree_statistics): Dump debug_expr hashtable stats.
      	* tree.h (DECL_DEBUG_EXPR): Change
      	(SET_DECL_DEBUG_EXPR): Add.
      
      From-SVN: r100417
      Daniel Berlin committed
  28. 27 May, 2005 1 commit
    • basic-block.h (basic_block_def): Add phi_nodes and predictions. · 4aab792d
      	* basic-block.h (basic_block_def): Add phi_nodes and
      	predictions.  Remove tree_annotations.
      	* predict.c (tree_predicted_by_p, tree_predict_edge,
      	combine_predictions_for_bb): Adjust references to predictions.
      	* tree-cfg.c (init_empty_tree_cfg, create_bb): Don't call
      	create_block_annotation.
      	(create_block_annotation, free_blocks_annotatios,
      	clear_blocks_annotations): Remove.
      	(dump_cfg_stats): Don't print out the memory spent on
      	bb_ann_d.
      	(delete_tree_cfg_annotations): Don't call free_blocks_annotations.
      	* tree-flow-inline.h (bb_ann): Remove.
      	(phi_nodes, set_phi_nodes): Update references to phi_nodes.
      	* tree-flow.h (bb_ann_d): Remove.
      	* tree-if-conv.c (process_phi_nodes): Update a reference to
      	phi_nodes.
      	* tree-phinodes.c (reserve_phi_args_for_new_edge,
      	create_phi_node, remove_phi_node): Likewise.
      	* tree-pretty-print.c (dump_generic_bb_buff): Don't call bb_ann.
      	* tree-ssa-dom.c (threaded_blocks): New.
      	(tree_ssa_dominator_optimize): Initialize, clear, and free
      	threaded_blocks. Update a call to thread_through_all_blocks.
      	(thread_across_edge): Use threaded_blocks instead of setting
      	incoming_edge_threaded.
      	* tree-ssa-threadupdate.c (threaded_through_all_blocks): Take
      	a bitmap of blocks that are threaded through.
      	* tree.h: Move the prototype of threaded_through_blocks to
      	tree-flow.h.
      
      From-SVN: r100279
      Kazu Hirata committed
  29. 24 May, 2005 1 commit
    • tree-nested.c (build_addr): New "context" argument. · bde6c65d
              * tree-nested.c (build_addr): New "context" argument.  Temporarily
              set current_function_decl around the call to build the ADDR_EXPR.
              (get_static_chain): Pass proper context to build_addr.
              (convert_nl_goto_reference): Likewise.
              (convert_tramp_reference): Likewise.
              (final_nesting_tree_1): Likewise.
              * tree-profile.c (tree_gen_interval_profiler): Likewise.
              (tree_gen_pow2_profiler): Likewise.
              (tree_gen_one_value_profiler): Likewise.
              * tree-ssa-loop-ivopts.c (build_addr_strip_iref): Likewise.
              * tree.h (build_addr): Update prototype.
      
      From-SVN: r100110
      Jeff Law committed
  30. 17 May, 2005 1 commit
  31. 11 May, 2005 2 commits
    • Makefile.in (tree-eh.o): Kill gt-tree-eh.h dependency. · b4660e5a
      	* Makefile.in (tree-eh.o: Kill gt-tree-eh.h dependency.
      	(GTFILES): add except.h.
      	* except.c (eh_status): Add throw_stmt_table.
      	(set_eh_throw_stmt_table, get_eh_throw_stmt_table): New functions.
      	* except.h (add_stmt_to_eh_region_fn, remove_stmt_from_eh_region_fn,
      	lookup_stmt_eh_region_fn): Declare.
      	(throw_stmt_node): New structure.
      	(set_eh_throw_stmt_table, get_eh_throw_stmt_table): New.
      	* gengtype.c (open_base_files): Add except.h to inlines.
      	* tree-eh.c (throw_stmt_node): Kill.
      	(record_stmt_eh_region): Update.
      	(add_stmt_to_eh_region_fn): Break out from ...
      	(add_stmt_to_eh_region): ... here.
      	(remove_stmt_from_eh_region_fn): Break out from ...
      	(remove_stmt_from_eh_region): ... here.
      	(lookup_stmt_eh_region_fn): Break out from ...
      	(lookup_stmt_eh_region): ... here.
      	(honor_protect_cleanup_actions): Use build_resx.
      	(lower_try_finally_onedest): Likewise.
      	(lower_try_finally_copy): Likewise.
      	(lower_try_finally_switch): Likewise.
      	(lower_eh_constructs): Update eh table construction.
      	* tree.c (build_resx): New.
      	* tree.h (build_resx): Declare.
      
      From-SVN: r99585
      Jan Hubicka committed
    • re PR middle-end/20371 (Some corner cases of MS bitfields don't work) · cbbaf4ae
      	PR middle-end/20371:
      	* tree.h (record_layout_info_s): New member prev_packed.
      	* stor-layout.c (update_alignment_for_field): Fix comment about
      	KNOWN_ALIGN.  For MS bitfields, if we start a new run, make sure
      	we start it properly aligned.
      	(place_field): At the beginning of a record, pass 0 as KNOWN_ALIGN
      	to update_alignment_for_field, and recompute it afterwards using
      	the alignment of the record.
      	When a packed bitfield precedes an MS bitfield, don't add padding
      	at the end of the packed bitfield on behalf of the base type of
      	the packed bit field.
      	Don't adjust rli->bitpos at the end
      	of an MS bitfield run if we already adjusted bitpos/offset for an
      	alignment as large or larger than the bitfield type size.
      	Take possible record alignment > BIGGEST_ALIGNMENT into account
      	when calculating actual_align.
      	Only put packed buit fields into rli->prev_field if they end up
      	suitably aligned.
      	Also set rli->remaining_in_alignment when we re-set rli->prev_field.
      	Update rli->remaining_in_alignment when we have already started a
      	run of bit fields and we process a packed bit field.
      
      From-SVN: r99574
      J"orn Rennecke committed
  32. 03 May, 2005 1 commit
    • lambda-code.c (gcc_loop_to_lambda_loop, [...]): Use generic operand interface. · f47c96aa
      2005-05-03  Andrew MacLeod  <amacleod@redhat.com>
      
      	* lambda-code.c (gcc_loop_to_lambda_loop,
      	lambda_loopnest_to_gcc_loopnest, phi_loop_edge_uses_def,
      	stmt_is_bumper_for_loop, perfect_nest_p, replace_uses_of_x_with_y): Use
      	generic operand interface.
      	* tree-data-ref.c (find_data_references_in_loop): Use generic interface.
      	* tree-dfa.c (collect_dfa_stats_r, mark_new_vars_to_rename): Use
      	generic operand interface.
      	* tree-flow-inline.h (delink_imm_use, link_imm_use_to_list,
      	link_imm_use, link_imm_use_stmt, relink_imm_use, relink_imm_use_stmt,
      	next_safe_imm_use, has_zero_uses, has_single_use, single_imm_use,
      	num_imm_uses): Use ssa_use_operand_t.
      	(get_def_ops, get_use_ops, get_v_may_def_ops, get_vuse_ops,
      	get_v_must_def_ops): Delete.
      	(get_def_from_ptr, get_phi_result_ptr): Get def directly now.
      	(get_use_op_ptr, get_def_op_ptr, get_v_may_def_result_ptr,
      	get_v_may_def_op_ptr, get_vuse_op_ptr, get_v_must_def_result_ptr,
      	get_v_must_def_kill_ptr): Delete.
      	(delink_stmt_imm_use): Move and use new operand interface.
      	(op_iter_next_use, op_iter_next_def, op_iter_next_tree, op_iter_init,
      	op_iter_next_tree): Use new operand implementation.
      	(clear_and_done_ssa_iter): New.  Initialize a blank operand iterator.
      	(op_iter_init_use, op_iter_init_def, op_iter_init_tree): Add iterator
      	type check.
      	(op_iter_next_mustdef, op_iter_next_maydef,
      	op_iter_next_must_and_may_def): Delete. Replace with...
      	(op_iter_next_maymustdef): New.  Combine must and may next operations.
      	(op_iter_init_maydef, op_iter_init_mustdef,
      	op_iter_init_must_and_may_def): Use new interface.
      	(single_ssa_tree_operand ): New.  Process single operands only as trees.
      	(single_ssa_use_operand): New.  Process single operands only as uses.
      	(single_ssa_def_operand): New.  Process single operands only as defs.
      	(zero_ssa_operands): New.  Return TRUE if there are zero operands of the
      	specified types.
      	(num_ssa_operands): New.  Count the number of specified operands.
      	(compare_ssa_operands_equal): New.  Compare two statements' operands.
      	(single_phi_def): New.  Return true if PHI has one def of the specified
      	operand type.
      	(op_iter_init_phiuse): New.  Initialize the iterator for PHI arguments.
      	(op_iter_init_phidef): New.  Initialize the iterator for the PHI def.
      	* tree-flow.h (struct immediate_use_iterator_d): Use ssa_use_operand_t.
      	(struct stmt_ann_d): Operands field no longer require GTY().
      	(vn_compute, vn_lookup_or_add, vn_add, vn_lookup): Change prototype.
      	* tree-into-ssa.c (mark_def_sites): Use SSA_OP_VMUSTKILL.
      	* tree-outof-ssa.c (check_replaceable, find_replaceable_in_bb,
      	dump_replaceable_exprs, rewrite_trees): Use generic interface.
      	* tree-phinodes.c (make_phi_node, release_phi_node, resize_phi_node):
      	Use use_operand_p instead of ssa_imm_use_t *.
      	* tree-pretty-print.c (dump_vops): check if operands are active before
      	dumping virtual operands.
      	* tree-sra.c (sra_walk_function): Use ZERO_SSA_OPERANDS.
      	* tree-ssa-ccp.c (likely_value): Use ZERO_SSA_OPERANDS.
      	(ccp_fold): Use new interface.
      	(ccp_visit_stmt): Remove unused variables and code.
      	(convert_to_gimple_builtin): Insert statements before calling
      	mark_new_vars_to_rename.
      	* tree-ssa-copy.c (stmt_may_generate_copy): Use ZERO_SSA_OPERANDS.
      	(copy_prop_visit_cond_stmt): Use generic interface.
      	* tree-ssa-dom.c (struct expr_hash_elt): Use stmt pointer, not the
      	annotation in table.
      	(thread_across_edge): Use generic interface.
      	(initialize_hash_element): Initialzie with stmt, not annotation.
      	(eliminate_redundant_computations): Use generic interface.
      	(record_equivalences_from_stmt): Pass stmt, not annotation.
      	(avail_expr_hash, real_avail_expr_hash, avail_expr_eq): Use generic
      	interface.
      	* tree-ssa-dse.c (dse_optimize_stmt): Use ZERO_SSA_OPERANDS.
      	* tree-ssa-loop-ivopts.c (find_invariants_stmt,
      	find_interesting_uses_stmt, protect_loop_closed_ssa_form_use): Use
      	generic operand interface.
      	* tree-ssa-loop-niter.c (chain_of_csts_start, get_val_for): Use generic
      	interface.
      	* tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Use Generic operand
      	Interface.
      	* tree-ssa-operands.c (struct opbuild_list_d): New.  Operand build type.
      	(build_defs, build_uses, build_v_may_defs, build_vuses,
      	build_v_must_defs): Change type to struct opbuild_list_d.
      	(ops_active): New.  Operands active boolean.
      	(operand_memory, operand_memory_index): New.  Operand memory managers.
      	(allocate_def_optype, allocate_use_optype, allocate_v_may_def_optype,
      	allocate_vuse_optype, allocate_v_must_def_optype): Delete.
      	(free_uses, free_defs, free_vuses, free_v_may_defs, free_v_must_defs):
      	Change from functions to static variable list heads.
      	(opbuild_initialize_virtual): New.  Initialize a virtual build list.
      	(opbuild_initialize_real): New.  Initialize a virtual build list.
      	(opbuild_free): New.  Free a build list.
      	(opbuild_num_elems): New.  Number of items in a list.
      	(opbuild_append_real): New.  Add a real (tree *) operand.
      	(opbuild_append_virtual): New.  Add and sort a virtual (tree) operand.
      	(opbuild_first): New.  Return first element index in a list.
      	(opbuild_next): New.  Return next element in a list.
      	(opbuild_elem_real): New.  Return real element.
      	(opbuild_elem_virtual): New.  Return virtual element.
      	(opbuild_elem_uid): New.  Return UID of virtual element.
      	(opbuild_clear): New.  Reset an operand list.
      	(opbuild_remove_elem): New.  Remove an element form a list.
      	(ssa_operands_active): New.  Return true if operand cache is active.
      	(init_ssa_operands, fini_ssa_operands): Initialize new implementation.
      	(ssa_operand_alloc): New.  Allocate memory from an operand chunk.
      	(correct_use_link): Use use_operand_p.
      	(finalize_ssa_uses, finalize_ssa_v_may_defs, finalize_ssa_defs,
      	finalize_ssa_vuses, finalize_ssa_v_must_defs): New implmentation.
      	(cleanup_v_may_defs): Use new implmentation.
      	(finalize_ssa_stmt_operands, start_ssa_stmt_operands): New
      	implementation.
      	(append_def, append_use, append_v_may_def, append_vuse,
      	append_v_must_def): Call opbuild_append routine instead of using varray.
      	(build_ssa_operands): Simplify to simply use stmt, don't maintain a
      	global parse_old_ops variable.
      	(free_ssa_operands): New implementation.
      	(update_stmt_operands): Move.  Change argument to build_ssa_operands.
      	(copy_virtual_operands): Move. New generic implementation.
      	(create_ssa_artficial_load_stmt): Move. New implementation.
      	(swap_tree_operands): Update for new implementation.
      	(get_expr_operands): Add stmt parameter to calls to swap_tree_operands.
      	(add_call_clobber_ops, add_call_read_ops): Initialize opbuild list
      	rather than a varray.
      	(verify_imm_links): Use use_operand_p.
      	(dump_immediate_uses_for): If the immediate use variable is a virtual
      	variable, show the virtual ops in the stmt.
      	* tree-ssa-operands.h (def_operand_p): No longer a structure.
      	(NULL_DEF_OPERAND_P): Now a #define.
      	(def_optype_d, use_optype_d, v_def_use_operand_type, v_may_def_optype_d,
      	vuse_operand_type, vuse_optype_d, v_must_def_optype_d): Delete.
      	(def_optype_d, use_optype_d, maydef_optype_d, vuse_optype_d,
      	mustdef_optype_d): New.  Use Linked list representation.
      	(SSA_OPERAND_MEMORY_SIZE): New.  Size of operand memory chunk.
      	(struct ssa_operand_memory_d): New.  Allocated Chunk node.
      	(struct stmt_operands_d): Change to new pointers that are not GTY.
      	(STMT_USE_OPS, NUM_USES, SET_USE_OP, STMT_DEF_OPS, NUM_DEFS, SET_DEF_OP,
      	STMT_V_MAY_DEF_OPS, NUM_V_MAY_DEFS, SET_V_MAY_DEF_RESULT,
      	SET_V_MAY_DEF_OP, STMT_VUSE_OPS, NUM_VUSES, SET_VUSE_OP,
      	STMT_V_MUST_DEF_OPS, NUM_V_MUST_DEFS, SET_V_MUST_DEF_RESULT,
      	SET_V_MUST_DEF_KILL): Delete.
      	(V_MAY_DEF_OPS, V_MAY_DEF_RESULT_PTR, V_MAY_DEF_RESULT,
      	V_MAY_DEF_OP_PTR, V_MAY_DEF_OP): Rename to MAYDEF_*.
      	(V_MUST_DEF_OPS, V_MUST_DEF_RESULT_PTR, V_MUST_DEF_RESULT,
      	V_MUST_DEF_KILL_PTR, V_MUST_DEF_KILL): Rename to MUSTDEF_*.
      	(enum ssa_op_iter_type): Operand iterator typechecking values.
      	(struct ssa_operand_iterator_d): Use linked lists of operands.
      	(SSA_OP_VMUSTDEFKILL): Rename to SSA_OP_VMUSTKILL.
      	(FOR_EACH_SSA_MAYDEF_OPERAND, FOR_EACH_SSA_MUSTDEF_OPERAND,
      	FOR_EACH_SSA_MUST_AND_MAY_DEF_OPERAND): Use op_iter_next_maymustdef.
      	(FOR_EACH_PHI_ARG): New.  Iterate over PHI arguments.
      	(FOR_EACH_PHI_OR_STMT_USE): New.  Iterate over PHI or stmt uses.
      	(FOR_EACH_PHI_OR_STMT_DEF): New.  Iterate over PHI or stmt defs.
      	(SINGLE_SSA_TREE_OPERAND, SINGLE_SSA_USE_OPERAND,
      	SINGLE_SSA_DEF_OPERAND, ZERO_SSA_OPERANDS, NUM_SSA_OPERANDS): New.
      	* tree-ssa-opfinalize.h: New.  Function templates for expansion.
      	(FINALIZE_ALLOC): Expands into alloc_def, alloc_use, alloc_maydef,
      	alloc_vuse, and alloc_mustdef.
      	(FINALIZE_FUNC): Expands into finalize_ssa_def_ops,
      	finalize_ssa_use_ops, finalize_ssa_v_may_def_ops, finalize_ssa_vuse_ops,
      	and finalize_ssa_v_must_def_ops.
      	* tree-ssa-pre.c (add_to_sets): Pass tree to vn_add.
      	(create_value_expr_from): Use stmt not vuse_optype as a parameter. Pass
      	stmt around.
      	(compute_avail): Use generic iterator interface.
      	* tree-ssa-propagate.c (first_vdef): Use generic operand interface.
      	(stmt_makes_single_load, stmt_makes_single_store): Use
      	ZERO_SSA_OPERANDS.
      	* tree-ssa-sink.c (is_hidden_global_store): Use ZERO_SSA_OPERANDS.
      	(statement_sink_location): Use generic interface.
      	* tree-ssa.c (verify_ssa):  Use %p in fprintf.  Use generic interface.
      	(delete_tree_ssa): Don't call release_defs.  Call release_ssa_name and
      	reset the immediate use link nodes.
      	(stmt_references_memory_p): Use ZERO_SSA_OPERANDS.
      	* tree-ssanames.c (make_ssa_name): Use use_operand_p.
      	* tree-tailcall.c (find_tail_calls): Use ZERO_SSA_OPERANDS.
      	(eliminate_tail_call): Use generic operand interface.
      	* tree-vect-analyze.c (vect_analyze_data_refs): Use ZERO_SSA_OPERANDS.
      	(vect_mark_relevant, vect_mark_stmts_to_be_vectorized): Use generic
      	interface.
      	* tree-vect-transform.c (update_vuses_to_preheader): Use generic
      	interface.
      	* tree-vectorizer.c (rename_variables_in_bb): Use generic interface.
      	* tree-vn.c (struct val_expr_pair_d): Cache statment pointer instead of
      	vuse_optype.
      	(vn_compute, val_expr_pair_hash, vn_add, vn_lookup, vn_lookup_or_add):
      	Use statement pointer instead of vuse_optype.  Use generic interface.
      	* tree-vrp.c (maybe_add_assert_expr): Use generic interface.
      	(stmt_interesting_for_vrp, vrp_visit_stmt): Use ZERO_SSA_OPERANDS.
      	* tree.h (struct ssa_imm_use_d): Renamed to ssa_use_operand_d.
      	(tree_ssa_name, phi_arg_d): Use ssa_use_operand_d.
      	* doc/tree-ssa.texi: Update documentation for operand interface.
      
      From-SVN: r99155
      Andrew MacLeod committed
  33. 29 Apr, 2005 1 commit
    • tree.c (build_block): Removed unused 'tags' argument. · 22e8617b
      gcc:
      	* tree.c (build_block): Removed unused 'tags' argument.
      	* tree.h (build_block): Removed argument.
      gcc/java:
      	* expr.c (build_jni_stub): Updated for change to build_block.
      gcc/treelang:
      	* treetree.c (poplevel): Updated for change to build_block.
      gcc/fortran:
      	* f95-lang.c (poplevel): Updated for change to build_block.
      
      From-SVN: r99019
      Tom Tromey committed
  34. 28 Apr, 2005 1 commit