X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2FChangeLog;h=03c589c5df341827c0c457fa88efa142adeafc72;hb=c1dc02de6c120c546fedbe5348c4f5e78ef95aa6;hp=9cc5d53db731c84f4748136e6aa97f08f76319bf;hpb=b57e33a433988215880ee38d0f392bba7a5c8726;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9cc5d53db73..03c589c5df3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,714 @@ +2004-06-25 Paul Brook + + * target-def.h (TARGET_CXX_GUARD_TYPE, TARGET_CXX_GUARD_MASK_BIT, + TARGET_CXX): Define. + (TARGET_INITIALIZER): Use TARGET_CXX. + * target.h (struct gcc_target): Add struct cxx. + * targhooks.h (default_cxx_guard_type): Add prototype. + * targhooks.c (default_cxx_guard_type): New function. + * config/arm/arm.c (TARGET_CXX_GUARD_TYPE, TARGET_CXX_GUARD_MASK_BIT): + Define. + (arm_cxx_guard_type, arm_cxx_guard_mask_bit): New functions. + * doc/tm.texi: Document TARGET_CXX_GUARD_TYPE and + TARGET_CXX_GUARD_MASK_BIT. + +2004-06-25 Devang Patel + + * config/rs6000/darwin.h (CC1_SPEC): Handle -gused and -gfull. + * config/i386/darwin.h (CC1_SPEC): Same. + +2004-06-25 Mark G. Adams + + * dbxout.h: Add include guards + +2004-06-25 Paul Brook + + * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_EABI__. + +2004-06-25 Richard Earnshaw + + * arm.c (arm_arch4t): New variable. + (arm_override_options): Initialize it. If compiling for armv5 or + higher clear TARGET_INTERWORK. + (output_call): Abort if called for armv5. Use BX if it's available. + (output_call_mem): Use BLX if available and ensure that all armv5 + code is interworking safe. + (output_return_instruction): Always use BX in preference to MOV if + it's available. + (arm_output_epilogue): Likewise. + (arm_final_prescan_insn): Never conditionally call a subroutine + on armv5. + * arm.h (arm_arch4t): Declare. + * arm.md (call_reg_armv5, call_value_reg_armv5): New. + (call_reg_arm, call_value_reg_arm): Renamed from call_reg and + call_value_reg respectively. + (call_reg_thumb_v5, call_value_reg_thumb_v5): New. + (call_reg_thumb, call_value_reg_thumb): Renamed from call_indirect + and call_value_indirect respectively. + +2004-06-25 Richard Sandiford + + * config/mips/mips.c (reg_or_const_float_1_operand): Reimplement + in terms of const_float_1_operand. + +2004-06-25 Richard Sandiford + + PR target/16144 + * config/mips/mips.md (divsf, divdf): Don't FAIL if the first operand + is 1.0; force it into a register instead. + +2004-06-25 Bernardo Innocenti + + * config/m68k/m68k.h: Restore valid comment removed by mistake with + the recent m68k comments cleanup. + +2004-06-24 Richard Kenner + + * c-gimplify.c (gimplify_for_stmt): Use gimplify_and_add. + * gimplify.c (internal_get_tmp_var, gimplify_return_expr): Likewise. + (gimplify_loop_expr, gimplify_init_constructor): Likewise. + (gimplify_self_mod_expr, gimplify_cond_expr): Likewise. + + PR/16131 + * gimplify.c (voidify_wrapper_expr): Allow TARGET_EXPR. + + * gimplify.c: Remove unneeded forward declarations. + + * gimplify.c (append_to_compound_expr): Deleted. + * tree-gimple.h (append_to_compound_expr): Deleted. + + * fold-const.c (fold_addr_expr_with_type): Look through all + valid LHS modifiers to find a base to mark addressable. + + * tree.h (debug_find_tree): Add declaration. + * tree-inline.c (debug_find_tree): Remove extern declaration. + +2004-06-24 Eric Christopher + + * config/rs6000/rs6000.md: Apply change mistakenly + deleted with 2004-06-22 patch. + +2004-06-24 Richard Henderson + + * c-decl.c (c_in_iteration_stmt, c_in_case_stmt): Remove. + (c_break_label, c_cont_label): New. + (start_function): Update initializations. + (c_push_function_context): Update saves. + (c_pop_function_context): Update restores. + * c-parse.in: Update expected conflicts. + (stmt_count, compstmt_count): Remove. Remove all updates. + (if_prefix, simple_if, do_stmt_start): Remove. + (lineno_labeled_stmt): Remove. + (lineno_labels): New. + (c99_block_lineno_labeled_stmt): Use it. + (lineno_stmt, lineno_label): Don't clear EXPR_LOCUS before calling + annotate_with_locus. + (select_or_iter_stmt): Replace by ... + (condition, if_statement_1, if_statement_2, if_statement, + start_break, start_continue, while_statement, do_statement, + for_cond_expr, for_incr_expr, for_statement, switch_statement): New. + (stmt): Split out ... + (stmt_nocomp): ... this. Use c_finish_bc_stmt, c_finish_goto_label, + c_finish_goto_ptr. + * c-semantics.c (add_stmt): Don't add line numbers to labels. + * c-tree.h: Update prototypes. + (struct language_function): Remove x_in_iteration_stmt, x_in_case_stmt; + add x_break_label, x_cont_label, x_switch_stack. + (c_switch_stack): Declare. + * c-typeck.c (c_finish_goto_label, c_finish_goto_ptr): New. + (c_finish_return): Return the statement. + (c_switch_stack): Rename from switch_stack; export. + (if_elt, if_stack, if_stack_space, if_stack_pointer): Remove. + (c_begin_if_stmt, c_finish_if_cond, c_finish_then, c_begin_else, + c_finish_else): Remove. + (c_finish_if_stmt): Rewrite to perform the entire operation. + (c_begin_while_stmt, c_finish_while_stmt_cond, c_finish_while_stmt, + c_begin_for_stmt, c_finish_for_stmt_init, c_finish_for_stmt_cond, + c_finish_for_stmt_incr, c_finish_for_stmt): Remove. + (c_finish_loop): New. + (c_finish_bc_stmt): New. + (c_finish_expr_stmt): Return the statement. Split out... + (c_process_expr_stmt): ... this. Don't add locus to error marks. + * gimplify.c (gimplify_cond_expr): Accept NULL type statements. + * tree-gimple.c (is_gimple_stmt): Likewise. + * tree-pretty-print.c (dump_generic_node ): Likewise. + (print_struct_decl): Delete empty compound statement. + * objc/objc-act.c (objc_build_throw_stmt): Return the statement. + * objc/objc-act.h: Update decl. + +2004-06-24 Richard Kenner + + * tree-pretty-print.c (dump_generic_node, case TYPE_DECL): + Don't look at TYPE_METHODS unless RECORD_TYPE or UNION_TYPE. + +2004-06-24 Andrew Pinski + + * objc-act.c (build_objc_method_call): Save the lookup_object + so we do not call it twice. + +2004-06-24 Richard Henderson + + * tree-ssa-dom.c (real_avail_expr_hash): New. + (tree_ssa_dominator_optimize): Use it in the htab. + +2004-06-24 Frank Ch. Eigler + + * tree-mudflap.c (mx_register_decls): Add third (type) argument + to synthesized __mf_unregister call. + +2004-06-24 Roger Sayle + + PR middle-end/15239 + * expmed.c (expand_mult): Remove artificial restriction on the + maximum cost of a synthetic multiplication sequence. + +2004-06-24 Eric Christopher + + * combine.c (distribute_notes): Don't delete sets to + global register variables. + +2004-06-24 Jakub Jelinek + + * config/i386/i386.md (ffsdi2, clzdi2): New expanders. + (ffs_rex64): New splitter. + (ffsdi_1, ctzdi2, bsr_rex64): New instructions. + +2004-06-24 Andrew Pinski + + * config/darwin7.h (MATH_LIBRARY): Remove. + (LIB_SPEC): Define. + * config/darwin.h (MATH_LIBRARY): Define always to empty. + (LIB_SPEC): Only define if not already defined. + +2004-06-24 Revital Eres + + * loop-iv.c (iv_analyze, simple_set_p): Support for identifying + shifts of induction variable. + (iv_shift): New function. + +2004-06-24 Richard Henderson + + * gimplify.c (gimplify_body): Watch for body vanishing. + +2004-06-24 Jeff Law + + * tree-ssa-dom.c (record_dominating_conditions): New function. + (dom_opt_finalize_block, get_eq_expr_value): Use it. + +2004-06-24 Richard Sandiford + + * calls.c (shift_returned_value): Fix handling of non-integer + TYPE_MODEs. + +2004-06-24 Ulrich Weigand + + * c-decl.c (finish_function): Do not check for DEFAULT_MAIN_RETURN. + * system.h (DEFAULT_MAIN_RETURN): Poison. + * doc/tm.texi (DEFAULT_MAIN_RETURN): Remove documentation. + +2004-06-24 Ben Elliston + + * doc/cfg.texi (Edges): Fix typo. + +2004-06-24 Paul Brook + + * config/arm/arm.c (arm_output_epilogue): Remove excess checks. + +2004-06-23 Andrew Pinski + + PR middle-end/15988 + * fold-const.c (fold_convert): Types which are compatible + can be converted with only a NOP_EXPR. + +2004-06-24 Alan Modra + + * calls.c (expand_call): Call INIT_CUMULATIVE_ARGS earlier, and + pass raw n_named_args to it. + * targhooks.c: Formatting. + (hook_bool_CUMULATIVE_ARGS_false): Correct comment. + +2004-06-23 Richard Henderson + + * c-gimplify.c (gimplify_decl_stmt): Push gimplify_one_sizepos inside + non-constant size check. Gimplify the type too. Tidy building + BUILT_IN_STACK_ALLOC call. + +2004-06-23 Roger Sayle + + * c-common.c (expand_unordered_cmp): Delete. + (expand_tree_builtin): Delete. + * c-common.h (expand_tree_builtin): Delete function prototype. + * c-typeck.c (build_function_call): Don't call expand_tree_builtin. + +2004-06-23 Richard Henderson + + * gimplify.c (gimplify_compound_lval): Don't set ARRAY_REF or + COMPONENT_REF variable fields unless they're non-constant. + +2004-06-23 Robert Millan + + * config.gcc: Merge kfreebsd*-gnu with linux* and add knetbsd*-gnu. + * config/i386/linux.h: Allow overriding of LINK_EMULATION, + DYNAMIC_LINKER and register names in sc_ structure. + * config/kfreebsd-gnu.h: New. kfreebsd-gnu followup for linux.h. + * config/i386/kfreebsd-gnu.h: New. Ditto for i386-kfreebsd-gnu. + * config/knetbsd-gnu.h: New. Ditto for knetbsd-gnu. + * config/i386/knetbsd-gnu.h: New. Ditto for i386-knetbsd-gnu. + + * config/kfreebsdgnu.h: Remove. + * config/t-kfreebsd-gnu: Likewise. + * config/i386/kfreebsdgnu.h: Likewise. + +2004-06-23 Eric Christopher + + * fold-const.c (make_range): Cleanup type checking through function. + Remove orig_type. Replace with checks to exp_type and arg0_type. + Clarify comment when converting from unsigned to signed. + +2004-06-23 Eric Christopher + + * config/mips/mips.c (mips_use_dfa_pipeline_interface): Add R3000. + * config/mips/mips.md: Remove R3000 scheduling description. + * config/mips/3000.md: New file. + +2004-06-23 Ulrich Weigand + + * config/s390/s390-protos.h (s390_emit_compare): Add prototype. + (s390_emit_jump): Likewise. + * config/s390/s390.c (s390_emit_compare): New function. + (s390_emit_jump): Likewise. + * config/s390/s390.md ("beq", "bne", "bgt", "bgtu", "blt", "bltu", + "bge", "bgeu", "ble", "bleu", "bunordered", "bordered", "buneq", + "bungt", "bunlt", "bunge", "bunle", "bltgt"): Use s390_emit_compare + and s390_emit_jump. + ("cjump"): Remove, replace by ... + ("*cjump_64", "*cjump_31"): ... these insns. Improve length default. + ("icjump", "*icjump_64", "*icjump_31"): Likewise. + ("trap"): Fix type attribute. + ("conditional_trap"): Use s390_emit_compare. + ("doloop_si"): Remove, replace by ... + ("doloop_si64", "doloop_si31"): ... these new insn_and_split. + Merge existing splitter into insn_and_split. Improve length default. + ("doloop_di"): Merge with existing splitter into insn_and_split. + ("doloop"): Adapt. + ("jump"): Convert to expander. Use s390_emit_jump. + ("*jump_64", "*jump_31"): New insns. Improve length default. + +2004-06-23 Wu Yongwei + + * gthr-win32.h (__GTHREAD_MUTEX_INIT_DEFAULT): Adjust. + (__gthr_i486_lock_cmp_xchg): New inline assembly function. + (__GTHR_W32_InterlockedCompareExchange): New macro to choose a + suitable function for interlocked compare-and-exchange. + (__gthread_mutex_trylock): Use + __GTHR_W32_InterlockedCompareExchange. + (__gthread_mutex_init_function, __gthread_mutex_lock, + __gthread_mutex_trylock, __gthread_mutex_unlock): Adjust the + initial counter value to work correctly under Windows 95. + * config/i386/gthr-win32.c: Adjust include order. + Define __GTHREAD_I486_INLINE_LOCK_PRIMITIVES before including + gthr-win32.h. + (__gthr_win32_mutex_init_function, __gthr_win32_mutex_lock, + __gthr_win32_mutex_trylock, __gthr_win32_mutex_unlock): Adjust + to match inline versions in gthr-win32.h. + +2004-06-23 David Edelsohn + + * config/rs6000/rs6000.c (rs6000_use_dfa_pipeline_interface): Delete. + (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Redefine a hook_int_void_1. + (insvdi_rshift_rlwimi_p): New function. + * config/rs6000/rs6000.md (insvdi_internal2/3): New patterns. + (extendsfdf2): Convert to define_insn_and_split. + * config/rs6000/rs6000-protos.h (insvdi_rshift_rlwimi_p): Prototype. + +2004-06-23 Andrew Pinski + + * c-typeck.c (composite_type, ): Abort if we have + type qualifiers at all. + If both of the type domains are null and the new element type is + the same as one of the, return the one which the element type. + matches. + Do not call qualify_type on the new type. + +2004-06-23 Ulrich Weigand + + * config/s390/s390.h (DEFAULT_MAIN_RETURN): Remove. + +2004-06-23 Roger Sayle + + * convert.c (strip_float_extension): Skip both NOP_EXPR and + CONVERT_EXPR floating point extensions. + +2004-06-23 Diego Novillo + + * Makefile.in (tree-vn.o): New. + (tree-ssa-pre.o): Don't depend on RTL_H. + * tree-dfa.c (find_referenced_vars): Don't call init_tree_ssa. + * tree-flow.h (struct var_ann_d): Remove field expr_set. + (add_to_value, expressions_equal_p, get_value_handle, vn_compute, + vn_lookup_or_add, vn_add, vn_lookup, vn_init, vn_delete): Declare. + * tree-optimize.c (execute_init_datastructures): New local function. + (pass_init_datastructures): New local variable. + (init_tree_optimization_passes): Sequence pass_init_datastructures. + * tree-pretty-print.c (MASK_POINTER): Remove. + (dump_generic_node): Handle VALUE_HANDLE. + * tree-ssa-pre.c: Move all value numbering routines to tree-vn.c. + Update callers to use new function names. + Use VALUE_HANDLE_ID and VALUE_HANDLE_EXPR_SET instead of + variable annotations. + * tree-ssa.c (init_tree_ssa): Call vn_init. + (delete_tree_ssa): Call vn_delete. + * tree-vn.c: New file. + * tree.c (tree_size): Handle VALUE_HANDLE. + (tree_node_structure): Likewise. + (iterative_hash_expr): Likewise. + * tree.def (VALUE_HANDLE): New code. + * tree.h (struct tree_value_handle): New. + (VALUE_HANDLE_ID): Define. + (VALUE_HANDLE_EXPR_SET): Define. + (enum tree_node_structure_enum): Add TS_VALUE_HANDLE. + (union tree_node): Add struct tree_value_handle. + +2004-06-23 Andrew Pinski + + * c-typeck.c (composite_type): + : Build a qualified type of + the new type. + : Likewise. + : Likewise. + +2004-06-23 Pat Haugen + + PR optimization/15633 + * value-prof.c (divmod_fixed_value_transform): Compute probability + of taking optimal path and pass along to gen_ routine. + (mod_pow2_value_transform): Same. + (mod_subtract_transform): Same. + (gen_divmod_fixed_value): Add new probability parameter. + Add probability to newly created jump. + (gen_mod_pow2): Same. + (gen_mod_subtract): Same. + +2004-06-23 Richard Earnshaw + + * PR target/15948 + * arm.md (bicsi3_cbranch): Add alternative to handle tying operands + one and two. + +2004-06-23 Richard Earnshaw + + PR target/15927 + * arm.h (THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Don't need a secondary + reload if CLASS is BASE_REGS. + +2004-06-23 Richard Sandiford + + * gengtype-yacc.y (option): Avoid use of non-constant struct + initializer. + +2004-06-23 Nathan Sidwell + + * doc/extend.texi (Function Attributes): Alphabetize. + +2004-06-23 Richard Henderson + + * c-gimplify.c (gimplify_decl_stmt): Update gimplify_type_sizes call. + Use gimplify_and_add. + * c-typeck.c (c_finish_if_stmt): Use NULL instead of empty stmt. + * gimplify.c (build_and_jump, gimplify_exit_expr, + gimplify_init_constructor, gimplify_save_expr, gimple_push_cleanup, + gimplify_stmt, gimplify_expr): Likewise. + (shortcut_cond_expr): Handle NULL arms of COND_EXPR. + (gimplify_statement_list): Remove NULL entries. + (gimplify_to_stmt_list): Handle NULL results. + (gimplify_type_sizes): Add list_p argument. + (gimplify_one_sizepos): Don't use internal pre/post queue. + * tree-gimple.h (gimplify_type_sizes): Update. + +2004-06-22 Eric Christopher + + * config/rs6000/rs6000.md (*insvsi_internal5/6): New patterns. + +2004-06-22 Pat Haugen + + * cfghooks.c (make_forwarder_block): Decrement count on fallthru edge + when redirecting back edges. + + * cfghooks.c (split_block): Call make_single_succ_edge so that edge + count/probability are set correctly. + +2004-06-22 Richard Henderson + + * c-typeck.c (emit_side_effect_warnings): Ignore error marks. + (c_finish_stmt_expr): Likewise. + + * config/i386/i386.c (TARGET_STRUCT_VALUE_RTX): New. + (ix86_return_in_memory): Move SSE vector return warning ... + (ix86_struct_value_rtx): ... here. New. + +2004-06-22 Richard Henderson + + * 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. + +2004-06-22 Richard Henderson + + PR middle-end/16026 + * function.c (assign_parms): Don't abort for overaligned PARALLEL. + +2004-06-22 Joseph S. Myers + + * Makefile.in (distclean): Don't try to remove empty directories. + +2004-06-22 Richard Sandiford + + PR target/15869 + * config/mips/mips.c (mips_avoid_hazards): Call split_all_insns_noflow. + +2004-06-22 Alexandre Oliva + + * config/mn10300/mn10300.md (movdi, movdf): Use high/low for movu + operands. + +2004-06-22 Dale Johannesen + + * config/rs6000/rs6000.c (legitimate_offset_address_p): Make + global, rename rs6000_legitimate_offset_address_p. + (rs6000_legitimate_address_p): Adjust calls to it. + (lmw_operation): Ditto. + (stmw_operation): Ditto. + * config/rs6000/rs6000-protos.h: Declare it. + * config/rs6000/rs6000.md (*movdf_hardfloat32): Use it + instead of offsettable_memref_p. + +2004-06-22 Dale Johannesen + + * config/rs6000/rs6000.c (rs6000_legitimate_address): Disallow + [reg+reg] mode for TFmode memory accesses. + (rs6000_eliminate_indexed_memrefs): New. + (rs6000_emit_move): Call preceding for TImode and TFmode. + +2004-06-22 Paolo Bonzini + + * tree-cfg.c (pass_warn_function_return): It needs + CFG, not SSA. + +2004-06-22 Nathan Sidwell + + * doc/invoke.texi (Machine Dependent Options): Alphabetize. + (Submodel Options): Likewise. + +2004-06-21 Andrew Pinski + + Radar #: 3701874 + * c-decl.c (push_file_scope): Return early if we already + have a file scope. + +2004-06-21 Geoffrey Keating + + * c-opts.c (c_common_handle_option): Handle -fpch-preprocess. + * c-common.h (flag_pch_preprocess): Declare. + (c_common_pch_pragma): Likewise. + * c-common.c (flag_pch_preprocess): New. + * c-pch.c (c_common_read_pch): Support -fpreprocess-only. + (c_common_pch_pragma): New. + * c-ppoutput.c (cb_read_pch): New. + (init_pp_output): Support -fpch-preprocess. + * c-pragma.c (init_pragma): Support #pragma GNUC pch_preprocess. + * c.opt (fpch-preprocess): New. + * gcc.c (cpp_options): When save-temps, pass -fpch-preprocess. + * doc/cppopts.texi: Document -fpch-preprocess. + * doc/invoke.texi (Precompiled Headers): Mention that + -fpreprocessed is safe for PCH. Mention that if an option is + listed as safe that doesn't mean it does what you expect. + +2004-06-22 Ben Elliston + + * tree-ssa.c (ssa_redirect_edge): Correct leading comment. + +2004-06-21 Richard Kenner + + * Makefile.in (gimplify.o): Add cgraph.h. + * 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-inline.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. + * objc/objc-act.c (generate_static_references): Likewise. + (generate_strings, build_method_prototype_list_template): Likewise. + (generate_protocol_list): Likewise. + +2004-06-21 John David Anglin + + PR rtl-optimization/14782 + * pa.c (emit_move_sequence): Use SFmode for 4-byte modes when doing + the address checks for secondary reloads for loads from and stores + to floating-point registers. + * pa.h (EXTRA_CONSTRAINT, case T): Use SFmode for 4-byte modes + in the address check. Move work around for ELF32 targets to + GO_IF_LEGITIMATE_ADDRESS. + (GO_IF_LEGITIMATE_ADDRESS): Require constant offsets to be + correctly aligned for DImode loads and stores. Don't allow long + SFmode displacements on ELF32. + 2004-06-21 Richard Henderson PR rtl-opt/16114