1. 08 Jul, 2004 2 commits
  2. 30 Jun, 2004 1 commit
    • tree-ssa-loop-ch.c: New file. · 5f240ec4
      	* tree-ssa-loop-ch.c: New file.
      	* Makefile.in (tree-ssa-loop-ch.o): Add.
      	(tree-into-ssa.o): Add GGC_H dependency.
      	* tree-cfg.c (tree_duplicate_bb): Copy virtual arguments.
      	* tree-flow.h (rewrite_into_ssa): Declaration changed.
      	(rewrite_ssa_into_ssa, compute_global_livein, duplicate_ssa_name):
      	Declare.
      	* tree-into-ssa.c: Include ggc.h.
      	(struct def_blocks_d): Add phi_blocks field.
      	(struct mark_def_sites_global_data): Add names_to_rename field.
      	(struct ssa_name_info): New.
      	(compute_global_livein): Export.
      	(set_def_block, insert_phi_nodes, mark_def_sites, set_livein_block,
      	insert_phi_nodes_1, rewrite_finalize_block, insert_phi_nodes_for,
      	register_new_def, get_reaching_def, def_blocks_free,
      	get_def_blocks_for, rewrite_into_ssa): Modified to work with
      	rewrite_ssa_into_ssa.
      	(get_ssa_name_ann, get_phi_state, set_phi_state, get_current_def,
      	set_current_def, ssa_mark_def_sites_initialize_block,
      	ssa_mark_phi_uses, ssa_mark_def_sites, duplicate_ssa_name,
      	ssa_register_new_def, ssa_rewrite_initialize_block,
      	ssa_rewrite_phi_arguments, ssa_rewrite_finalize_block,
      	ssa_rewrite_stmt, rewrite_ssa_into_ssa, rewrite_all_into_ssa): New
      	functions.
      	(pass_build_ssa): Call rewrite_all_into_ssa.
      	* tree-optimize.c (execute_todo, execute_one_pass,
      	tree_rest_of_compilation): Allocate vars_to_rename only once.
      	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Provide parameter
      	to rewrite_into_ssa.
      	* tree-ssa-loop.c (should_duplicate_loop_header_p,
      	mark_defs_for_rewrite, duplicate_blocks, do_while_loop_p,
      	copy_loop_headers, gate_ch, pass_ch): Moved to tree-ssa-loop-ch.c.
      	Use rewrite_ssa_into_ssa.
      	* tree-ssa-operands.c (copy_virtual_operands): New function.
      	* tree-ssa-operands.h (copy_virtual_operands): Declare.
      	* tree.h (struct tree_ssa_name): Add aux field.
      	(SSA_NAME_AUX): New macro to access it.
      
      From-SVN: r83932
      Zdenek Dvorak committed
  3. 26 Jun, 2004 1 commit
    • c-typeck.c, [...]: Fix comment typos. · 61ada8ae
      	* c-typeck.c, cfgexpand.c, ddg.c, ddg.h, df.c, fold-const.c,
      	gcov.c, gimplify.c, modulo-sched.c, passes.c, tree-cfg.c,
      	tree-mudflap.c, tree-nrv.c, tree-outof-ssa.c, tree-ssa-dom.c,
      	tree-ssa-dse.c, tree-ssa-operands.c, tree-ssa-pre.c,
      	tree-tailcall.c: Fix comment typos.  Follow spelling
      	conventions.
      
      From-SVN: r83703
      Kazu Hirata committed
  4. 23 Jun, 2004 1 commit
    • tree.def (VTABLE_REF): Remove. · 0f59171d
              * tree.def (VTABLE_REF): Remove.
              (OBJ_TYPE_REF): New.
              (TRY_CATCH_EXPR, TRY_FINALLY_EXPR): Set type 's'.
              * expr.c (expand_expr_real_1): Replace VTABLE_REF with OBJ_TYPE_REF.
              * fold-const.c (non_lvalue): Likewise.
              * gimplify.c (gimplify_expr): Likewise.
              (gimplify_call_expr): Use is_gimple_call_addr.
              * langhooks-def.h (LANG_HOOKS_FOLD_OBJ_TYPE_REF): New.
              * langhooks.h (fold_obj_type_ref): New.
              * tree-gimple.c (is_gimple_call_addr): New.
              * tree-gimple.h (is_gimple_call_addr): Declare.
              * tree-inline.c (inlinable_function_p): Fix merge error.
              (estimate_num_insns_1): Replace VTABLE_REF with OBJ_TYPE_REF.
              * tree-pretty-print.c (dump_generic_node): Likewise.
              (print_call_name): Handle OBJ_TYPE_REF.
              * tree-ssa-ccp.c (fold_stmt): Fold OBJ_TYPE_REF.
              * tree-ssa-operands.c (get_expr_operands): Handle OBJ_TYPE_REF.
              * tree.h (OBJ_TYPE_REF_EXPR): New.
              (OBJ_TYPE_REF_OBJECT, OBJ_TYPE_REF_TOKEN): New.
              * doc/c-tree.texi (VTABLE_REF): Remove.
              * objc/objc-act.c (build_objc_method_call): Build an OBJ_TYPE_REF.
      cp/
              * class.c (build_vfn_ref): Take a pointer not object.  Build
              an OBJ_TYPE_REF.
              (cp_fold_obj_type_ref): New.
              * call.c (build_over_call): Update build_vfn_ref call.
              * cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): New.
              * cp-tree.h (cp_fold_obj_type_ref): Declare.
      testsuite/
              * g++.dg/opt/devirt1.C: New.
      
      From-SVN: r83531
      Richard Henderson committed
  5. 22 Jun, 2004 1 commit
    • alias.c (adjust_offset_for_component_ref): Use component_ref_field_offset. · 44de5aeb
      	* alias.c (adjust_offset_for_component_ref): Use
      	component_ref_field_offset.
      	* c-decl.c (build_array_declarator): Add news args for ARRAY_REF.
      	* c-gimplify.c (gimplify_expr_stmt): Use alloc_stmt_list.
      	(gimplify_decl_stmt): Call gimplify_type_sizes for type.
      	For decl, call gimplify_one_sizepos and use statement list.
      	(gimplify_compound_literal_expr): New arg PRE_P.
      	Add statement to PRE_P list and return DECL.
      	(c_gimplify_expr, case COMPOUND_LITERAL_EXPR): Add arg to
      	gimplify_compound_literal_expr.
      	* c-tree.h (getdecls): Deleted.
      	* c-typeck.c (build_component_ref): Add operand for COMPONENT_REF.
      	(build_array_ref): Add two operands for ARRAY_REF.
      	(build_unary_op): Set TREE_INVARIANT and TREE_CONSTANT for
      	COMPOUND_LITERAL_EXPR.
      	* coverage.c (tree_coverage_counter_ref): Add new operands
      	for ARRAY_REF.
      	* emit-rtl.c (component_ref_for_mem_expr): Add new operand
      	for COMPONENT_REF.
      	(set_mem_attributes_minus_bitpos): Use array_ref_low_bound
      	and array_ref_element_size.
      	(widen_memory_access):Use component_ref_field_offset.
      	* explow.c (update_nonlocal_goto_save_area): Add two operands
      	for ARRAY_REF.
      	* expr.c (array_ref_element_size, array_ref_low_bound): New functions.
      	(component_ref_field_offset): Likewise.
      	(get_inner_reference): Use them.
      	(expand_expr_real_1, case ARRAY_REF): Use array_ref_low_bound.
      	* fold-const.c (fold, case EQ_EXPR): Properly handle DECL_SIZE.
      	(fold_read_from_constant_string): Use array_ref_low_bound.
      	Verify that result is a character type.
      	(build_fold_indirect_ref): Add two operands for ARRAY_REF.
      	* function.c (expand_function_start): Likewise.
      	* gimple-low.c (expand_var_p): Delete duplicated line.
      	* gimplify.c: Add static decls for local functions.
      	(cgraph.h): Now included.
      	(create_tmp_var): Remove check for ARRAY_TYPE.
      	(copy_if_shared_r): Look at bounds and sizes of types.
      	(build_and_jump): Return alloc_stmt_list instead of build_empty_stmt.
      	(gimplify_exit_expr, shortcut_cond_expr): Likewise.
      	(gimplify_save_expr, gimple_push_cleanup): Likewise.
      	(gimplify_init_constructor): Likewise.
      	WANT_VALUE now bool.
      	If empty list with no result wanted, return GS_UNHANDLED.
      	Add additional operands for ARRAY_REF and COMPONENT_REF.
      	(canonicalize_component_ref): Convert to &array[L].
      	(gimplify_array_ref_to_plus): Use array_ref_element_size and
      	array_ref_lower_bound.
      	(build_addr_expr_with_type, build_addr_expr): New functions.
      	(gimplify_compound_lval): WANT_LVALUE now bool.
      	Major rework to allow handle_component_p and initialize and
      	gimplify new operands for ARRAY_REF, ARRAY_RANGE_REF, and
      	COMPONENT_REF.
      	(gimplify_array_ref): Deleted.
      	(gimplify_self_mod_expr): WANT_VALUE now bool.
      	(gimplify_modify_expr): Gimplify to_p and from_p later.
      	Factor out code into gimplify_modify_expr_rhs and call twice.
      	Move variable-size code earlier and handle PLACEHOLDER_EXPR.
      	(gimplify_modify_expr_rhs, gimplify_variable_sized_compare): New fns.
      	(gimplify_addr_expr, case VIEW_CONVERT_EXPR): New case.
      	(gimplify_expr, case ARRAY_REF): Delete special case.
      	Instead handle like COMPONENT_REF; also do ARRAY_RANGE_REF,
      	IMAGPART, and REALPART the same way.
      	(gimplify_expr, case VIEW_CONVERT_EXPR): New case.
      	(gimplify_expr): Call gimplify_variable_sized_compare if applicable.
      	Call alloc_stmt_list instead of build_empty_stmt.
      	Deal with _REF that's volatile.
      	(gimplify_type_sizes, gimplify_one_sizepos): New functions.
      	(unshare_body, unvisit_body): New functions.
      	(gimplify_body): Call them.
      	* stmt.c (expand_stack_alloc): Don't expand TYPE_MAX_VALUE.
      	* stor-layout.c (get_pending_sizes): Don't change SAVE_EXPR_CONTEXT.
      	* tree-alias-common.c (get_alias_var): Also skip ARRAY_RANGE_REF.
      	* tree-cfg.c (tree_node_can_be_shared): Treat ARRAY_RANGE_REF
      	like ARRAY_REF.
      	(verify_expr, case ADDR_EXPR): Use handled_component_p.
      	* tree-dfa.c (get_virtual_var): Likewise.
      	* tree-dump.c (dequeue_and_dump, case COMPONENT_REF, ARRAY_REF):
      	New cases to dump new operands; likewise for ARRAY_RANGE_REF.
      	* tree-eh.c (tree_could_trap, case ARRAY_RANGE_REF): Like ARRAY_REF.
      	* tree-gimple.c (is_gimple_addr_expr_arg): Add ARRAY_RANGE_REF
      	and INDIRECT_REF.
      	(get_base_address): Use handled_component_p.
      	* tree-gimple.h (gimplify_type_sizes, gimplify_one_sizepos): New.
      	* tree-line.c (walk_tree): Walk more things for types and decls.
      	* tree-mudflap.c (mf_build_check_statement_for): Add new operands
      	for ARRAY_REF and COMPONENT_REF.
      	(mx_xform_derefs_1): Clean up usage of decl sizes.
      	* tree-nested.c (build_addr): Use handled_component_p.
      	(walk_stmts, case CATCH_EXPR): Add missing "break".
      	(get_static_chain, get_frame_field): Add new operand for COMPONENT_REF.
      	(finalize_nesting_tree_1): Likewise.
      	(convert_nonlocal_reference, case ARRAY_RANGE_REF): Like ARRAY_REF
      	and process additional operands.
      	(convert_local_reference): Likewise.
      	* tree-outof-ssa.c (discover_nonconstant_array_refs_r): Treat
      	ARRAY_RANGE_REF similarly to ARRAY_REF.
      	* tree-pretty-print.c (dump_generic_node, case QUAL_UNION_TYPE): Handle
      	like RECORD_TYPE.
      	(dump_generic_node, case COMPONENT_REF): Print offset operand.
      	(dump_generic_node, case ARRAY_RANGE_REF): Treat like ARRAY_REF
      	and print lower bound and element size for both.
      	(op_prio, case ARRAY_RANGE_REF): Like ARRAY_REF.
      	* tree-sra.c (csc_build_component_ref): Add new operand.
      	(scalarize_call_expr): Use get_base_address.
      	* tree-ssa-ccp.c (widen_bitfield): Clean up size handling.
      	(maybe_fold_offset_to_array_ref): Rework to handle input having an
      	ARRAY_REF, refine handling of lower bound, and add new operands
      	for ARRAY_REF.
      	(maybe_fold_to_component_ref): Add new operand for COMPONENT_REF.
      	(maybe_fold_stmt_indirect): Only fold *&B to B if types match.
      	(maybe_fold_stmt_addition): Only handle constant lower bound.
      	* tree-ssa-operands.c (get_expr_operands): Minor rearrangements.
      	Treat ARRAY_REF and ARRAY_RANGE_REF the same; look at extra operands.
      	Look at new offset operand of COMPONENT_REF.
      	* tree-ssa.c (set_is_used): Use handled_component_p.
      	* tree.c (substitute_in_expr, case COMPONENT_REF): Add new operand.
      	(stabilize_reference, case COMPONENT_REF): Likewise.
      	(stabilize_reference, case ARRAY_RANGE_REF, ARRAY_REF): Similarly.
      	(recompute_tree_invariant_for_addr_expr): Completely rework to
      	be more precise.  Also set TREE_SIDE_EFFECTS.
      	(build1_stat, case ARRAY_EXPR): Don't handle TREE_SIDE_EFFECTS here.
      	(build2_stat, build3_stat, build4_stat): For references,
      	propagate TREE_THIS_VOLATILE.
      	(get_unwidened): Add new operand for COMPONENT_REF.
      	(get_narrower): Likewise; use host_integerp for DECL_SIZE.
      	* tree.def (COMPONENT_REF): Add new operand.
      	(ARRAY_REF, ARRAY_RANGE_REF): Add two new operands.
      	* tree.h (array_ref_element_size, array_ref_low_bound): New decls.
      	(component_ref_field_offset): Likewise.
      	* config/alpha/alpha.c (alpha_va_start): Add new op for COMPONENT_REF.
      	(alpha_gimplify_va_arg): Likewise.
      	* config/i386/i386.c (ix86_va_start, ix86_gimplify_va_arg): Likewise.
      	* config/i860/i860.c (i860_va_start, i860_va_arg): Likewise.
      	* config/iq2000/iq2000.c (iq2000_va_arg): Likewise.
      	* config/mips/mips.c (mips_va_start, mips_va_arg): Likewise.
      	* config/rs6000/rs6000.c (rs6000_va_start, rs6000_gimplify_va_arg):
      	Likewise.
      	* config/s390/s390.c (s390_va_start, s390_gimplify_va_arg): Likewise.
      	* config/sh/sh.c (sh_va_start, sh_va_arg): Likewise.
      	* config/stormy16/stormy16.c (xstormy1_expand_builin_va_start):
      	Likewise.
      	(xstormy16_expand_builtin_va_arg): Likewise.
      	* config/xtensa/xtensa.c (xtensa_va_start, xtensa_va_arg): Likewise.
      
      	* cp/call.c (build_vfield_ref): Add new operand for COMPONENT_REF.
      	(build_new_method_call): Likewise.
      	* cp/decl.c (local_variable_p_walkfn): Don't walk into types.
      	* cp/decl2.c (grok_array_decl): Add new operands for ARRAY_REF.
      	(build_anon_union_vars): Add new operand for COMPONENT_REF.
      	* cp/init.c (buld_new): Add new operand for ARRAY_REF.
      	* cp/method.c (do_build_copy_constructor): New op for COMPONENT_REF.
      	(do_build_assign_ref): Likewise.
      	* cp/parser.c (cp_parser_direct_new_declarator): Add new operands
      	for ARRAY_REF.
      	(cp_parser_direct_declarator): Likewise.
      	* cp/pt.c (tsubst): Likewise.
      	(tsubst_copy, tsubst_copy_and_build): Likewise; also add new operand
       	for COMPONENT_REF.
      	* cp/semantics.c (finish_non_static_data_member): Add new operand
      	for COMPONENT_REF.
      	* cp/typeck.c (build_class_member_access_expr): Likewise.
      	(build_class_member_access_expr, finish_class_member_access_expr):
      	Likewise.
      	(build_ptrmemfunc_access_expr): Likewise.
      	(build_array_ref): Add new operands for ARRAY_REF.
      	* cp/typeck2.c (split_nonconstant_init_1): Likewise; COMPONENT_REF too.
      	* cp/tree.c (count_trees_r, no_linkage_helper): Don't walk in types.
      
      	* fortran/f95-lang.c (LANG_HOOKS_GIMPLE_BEFORE_INLINING): Deleted.
      	* fortran/trans-array.c (gfc_conv_descriptor_data): Add operand
      	for COMPONENT_REF.
      	(gfc_conv_descriptor_offset, gfc_conv_descriptor_dtype): Likewise.
      	(gfc_conv_descriptor_dimension, gfc_conv_descriptor_stride): Likewise.
      	(gfc_conv_descriptor_lbound, gfc_conv_descriptor_ubound): Likewise.
      	* fortran/trans-common.c (create_common): Likewise.
      	* fortran/trans-expr.c (gfc_conv_component_ref): Likewise.
      	* fortran/trans-io.c (set_parameter_value): Likewise.
      	(set_parameter_ref, set_string, set_flag, io_result): Likewise.
      	(transfer_expr): Likewise.
      	* fortran/trans-decl.c (gfc_trans_auto_character_variable):
      	Set up to get DECL_SIZE and DECL_SIZE_UNIT gimplified.
      	(gfc_simplify_function): New function.
      	(gfc_generate_function-code): Properly handle nested functions.
      	* fortran/trans.c (gfc_build_array_ref): Add two new operands
      	for ARRAY_REF.
      
      	* java/class.c (build_class_ref): Add new operand for COMPONENT_REF.
      	(build_static_field_ref): Likewise and add new operands for ARRAY_REF.
      	* java/constants.c (build_ref_from_constant_pool): Likewise.
      	* java/expr.c (build_java_array_length_access): Likewise.
      	(build_get_class, build_field_ref, build_known_method_ref): Likewise.
      	(invoke_build_dtable, build_invokevirtual): Likewise.
      	(build_invokeinterface, java_expand_expr): Likewise.
      	(emit_init_test_initialization): Likewise.
      	* java/java-gimplify.c (java_gimplify_new_array_init): Likewise.
      	* java/parse.y (make_qualifed_name, build_array_ref): Likewise.
      
      	* objc/ojbc-act.c (generate_static_references): Add additional
      	operands to ARRAY_REF.
      	(generate_strings, build_method_prototype_list_template): Likewise.
      	(generate_protocol_list): Likewise.
      
      From-SVN: r83474
      Richard Kenner committed
  6. 17 Jun, 2004 1 commit
    • tree-cfg.c (tree_make_forwarder_block): Use SET_PHI_RESULT. · d00ad49b
      2004-06-16  Andrew MacLeod  <amacleod@redhat.com>
      
      	* tree-cfg.c (tree_make_forwarder_block):  Use SET_PHI_RESULT.
      	* tree-flow-inline.h (get_use_op_ptr):  Return a use_operand_p.
      	(get_use_from_ptr, get_def_from_ptr):  New.  Return operand pointers.
      	(get_def_op_ptr):  Return a def_operand_p instead of a 'tree *'.
      	(get_v_may_def_result_ptr):  Return a def_operand_p.
      	(get_v_may_def_op_ptr, get_vuse_op_ptr):   Return a use_operand_p.
      	(get_v_must_def_op_ptr):  Return a def_operand_p.
      	(get_phi_result_ptr):  New.  Return a pointer to the result of a PHI.
      	(get_phi_arg_def_ptr):  New.  Return a pointer to an argument of a PHI.
      	(phi_element_for_edge):  Remove.
      	* tree-flow.h (propagate_value, replace_exp):  Change prototype.
      	(propagate_tree_value):  Add new prototype.
      	(phi_element_for_edge):  Remove prototype.
      	* tree-into-ssa.c (mark_def_sites):  Use new operand types.
      	(prepare_operand_for_rename):  Split into two functions.
      	(prepare_use_operand_for_rename):  Prepare use operands.
      	(prepare_def_operand_for_rename):  Prepare def operands.
      	(rewrite_stmt):  Use new operand types.
      	(rewrite_operand):  Use new operand types, change parameter type.
      	* tree-outof-ssa.c (replace_variable):  Split into two functions.
      	(replace_use_variable):  Rewrite uses.
      	(replace_def_variable):  Rewrite defs.
      	(rewrite_trees, rewrite_vars_out_of_ssa):  Use new operand types.
      	* tree-phinodes.c (make_phi_node, resize_phi_node):  Use new types.
      	(add_phi_arg, remove_phi_arg_num):  Use new operand types.
      	* tree-ssa-ccp.c (substitute_and_fold):  Use new operand types.
      	(ccp_fold, replace_uses_in):  Use new operand types.
      	* tree-ssa-copy.c (replace_ssa_names):  Rename to replace_ssa_names_ann
      	and no longer set the value, change parameter type.
      	(replace_exp_1):  Use new operand types.
      	(propagate_value):  Change parameter type, use new operand types.
      	(propagate_tree_value):  Propagate_value without SSA operands.
      	(replace_exp, cprop_operand, cprop_into_stmt):  Use new operand types.
      	(cprop_into_successor_phis):  Use new operand types.
      	* tree-ssa-dom.c (thread_across_edge):  Use new operand types.
      	(eliminate_redundant_computations):  Use new operand types.
      	* tree-ssa-dse.c (fix_phi_uses):  Use new operand_types.
      	(fix_stmt_v_may_defs):  Use new operand_types.
      	* tree-ssa-live.c (create_ssa_var_map):  Use new operand_types.
      	(build_tree_conflict_graph):  Use new operand_types.
      	* tree-ssa-loop.c (duplicate_blocks):  Use PHI_ARG_DEF_FROM_EDGE.
      	* tree-ssa-operands.c (struct freelist_d):  Remove.
      	(check_optype_freelist, add_optype_freelist):  Remove.
      	(allocate_def_optype, allocate_use_optype, allocate_v_may_def_optype,
      	allocate_vuse_optype, allocate_v_must_def_optype):  Call ggc_alloc.
      	(free_uses, free_defs, free_vuses, free_v_may_defs, free_v_must_defs):
      	Call ggc_free instead of add_optype_freelist.
      	(init_ssa_operands, fini_ssa_operands):  Remove free list code.
      	(finalize_ssa_defs, finalize_ssa_uses):  Set new use/def operands.
      	* tree-ssa-operands.h (struct def_optype_d):  Change underlying type.
      	(struct use_optype_d):  Change underlying type.
      	(def_operand_p, use_operand_p):  New types for pointers to operands.
      	(USE_OP, DEF_OP, V_MAY_DEF_RESULT, V_MAY_DEF_OP, VUSE_OP,
      	V_MUST_DEF_OP):  Use new pointer type instead of dereferencing directly.
      	(USE_FROM_PTR, DEF_FROM_PTR):  New macros to "dereference" operand
      	pointer types.
      	(SET_USE, SET_DEF):  New macros to set operands from their pointer.
      	(SET_USE_OP, SET_DEF_OP, SET_V_MAY_DEF_RESULT, SET_V_MAY_DEF_OP,
      	SET_VUSE_OP, SET_V_MUST_DEF_OP): New SET routines for operands.
      	(PHI_RESULT_PTR, PHI_RESULT, SET_PHI_RESULT):  Macros to manage the
      	PHI result as an operand.
      	(PHI_ARG_DEF_PTR, PHI_ARG_DEF, SET_PHI_ARG_DEF, PHI_ARG_DEF_FROM_EDGE,
      	PHI_ARG_DEF_PTR_FROM_EDGE):  Macros to manage the PHI arguments.
      	* tree-ssa-pre.c (eliminate):  Call propagate_tree_value.
      	* tree-tailcall.c (independent_of_stmt_p, propagate_through_phis):  Use
      	PHI_ARG_DEF_FROM_EDGE.
      	* tree.h (PHI_RESULT):  Renamed to PHI_RESULT_TREE.
      	(PHI_ARG_DEF):  Renamed to PHI_ARG_DEF_TREE.
      
      From-SVN: r83298
      Andrew MacLeod committed
  7. 16 Jun, 2004 1 commit
    • fold-const.c (swap_tree_comparison): No longer static. · fd660b1b
              * fold-const.c (swap_tree_comparison): No longer static.
              (tree_swap_operands_p): Similarly.  Return true if both operands
              are SSA_NAMEs and the first operand has a higher version number than
              the second operand.
              * tree.h (swap_tree_comparison): Prototype.
              (tree_swap_operands_p): Prototype.
              * tree-ssa-operands.c (get_expr_operands): For commutative
              operators and relational comparisons, canonicalize the
              order of the operands.
      
              * gcc.dg/tree-ssa/20040615-1.c: New test.
              * gcc.dg/tree-ssa/20030824-1.c: Update expected output to
              be less sensitive to operand ordering.
              * gcc.dg/tree-ssa/20030824-2.c: Likewise.
      
      From-SVN: r83224
      Jeff Law committed
  8. 11 Jun, 2004 2 commits
    • tree-ssa-operands.c (get_stmt_operands): Clear makes_aliased_loads and makes_aliased_stores. · 9098a3ec
              * tree-ssa-operands.c (get_stmt_operands): Clear makes_aliased_loads
              and makes_aliased_stores.
      
      From-SVN: r83001
      Richard Henderson committed
    • i386.h (EXPAND_BUILTIN_VA_ARG): Just abort. · 67c605a5
              * config/i386/i386.h (EXPAND_BUILTIN_VA_ARG): Just abort.
              * config/i386/i386.c (ix86_va_arg): Remove.
              * config/rs6000/rs6000.h (EXPAND_BUILTIN_VA_ARG): Just abort.
              * config/rs6000/rs6000.c (rs6000_va_arg): Remove.
              * config/alpha/alpha.h (EXPAND_BUILTIN_VA_ARG): Just abort.
              * config/alpha/alpha.c (alpha_va_arg): Remove.
              * config/sparc/sparc.h (EXPAND_BUILTIN_VA_ARG): Just abort.
              * config/sparc/sparc.c (sparc_va_arg): Remove.
      
              * tree-ssa-operands.c (get_stmt_operands): Use a V_MAY_DEF if the
              assignment might throw.
              * tree-eh.c (tree_could_throw_p): Support non-call exceptions in
              expressions.
      
      From-SVN: r82992
      Jason Merrill committed
  9. 10 Jun, 2004 1 commit
    • tree-ssa.texi: Remove references to VDEF and add descriptions of V_MAY_DEF and V_MUST_DEF. · a32b97a2
      	* doc/tree-ssa.texi: Remove references to VDEF and add descriptions
      	of V_MAY_DEF and V_MUST_DEF.
      	* tree-dfa.c (dfa_stats_d): Add num_v_must_defs and rename
      	num_vdefs to num_v_may_defs.
      	(compute_immediate_uses_for_stmt): Rename occurences of vdef
      	to v_may_def.
      	(redirect_immediate_uses): Ditto.
      	(dump_dfa_stats): Ditto. Also added code to dump num_v_must_defs.
      	(collect_dfa_stats_r): Rename occurences of vdef to v_may_def.
      	Also add code to sum up the number of v_must_defs.
      	(vdefs_disappeared_p): Replace with...
      	(v_may_defs_disappeared_p): This.
      	(v_must_defs_disappeared_p): New function.
      	(mark_new_vars_to_rename): Rename occurences of vdef to v_may_def.
      	Also add code to mark new variables found in V_MUST_DEFs for
      	renameing.
      	* tree-flow.h (stmt_ann_d): Add v_must_def_ops and replace
      	vdef_ops to v_may_def_ops.
      	(get_vdef_ops): Replace with...
      	(get_v_may_def_ops): This.
      	* tree-flow-inline.h (get_vdef_ops): Replace with...
      	(get_v_may_def_ops): This.
      	(get_v_must_def_ops): New function.
      	(get_vdef_result_ptr): Replace with...
      	(get_v_may_def_result_ptr): This.
      	(get_vdef_op_ptr): Ditto with...
      	(get_v_may_def_op_ptr); This.
      	(get_v_must_def_op_ptr): New function.
      	* tree-into-ssa.c (mark_def_sites): Rename occurences of vdef
      	to v_may_def. Also add code to mark statements with
      	V_MUST_DEFs as definition sites.
      	(rewrite_stmt): Rename occurences of vdef to v_may_def. Also
      	add code to register new V_MUST_DEFs made by the statement.
      	* tree-outof-ssa.c (VIRTUAL_PARTITION): Update comments.
      	(check_replaceable): Rename occurences of vdef to v_may_def. Also
      	add check for V_MUST_DEFs.
      	(find_replaceable_in_bb): Ditto.
      	* tree-pretty-print.c (dump_vops): Rename occurences of vdef
      	to v_may_def. Also add code to dump V_MUST_DEFs.
      	* tree-sra.c (mark_all_vdefs): Replace with...
      	(mark_all_v_may_defs): This.
      	(mark_all_v_must_defs): New function.
      	(create_scalar_copies): Replace call to mark_all_vdefs with
      	calls to mark_all_v_may_defs and mark_all_v_must_defs.
      	(scalarize_structures): Rename occurences of vdef to v_may_def.
      	Also add a check for V_MUST_DEFs.
      	(scalarize_modify_expr): Rename occurences of vdef to v_may_def.
      	* tree-ssa-alias.c (global_var): Update comment.
      	(compute_may_aliases): Ditto.
      	(compute_points_to_and_addr_escape): Rename occurences of vdef
      	to v_may_def. Also add code to mark variables in V_MUST_DEF
      	operands as being written to.
      	(group_aliases): Update comment.
      	(maybe_create_global_var): Ditto.
      	* tree-ssa.c (verify_ssa): Rename occurences of vdef to v_may_def.
      	Also add a check for V_MUST_DEFs on GIMPLE registers.
      	(replace_immediate_uses): Rename occurences of vdef to v_may_def.
      	* tree-ssa-ccp.c (visit_stmt): Rename occurences of vdef
      	to v_may_def. Also add code to mark all V_MUST_DEF operands
      	VARYING.
      	(initialize): Ditto.
      	(set_rhs): Rename occurences of vdef to v_may_def. Also add
      	code to update SSA_NAMEs in V_MUST_DEFs.
      	* tree-ssa-copy.c (cprop_into_stmt): Rename occurences of vdef
      	to v_may_def.
      	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Rename
      	occurences of vdef to v_may_def. Also add code to mark statements
      	with V_MUST_DEFs as necessary.
      	(propagate_necessity): Rename occurences of vdef to v_may_def.
      	* tree-ssa-dom.c (redirect_edges_and_update_ssa_graph): Rename
      	occurences of vdef to v_may_def. Also add code to mark operands
      	in V_MUST_DEFs for renaming.
      	(eliminate_redundant_computations): Rename occurences of vdef
      	to v_may_def.
      	(record_equivalences_from_stmt): Rename occurences of vdef
      	to v_may_def. Also add code to record VUSEs for V_MUST_DEFs.
      	(optimize_stmt): Remove unnesessary variable vdefs. Update
      	comment.
      	(register_definitions_for_stmt): Rename occurences of vdef
      	to v_may_def. Also add code to register definitions made with
      	V_MUST_DEFs.
      	* tree-ssa-dse.c (fix_stmt_vdefs): Replace with...
      	(fix_stmt_v_may_defs): This.
      	(fix_phi_uses): Rename occurences of vdef to v_may_def.
      	(dse_optimize_stmt): Ditto.
      	* tree-ssa-live.c (create_ssa_var_map): Rename occurences of vdef
      	to v_may_def. Also add code to mark V_MUST_DEF operands as being
      	used in virtual operators.
      	* tree-ssa-loop.c (mark_defs_for_rewrite): Rename occurences of
      	vdef to v_may_def. Also add code to mark V_MUST_DEF operands for
      	renaming.
      	* tree-ssa-operands.c (opf_kill_def): New flag for killing
      	definitions.
      	(build_vdefs): Renamed to...
      	(build_v_may_defs): This.
      	(build_v_must_defs): New variable.
      	(voperands_d): Add v_must_def_ops and replace vdef_ops with
      	v_may_def_ops.
      	(append_vdef): Replace with...
      	(append_v_may_def): This.
      	(append_v_must_def): New function.
      	(NUM_FREE): Increment for V_MUST_DEF
      	(optype_freelist): Increment its size for V_MUST_DEF
      	(allocate_vdef_optype): Replace with...
      	(allocate_v_may_def_optype): This.
      	(allocate_v_must_def_optype): New function.
      	(free_vdefs): Replace with...
      	(free_v_may_defs): This.
      	(free_v_must_defs): New function.
      	(remove_vdefs): Replace with...
      	(remove_v_may_defs): This.
      	(remove_v_must_defs): New function.
      	(init_ssa_operands): Rename occurences of vdef to v_may_def. Also
      	add code to initialize build_v_must_defs.
      	(finalize_ssa_vdefs): Replace with...
      	(finalize_ssa_v_may_defs): This.
      	(finalize_ssa_vuses): Rename occurences of vdef to v_may_def.
      	(finalize_ssa_v_must_defs): New function.
      	(finalize_ssa_stmt_operands): Replace call to finalize_ssa_vdefs
      	with calls to finalize_ssa_v_may_defs and finalize_ssa_v_must_defs.
      	(verify_start_operands): Rename occurences of vdef to v_may_def.
      	Also add check for build_v_must_defs.
      	(get_stmt_operands): Rename occurences of vdef to v_may_def.
      	Also add code to handle V_MUST_DEFs and to use opf_kill_def for
      	killing definitions.
      	(get_expr_operands): Update comment and use opf_kill_def for
      	killing definitions.
      	(add_stmt_operand): Replace code that appends VDEFs with code
      	that appends V_MUST_DEFs when opf_kill_def is set and V_MAY_DEFs
      	otherwise.
      	(add_call_clobber_ops): Update comments.
      	* tree-ssa-operands.h (vdef_optype_d): Replace with...
      	(v_may_def_optype_d): This.
      	(v_must_def_optype_d): New structure.
      	(VDEF_OPS): Replace with...
      	(V_MAY_DEF_OPS): This.
      	(STMT_VDEF_OPS): Same with...
      	(STMT_V_MAY_DEF_OPS): This.
      	(NUM_VDEFS): And...
      	(NUM_V_MAY_DEFS): This.
      	(VDEF_RESULT_PTR): As well as...
      	(V_MAY_DEF_RESULT_PTR): This.
      	(VDEF_RESULT): Same goes for...
      	(V_MAY_DEF_RESULT): This.
      	(VDEF_OP_PTR): And...
      	(V_MAY_DEF_OP_PTR): This.
      	(VDEF_OP): And...
      	(V_MAY_DEF_OP): This.
      	(V_MUST_DEF_OPS): New macro.
      	(STMT_V_MUST_DEF_OPS): Ditto.
      	(NUM_V_MUST_DEFS): Ditto.
      	(V_MUST_DEF_OP_PTR): Ditto.
      	(V_MUST_DEF_OP): Ditto.
      	(remove_vdefs): Replace signature with...
      	(remove_v_may_defs): This.
      	(remove_v_must_defs): New function signature.
      	* tree-ssa-pre.c (subst_phis): Replace call to remove_vdefs
      	with calls to remove_v_may_defs and remove_v_must_defs.
      	(process_left_occs_and_kills): Rename occurences of vdef to v_may_def.
      	Also add code that marks left occurences of operands in V_MUST_DEFs.
      	* tree-tailcall.c (find_tail_calls): Rename occurences of vdef
      	to v_may_def. Also add check for V_MUST_DEFs.
      	(eliminate_tail_call):Rename occurences of vdef to v_may_def.
      
      testsuite:
      
      	* gcc.dg/tree-ssa/20031015-1.c: Scan for
      	V_MAY_DEF instead of VDEF.
      	* gcc.dg/tree-ssa/20040517-1.c: Ditto.
      
      From-SVN: r82947
      Brian Booth committed
  10. 09 Jun, 2004 1 commit
    • Move SSA_NAME annotations into tree_ssa_name. · 313679b0
      	* tree-dfa.c (create_ssa_name_ann): Remove.
      	* tree-flow-inline.h (ssa_name_ann, get_ssa_name_ann): Remove.
      	* tree-flow.h (enum tree_ann_type): Remove SSA_NAME_ANN.
      	(struct ssa_name_ann_d): Remove.
      	(union tree_ann_d): Update.
      	(ssa_name_ann_t): Remove.
      	* tree-ssa-alias.c: (get_ptr_info): New local function.
      	Replace references to ssa_name_ann_t with struct ptr_info_def.
      	* tree-ssa-operands.c (get_expr_operands): Likewise.
      	* tree.h (SSA_NAME_PTR_INFO): Define.
      	(struct ptr_info_def): Declare.
      	(struct tree_ssa_name): Add field 'ptr_info'.
      
      From-SVN: r82864
      Diego Novillo committed
  11. 17 May, 2004 1 commit
  12. 14 May, 2004 1 commit
    • tree.def (documentation): Remove mention of class 'b'. · 90afe2c9
      	* tree.def (documentation): Remove mention of class 'b'.
      	(BLOCK): Now in class 'x'.
      	* c-common.c (verify_tree): Remove case 'b'.
      	* c-typeck.c (same_translation_unit_p): Change 'b' to 'x'.
      	* calls.c (calls_function_1): Control cannot get past the switch
      	when exp is a BLOCK.
      	* print-tree.c (print_node): Move code for class 'b' to the class
      	'c'/'x' switch, as case BLOCK.
      	* tree.c (tree_size, make_node_stat, tree_node_structure): Likewise.
      	(unsafe_for_reeval, substitute_placeholder_in_expr)
      	(stabilize_reference_1): Remove case 'b'.
      	* tree-browser.c (browse_tree): Change all tests for TREE_CODE_CLASS
      	of something being 'b' to tests for TREE_CODE of something being
      	BLOCK.
      	* tree-ssa-operands.c (get_expr_operands): Likewise.
      ada:
      	* trans.c (gnat_stabilize_reference_1): Remove case 'b'.
      
      From-SVN: r81831
      Zack Weinberg committed
  13. 13 May, 2004 1 commit