X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2FChangeLog;h=e781bd4b094485fa3addc563448943b75be85e03;hp=2b16d94bb82094dbfc56c855abdd25a85cd46aea;hb=e781c55096925d34f670a39ab0d73cf8455f002b;hpb=bd1005475b6733901bff3d94208cd790fb55c486 diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2b16d94bb82..e781bd4b094 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,1002 @@ +2007-10-31 Sebastian Pop + + PR tree-optimization/32377 + * tree-data-ref.c (compute_overlap_steps_for_affine_univar): Make it + work also for unknown number of iterations. + (analyze_subscript_affine_affine): Clean up. Don't fail when the + number of iterations is not known. + +2007-10-31 Richard Guenther + + PR middle-end/33779 + * fold-const.c (extract_muldiv_1): Make sure to not introduce + new undefined integer overflow. + (fold_binary): Avoid useless conversion. + +2007-10-31 Richard Sandiford + + PR target/33948 + * config/mips/mips.c (mips_fpr_return_fields): Fix SCALAR_TYPE_P + check. + +2007-10-31 Andreas Krebbel + + * config/rs6000/rs6000.opt: Rename -mdfp option to -mhard-dfp. + + * config/s390/s390.c: (override_options): Replace -mhard-dfp/-msoft-dfp + with -mhard-dfp/-mno-hard-dfp. + * config/s390/s390.opt: Likewise. + * config/s390/s390.h: Add MASK_HARD_DFP to the TARGET_DEFAULT + definition. + +2007-10-30 Janis Johnson + + * tree-ssa.c (execute_update_addresses_taken): Initialize update_vops. + +2007-10-30 Janis Johnson + + * doc/invoke.texi (Option Summary): Add -fdce and -fdse to list of + optimization options. + (Optimize Options): Add -fdce and -fdse to the list of optimizations + enabled by -O. Document -fdce and -fdse. + +2007-10-30 Jakub Jelinek + + PR c++/33709 + * fold-const.c (fold_binary): If one argument is COMPOUND_EXPR, + convert second operand of COMPOUND_EXPR to the original type of + that argument. + +2007-10-30 Richard Guenther + + * tree-ssa-operands.c (add_vars_for_offset): Fix exit test + of loop adding SFTs as virtual operands. + +2007-10-30 Richard Guenther + + * Makefile.in (dse.o): Add $(OPTABS_H) and $(RECOG_H) dependencies. + +2007-10-29 Dorit Nuzman + + PR tree-optimization/32893 + * tree-vectorize.c (vect_can_force_dr_alignment_p): Check + STACK_BOUNDARY instead of PREFERRED_STACK_BOUNDARY. + +2007-10-29 Rask Ingemann Lambertsen + + * longlong.h (add_ssaaaa): Support Intel asm syntax in i386 and + x86_64 versions. + (sub_ddmmss): Likewise. + (umul_ppmm): Likewise. + (udiv_qrnnd): Likewise. + +2007-10-29 Janis Johnson + + PR testsuite/24841 + * doc/sourcebuild.texi (Test Directives): Document that dg-require + directives must come before dg-additional-sources. + +2007-10-29 Jakub Jelinek + + PR tree-optimization/33723 + * c-gimplify.c (c_gimplify_expr): Optimize INIT_EXPR or + MODIFY_EXPR with non-addressable COMPOUND_LITERAL_EXPR as source. + +2007-10-29 Richard Sandiford + + PR tree-optimization/33614 + * gimplify.c (gimplify_init_constructor): Gimplify vector constructors + if they can't be reduced to VECTOR_CSTs and aren't legitimate + initializer constants. + +2007-10-29 Richard Guenther + + PR tree-optimization/33870 + * tree-ssa-operands.c (add_vars_for_offset): Remove mpt_vars parameter. + (add_virtual_operand): Do not recurse into MPTs looking for pointed-to + SFTs. + +2007-10-29 Richard Guenther + + * passes.c (init_optimization_passes): Exchange store_copy_prop + with copy_prop. + * tree-pass.h (pass_store_copy_prop): Remove. + * tree-ssa-copy.c (do_store_copy_prop): Remove. + (stmt_may_generate-copy): Do not handle store_copy_prop. + (get_copy_of_val): Likewise. + (set_copy_of_val): Likewise. + (copy_prop_visit_assignment): Likewise. + (copy_prop_visit_stmt): Likewise. + (copy_prop_visit_phi_node): Likewise. + (init_copy_prop): Likewise. + (execute_copy_prop): Likewise. + (do_copy_prop): Remove. + (gate_store_copy_prop): Likewise. + (store_copy_prop): Likewise. + (pass_store_copy_prop): Likewise. + (pass_copy_prop): Call execute_copy_prop. + * opts.c (decode_options): Do not set flag_tree_store_copy_prop. + * common.opt (ftree-store-copy-prop): Mark obsolete. + * doc/invoke.texi (ftree-store-copy-prop): Remove documentation. + +2007-10-29 Ian Lance Taylor + + * ifcvt.c (noce_can_store_speculate_p): New static function. + (noce_process_if_block): Call it. + (if_convert): Remove recompute_dominance parameter. Change all + callers. + +2007-10-29 Richard Guenther + + * tree-flow-inline.h (get_subvar_at): Use binary search. + (get_first_overlapping_subvar): New function to binary search + for the first overlapping subvar. + * tree-ssa-operands.c (add_vars_for_offset): Strip down to + just handle adding subvars for a pointed-to subvar. Optimize + and use get_first_overlapping_subvar. + (add_vars_for_bitmap): Fold into single caller. + (add_virtual_operand): Streamline, inherit add_vars_for_bitmap + and non pointed-to bits of add_vars_for_offset. + +2007-10-29 Revital Eres + + * modulo-sched.c (sms_schedule): Add DF_UD_CHAIN problem. + +2007-10-29 Razya Ladelsky + Zdenek Dvorak + + OMP_ATOMIC Changes, + reduction support for automatic parallelization. + + * expr.c (expand_expr_real_1): Add cases for OMP_ATOMIC_LOAD, + OMP_ATOMIC_STORE. + * Makefile.in: Add dependencies to expr.o, tree-parloops.o, omp-low.o + * tree-pretty-print.c (dump_generic_node): Add OMP_ATOMIC_LOAD + and OMP_ATOMIC_STORE. + * tree.h (OMP_DIRECTIVE_P): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE. + * gimple-low.c (lower_stmt): Same. + * gimplify.c (gimplify_expr): Same. + (gimplify_omp_atomic_fetch_op, gimplify_omp_atomic_pipeline, + gimplify_omp_atomic_mutex): Remove. + (gimplify_omp_atomic): Change it to simply gimplify the + statement instead of expanding it. + * omp-low.c: Add includes to optabs.h, cfgloop.h. + (expand_omp_atomic, expand_omp_atomic_pipeline, + goa_stabilize_expr, expand_omp_atomic_mutex, + expand_omp_atomic_fetch_op): New functions to implement + expansion of OMP_ATOMIC. + (expand_omp, build_omp_regions_1): Add support for + OMP_ATOMIC_LOAD/OMP_ATOMIC_STORE. + * tree-cfg.c (make_edges): add case for OMP_ATOMIC_LOAD, + OMP_ATOMIC_STORE. + * tree-gimple.c (is_gimple_stmt): Add OMP_ATOMIC_LOAD, + OMP_ATOMIC_STORE. + * tree-parloops.c: add include to tree-vectorizer.h. + (reduction_info): New structure for reduction. + (reduction_list): New list to represent list of reductions per loop. + (struct data_arg): New helper structure for reduction. + (reduction_info_hash, reduction_info_eq, reduction_phi, + initialize_reductions, create_call_for_reduction, + create_phi_for_local_result, create_call_for_reduction_1, + create_loads_for_reductions, create_final_loads_for_reduction): + New functions. + (loop_parallel_p): Identify reductions, add reduction_list parameter. + (separate_decls_in_loop_name): Support reduction variables. + (separate_decls_in_loop): Add reduction_list and ld_st_data arguments, + call create_loads_for_reduction for each reduction. + (canonicalize_loop_ivs): Identify reductions, add reduction_list + parameter. + (transform_to_exit_first_loop): Add reduction support, add + reduction_list parameter. + (gen_parallel_loop): Add reduction_list parameter. Add call + separate_decls_in_loop with + the new argument. Traverse reductions and call + initialize_reductions, create_call_for_reduction. + (parallelize_loops): Create and delete the reduction list. + (add_field_for_name): Change use of data parameter. Add fields for + reductions. + * tree-vectorizer.h (vect_analyze_loop_form): Add declaration. + * tree-vect-analyze.c (vect_analyze_loop_form): export it. + * tree.def: Add definitions for OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE. + * tree-inline.c (estimate_num_insns_1): add cases for + OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE. + * tree-cfg.c (make_edges): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE. + * tree-ssa-operands.c (get_addr_dereference_operands): + New function. Subroutine of get_indirect_ref_operands. + (get_indirect_ref_operands): Call get_addr_dereference_operands. + (get_expr_operands): Support OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE. + + +2007-10-29 Hans-Peter Nilsson + + * config/cris/cris.c: Include df.h. + (cris_address_cost): Add gcc_assert for canonicalization + assumptions. For PLUS with MULT or register, correct + test for register in other arm. Tweak comments. + +2007-10-28 Richard Guenther + + * tree-ssa-operands.c (add_vars_for_offset): Add parameter + telling if the var is to be treated as points-to location. + (add_vars_for_bitmap): Pass true to add_vars_for_offset. + (add_virtual_operand): Only recurse into MPTs if aliases + is from a NMT. + +2007-10-28 Richard Guenther + + * tree-ssa-operands.c (add_vars_for_offset): Clean and speed up. + (add_vars_for_bitmap): Do not recurse further. Only add vars + for pointed-to SFTs. + (add_virtual_operand): Re-instantiate loop to add operands for + aliases. Recurse into MPTs. + (get_indirect_ref_operands): If we fall back to use a pointers + SMT, make sure to not prune based on the access offset and size. + +2007-10-28 Andrew Pinski + + PR tree-opt/33589 + * tree-outof-ssa.c (rewrite_trees): If the statement changed, cleanup + the eh information on the statement. + +2007-10-28 Richard Guenther + + * tree-flow.h (subvar_t): Make it a VEC. + (struct subvar): Remove. + (struct var_ann_d): Use VEC(tree,gc) to store subvars. + * tree-flow-inline.h (get_subvar_at): Adjust iterators over + variable subvars. + * tree-into-ssa.c (mark_sym_for_renaming): Likewise. + * tree-nrv.c (dest_safe_for_nrv_p): Likewise. + * tree-ssa-alias.c (mark_aliases_call_clobbered): Likewise. + (set_initial_properties): Likewise. + (setup_pointers_and_addressables): Likewise. + (new_type_alias): Likewise. + (create_overlap_variables_for): Likewise. + * tree-dfa.c (dump_subvars_for): Likewise. + * tree-ssa-operands.c (add_vars_for_offset): Likewise. + (get_expr_operands): Likewise. + (add_to_addressable_set): Likewise. + * tree-ssa-structalias.c (set_uids_in_ptset): Likewise. + +2007-10-28 Uros Bizjak + + PR tree-optimization/33920 + * tree-if-conv.c (tree_if_conversion): Force predicate of single + successor bb to true when predecessor bb has NULL predicate. + (find_phi_replacement_condition): Assert that tmp_cond is non-null. + +2007-10-28 Richard Sandiford + + * config/mips/mips.md: Add combiner patterns for DImode extensions + of HImode and QImode truncations. Reformat HImode <- QImode pattern + for consistency. + +2007-10-28 Richard Sandiford + + PR target/33895 + * config/mips/mips.c (mips_output_dwarf_dtprel): Add ATTRIBUTE_UNUSED. + +2007-10-28 Andreas Krebbel + + * dce.c (delete_unmarked_insns): Just delete the RETVAL and + LIBCALL notes if they are about to be moved to the same insn. + +2007-10-27 Richard Guenther + + PR tree-optimization/33870 + * tree-ssa-operands.c (add_vars_for_offset): Reduce code + duplication. Remove redundant call to access_can_touch_variable. + (add_vars_for_bitmap): New helper for recursing over MPT contents. + (add_virtual_operand): Use it. + +2007-10-26 John David Anglin + + PR fortran/31608 + * pa.h (ASM_PN_FORMAT): Delete define. + +2007-10-26 Janis Johnson + + * doc/invoke.texi (Option Summary, optimizations): Remove + -fbounds-check. Add -fassociative-math, -freciprocal-math, + -ftree-vrp and -funit-at-a-time. Change -fno-split-wide-types to + -fsplit-wide-types to match later entry. Break up a long line. + (Option Summary, code gen options) Add -fno-stack-limit. Add + missing @gol to the end of a line. + (Optimization Options): Remove -fbounds-check, which is also + documented under Code Generation Options. Remove =n from + index entry for -ftree-parallelize-loops. Change -fno-cprop-registers + to -fcprop-registers to match other options, and say when it is + enabled rather than disabled. Remove extra index entry for + -fno-cx-limited-range. Add index entries for -fstack-protector + and -fstack-protector-all. + (Code Gen Options): Add index entry for -ftls-model. + +2007-10-26 Anatoly Sokolov + + * config/avr/avr.c (avr_OS_task_function_p): Add new function. + (avr_regs_to_save): Handle functions with 'OS_task' attribute. + (avr_simple_epilogue, expand_prologue, avr_asm_function_end_prologue, + expand_epilogue, output_movhi): Don't handle 'main' function. + (avr_attribute_table): Add 'OS_task' function attribute. + * config/avr/avr.h (machine_function): Remove 'is_main' field, add + 'is_OS_task' field. + * config/avr/avr.md (return_from_main_epilogue): Remove insn. + (return_from_epilogue, return_from_interrupt_epilogue): Don't handle + 'main' function. + * config/avr/avr.opt (minit-stack): Remove. + +2007-10-26 Eric Botcazou + + * tree-nested.c (get_trampoline_type): Fix thinko. + +2007-10-26 Douglas Gregor + + PR c++/33601 + * tree.c (build_offset_type): Build canonical type based on the + TYPE_MAIN_VARIANT of the base type. + +2007-10-26 Daniel Jacobowitz + + * reorg.c (emit_delay_sequence): Move insn locator from the + first insn to the sequence. + +2007-10-26 Samuel Tardieu + + * ipa-pure-const.c (check_decl): Return immediately when + pure_const_state has been set to IPA_NEITHER. + +2007-10-25 Ira Rosen + + PR tree-optimization/33833 + * tree-vect-analyze.c (vect_analyze_data_refs): Use POINTER_PLUS_EXPR + and convert init to sizetype in inner_base construction. + +2007-10-25 Richard Guenther + + * tree-flow.h (mem_sym_stats): Remove. + (dump_mem_sym_stats_for_var): Declare. + * tree-dfa.c (dump_variable): Call dump_mem_sym_stats_for_var. + (mem_sym_stats): Move ... + * tree-ssa-alias.c (mem_sym_stats): ... here and make it static. + (mem_sym_score): Rename from ... + (pscore): ... this. Remove. + (dump_mem_sym_stats_for_var): New function. Dump the score, but + not the frequencies. + (compare_mp_info_entries): Make sort stable by disambiguating + on DECL_UID. + +2007-10-25 Ira Rosen + + PR tree-optimization/33866 + * tree-vect-transform.c (vectorizable_store): Check operands of all + the stmts in the group of strided accesses. Get def stmt type for each + store in the group and pass it to vect_get_vec_def_for_stmt_copy (). + +2007-10-25 Uros Bizjak + + * config/i386/constraints.md (Y0): Rename register constraint to Yz. + (Yt): Rename register constraint to Y2. + * config/i386/sse.md: Use renamed register constraints. + * config/i386/mmx.md: Ditto. + * config/i386/i386.md: Ditto. + +2007-10-25 Rask Ingemann Lambertsen + + * config/i386/i386.md (*dummy_extendsfdf2): Fix operand 1 constraint. + +2007-10-24 Chao-ying Fu + + * dwarf2out.c (base_type_die): Use DW_ATE_unsigned_fixed or + DW_ATE_signed_fixed to describe FIXED_POINT_TYPE. + +2007-10-24 Samuel Tardieu + Olga Golovanevsky + + * ipa-struct-reorg.c (replace_field_acc): Make it clear to + the compiler that wr.wrap and wr.domain are initialized in + any case. + +2007-10-24 Samuel Tardieu + + * ipa-struct-reorg.c (sum_counts): Use HOST_WIDEST_PRINT_DEC + to print gcov_type values. + +2007-10-24 Eric B. Weddington + + * config/avr/avr.h: Do not include progmem_section definition when + building with IN_TARGET_LIBS. + +2007-10-24 Richard Sandiford + + PR target/33755 + * config/mips/mips.c (mips_lo_sum_offset): New structure. + (mips_hash_base, mips_lo_sum_offset_hash, mips_lo_sum_offset_eq) + (mips_lo_sum_offset_lookup, mips_record_lo_sum) + (mips_orphaned_high_part_p: New functions. + (mips_avoid_hazard): Don't check INSN_P here. + (mips_avoid_hazards): Rename to... + (mips_reorg_process_insns): ...this. Cope with + !TARGET_EXPLICIT_RELOCS. Delete orphaned high-part relocations, + or turn them into nops. + (mips_reorg): Remove TARGET_EXPLICIT_RELOCS check from calls to + dbr_schedule and mips_avoid_hazards/mips_reorg_process_insns. + (mips_set_mips16_mode): Don't set flag_delayed_branch here. + (mips_override_options): Set flag_delayed_branch to 0. + +2007-10-24 Richard Sandiford + + * config/mips/mips.h (MOVE_MAX): Use UNITS_PER_WORD and describe + MIPS-specific implementation details. + (MIPS_MAX_MOVE_BYTES_PER_LOOP_ITER): New macro. + (MIPS_MAX_MOVE_BYTES_STRAIGHT): Likewise. + (MOVE_RATIO): Define to MIPS_MAX_MOVE_BYTES_STRAIGHT / UNITS_PER_WORD + for targets with movmemsi. + (MOVE_BY_PIECES_P): Define. + * config/mips/mips.c (MAX_MOVE_REGS, MAX_MOVE_BYTES): Delete. + (mips_block_move_loop): Add a bytes_per_iter argument. + (mips_expand_block_move): Use MIPS_MAX_MOVE_BYTES_STRAIGHT. + Update call to mips_block_move_loop. + +2007-10-24 Michael Matz + + PR debug/33868 + * var-tracking.c (variable_union): Don't break after one loop + iteration but only when a difference is found. + (dump_variable): Also print DECL_UID. + +2007-10-24 Olga Golovanevsky + + * ipa-type-escape.h: Expose function + is_array_access_through_pointer_and_index. + * ipa-type-escape.c + (is_array_access_through_pointer_and_index): + Add three new parameters. Add support of + POINTER_PLUS_EXPR tree code. + +2007-10-24 Olga Golovanevsky + + * ipa-struct-reorg.c, ipa-struct-reorg.h: New files. + * tree-pass.h: Add pass_ipa_struct_reorg. + * common.opt: Add ipa-struct-reorg flag. + * Makefile.in: Add ipa-strcut-reorg.o compilation. + * passes.c: Add pass pass_ipa_struct_reorg. + * params.h: Add STRUCT_REORG_COLD_STRUCT_RATIO. + * params.def: Add PARAM_STRUCT_REORG_COLD_STRUCT_RATIO. + +2007-10-24 Ira Rosen + + PR tree-optimization/33804 + * tree-vect-transform.c (vectorizable_operation): Remove the + checks that the vectorization is worthwhile from the transformation + phase. + +2007-10-24 Ira Rosen + + * tree-vect-analyze.c (vect_build_slp_tree): Return false if + vectype cannot be determined for the scalar type. + (vect_analyze_slp_instance): Likewise. + * tree-vect-transform.c (vect_model_reduction_cost): Change the + return type to bool. Return false if vectype cannot be determined + for the scalar type. + (vect_get_constant_vectors): Return false if vectype cannot be + determined for the scalar type. + (get_initial_def_for_induction, vect_get_vec_def_for_operand, + get_initial_def_for_reduction, vect_create_epilog_for_reduction, + vectorizable_reduction): Likewise. + +2007-10-23 Craig Rodrigues + + * config.gcc: For a FreeBSD target, parse the value of ${target} + to determine the value of FBSD_MAJOR, instead of adding an + explicit check for every possible FreeBSD major version. + +2007-10-23 Uros Bizjak + + PR rtl-optimization/33846 + * combine.c (simplify_shift_const_1) [NOT]: Skip vector modes. + +2007-10-23 Dorit Nuzman + + PR tree-optimization/33860 + * tree-vect-transform.c (vect_analyze_data_ref_access): Don't allow + interleaved accesses in case the dr is inside the inner-loop during + outer-loop vectorization. + +2007-10-23 Eric Botcazou + + * doc/rtl.texi (Flags): Fix MEM_SCALAR_P entry. + Document MEM_POINTER. Replace mentions of "integrated" + field with "return_val". Delete outdated stuff. + +2007-10-23 David Edelsohn + + * config/rs6000/rs6000.c (rs6000_override_options): Set + rs6000_altivec_abi on AIX. + (conditional_register_usage): Set VR20:31 fixed on AIX. + +2007-10-23 Richard Guenther + + * alias.c (get_alias_set): For INDIRECT_REFs, deal with + SSA_NAME pointers. + +2007-10-22 Seongbae Park + David S. Miller + + * df-scan.c (df_get_call_refs): Mark global registers as both a + DF_REF_REG_USE and a non-clobber DF_REF_REG_DEF. + +2007-10-22 Dorit Nuzman + + PR tree-optimization/33834 + PR tree-optimization/33835 + * tree-vect-analyze.c (vect_analyze_operations): RELEVANT and LIVE + stmts need to be checked for success seperately. + * tree-vect-transform.c (vectorizable_call, vectorizable_conversion): + Remove the check that stmt is not LIVE. + (vectorizable_assignment, vectorizable_induction): Likewise. + (vectorizable_operation, vectorizable_type_demotion): Likewise. + (vectorizable_type_promotion, vectorizable_load, vectorizable_store): + Likewise. + (vectorizable_live_operation): Check that op is not NULL. + +2007-10-22 Janis Johnson + + * doc/invoke.texi (Optimization Options): In the summary, show + that the value for options -falign-jumps, -falign-labels, + -falign-loops, -falign-functions, -fsched-stalled-insns, and + -fsched-stalled-insns-dep is optional. In the summary, show that + -fsched-stalled-insns takes an optional argument and that + -fparallelize-loops takes an argument. Add opindex for several + optimization options, and fix typos in the opindex commands for + several others. In the descriptions for -fsched-stalled-insns + and -fsched-stalled-insns-dep, show the options with and without + values. + +2007-10-22 Eric B. Weddington + + * config/avr/avr.c (avr_mcu_types): Remove ATmega603 which was never + produced. + * config/avr/avr.h (LINK_SPEC): Likewise. + (CRT_BINUTILS_SPECS): Likewsie. + * config/avr/t-avr (MULTILIB_MATCHES): Likewise. + +2007-10-22 Eric Botcazou + + PR rtl-optimization/33644 + * cfgcleanup.c: Do not include dce.h. + * cfgrtl.c (delete_insn_chain_and_edges): Resurrect. + * combine.c (distribute_notes): Delete REG_LIBCALL_ID case. + * dce.c (something_changed): Delete. + (libcall_dead_p): New predicate. + (delete_unmarked_insns): Use it to delete dead libcalls. + Deal with REG_LIBCALL and REG_RETVAL notes. + (prescan_libcall_for_dce): New function. + (prescan_insns_for_dce): Use it to deal with libcalls. + (mark_reg_dependencies): Do nothing special for libcalls. + (dce_process_block): Likewise. + (fast_dce): Delete unused local variable. + (run_fast_dce): Do not return a value. + * dce.h (struct df): Delete. + (run_fast_dce): Adjust prototype. + * optabs.c (libcall_id): Delete. + (maybe_encapsulate_block): Do not emit REG_LIBCALL_ID notes. + (emit_no_conflict_block): Do not look for REG_LIBCALL_ID notes. + * reload1.c (reload): Delete REG_LIBCALL_ID case. + * rtl.h (delete_insn_chain_and_edges): Resurrect prototype. + * see.c (see_update_relevancy): Look for REG_LIBCALL and REG_RETVAL + notes instead of REG_LIBCALL_ID notes. + * reg-notes.def (LIBCALL_ID): Delete. + * Makefile.in (see.o): Add dce.h dependency. + (cfgcleanup.o): Remove dce.h dependency. + +2007-10-22 Michael Matz + + PR tree-optimization/33855 + * tree-ssa-phiopt.c (cond_store_replacement): Handle COMPLEX_TYPE + and VECTOR_TYPE. + +2007-10-22 Ira Rosen + + PR tree-optimization/33854 + * tree-vect-analyze.c (vect_determine_vectorization_factor): Add + FLOAT_EXPR to the list of promotion operations. + +2007-10-22 Rask Ingemann Lambertsen + + PR target/29473 + PR target/29493 + * config/i386/i386.c (output_pic_addr_const): Support Intel asm syntax. + (print_reg): Print register prefix only with AT&T asm syntax. + Support pc_rtx for RIP register. + (print_operand_address): Use print_reg()'s pc_rtx support for RIP + relative addressing. Always print segment register prefix with AT&T + asm syntax and never with Intel asm syntax. + (print_operand): Suppress 'XXX PTR' prefix for BLKmode operands. + Fix prefix for 16-byte XFmode operands. + (output_addr_const_extra): Support Intel asm syntax. + (x86_file_start): Don't use register prefix with Intel asm syntax. + * config/i386/i386.md ("*zero_extendqihi2_movzbl"): Fix typo. + ("return_internal_long"): Fix Intel asm syntax output. + ("set_got_rex64"): Support Intel asm syntax. + ("set_rip_rex64"): Likewise. + ("set_got_offset_rex64"): Likewise. + ("*sibcall_1_rex64_v"): Print register prefix only with AT&T asm + syntax. + ("*tls_global_dynamic_64"): Likewise. + ("*tls_local_dynamic_base_64"): Likewise. + ("*load_tp_si")("*load_tp_di"): Likewise. + ("*add_tp_si")("*add_tp_di"): Likewise. + ("*tls_dynamic_lea_64"): Likewise. + ("*sibcall_value_1_rex64_v"): Likewise. + ("stack_tls_protect_set_si"): Likewise. + ("stack_tls_protect_set_di"): Likewise. + ("stack_tls_protect_test_si"): Likewise. + ("stack_tls_protect_test_di"): Likewise. + * config/i386/mmx.md ("*mov_internal_rex64"): Fix Intel asm + syntax output. + ("*movv2sf_internal_rex64"): Likewise. + * config/i386/cpuid.h (__cpuid): Support Intel asm syntax. + (__get_cpuid_max): Likewise. + +2007-10-21 Richard Sandiford + + * config/mips/mips-protos.h (mips_regno_mode_ok_for_base_p): Give + the STRICT_P argument type "bool" rather than "int". + (mips_legitimate_address_p): Likewise. + (fp_register_operand, lo_operand): Delete. + (mips_subword): Give the HIGH_P argument type "bool" rather than "int". + (mips_emit_scc): Rename to... + (mips_expand_scc): ...this. + (gen_conditional_branch): Rename to... + (mips_expand_conditional_branch): ...this. + (gen_conditional_move): Rename to... + (mips_expand_conditional_move): ...this. + (mips_gen_conditional_trap): Rename to... + (mips_expand_conditional_trap): ...this and take an rtx code instead + of an operands array. + (mips_expand_call): Give the SIBCALL_P argument type "bool" + rather than "int". + (mips_emit_fcc_reload): Rename to... + (mips_expand_fcc_reload): ...this. + (init_cumulative_args): Rename to... + (mips_init_cumulative_args): ...this and remove the libname argument. + (function_arg_advance): Rename to... + (mips_function_arg_advance): ...this. + (function_arg): Rename to... + (mips_function_arg): ...this and use "rtx" instead of + "struct rtx_def *". + (function_arg_boundary): Rename to... + (mips_function_arg_boundary): ...this. + (mips_expand_unaligned_load): Rename to... + (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH + and BITPOS arguments type "HOST_WIDE_INT". + (mips_expand_unaligned_store): Rename to... + (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH + and BITPOS arguments type "HOST_WIDE_INT". + (override_options): Rename to... + (mips_override_options): ...this. + (print_operand): Rename to... + (mips_print_operand): ...this. + (print_operand_address): Rename to... + (mips_print_operand_address): ...this. + (mips_output_ascii): Remove the PREFIX argument. + (mips_expand_epilogue): Give the SIBCALL_P argument type "bool" + rather than "int". + (mips_can_use_return_insn): Return a "bool" rather than an "int". + (mips_function_value): Remove the FUNC argument. Use "rtx" instead + of "struct rtx_def *". + (mips_secondary_reload_class): Give the IN_P argument type "bool" + rather than "int". + (build_mips16_call_stub): Delete. + (mips_store_data_bypass_p): Return a "bool" rather than an "int". + (mips_use_ins_ext_p): Give the second and third arguments type + "HOST_WIDE_INT" rather than "rtx". + * config/mips/mips.h: Update after the above changes. Tweak comments + and formatting. + (SECONDARY_INPUT_RELOAD_CLASS): Pass a boolean IN_P argument. + (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise. + (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the + element type from "char" to "bool". + (mips_section_threshold, sym_lineno, set_noat, mips_branch_likely) + (mips_cpu_info_table): Delete. + * config/mips/mips.md: Update after the above changes. Tweak some + formatting. + * config/mips/mips-ps-3d.md: Likewise. + * config/mips/mips.c: Tweak comments and formatting. + Use NULL-like macros rather than 0 in various places. + (mips_section_threshold): Rename to... + (mips_small_data_threshold): ...this and give it an unsigned type. + (num_source_filenames): Remove explicit initialization. + (sdb_label_count): Likewise. + (sym_lineno): Delete. + (set_noat): Make static. + (mips_branch_likely): Likewise, and give it type "bool". + (mips_isa_info): Rename to... + (mips_isa_option_info): ...this. + (mips_flag_delayed_branch): Rename to... + (mips_base_delayed_branch): ...this. + (mips_split_addresses): Delete. + (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the + element type from "char" to "bool". + (mips_regno_to_class): Add an explicit array size. + (mips16_flipper): Change from type "int" to type "bool". + (mips_comp_type_attributes): Remove redundant FUNCTION_TYPE check. + (mips_tls_operand_p): Rename to... + (mips_tls_symbol_p): ...this. + (mips_global_symbol_p): Remove redundant "const". + (mips_offset_within_alignment_p): Simplify. + (mips_regno_mode_ok_for_base_p): Change the name of the last argument + to STRICT_P and give it type bool. + (mips_valid_base_register_p): Likewise. + (mips_classify_address): Likewise. + (mips_legitimate_address_p): Likewise. + (mips16_unextended_reference_p): Take the offset as an + "unsigned HOST_WIDE_INT" rather than an "rtx". Simplify. + (mips_const_insns): Use IN_RANGE. + (mips_force_temporary): Remove an unnecessary copy_rtx. + (mips16_gp_pseudo_reg): Simplify. + (mips_split_symbol): Remove an unnecessary copy_rtx. + (mips_legitimize_tls_address): Only create registers if we need them. + (mips_legitimize_address): Use mips_split_plus. + (mips_move_integer): Swap DEST and TEMP arguments. Rename local + variable COST to NUM_OPS. + (mips_legitimize_move): Use gen_lowpart. + (mips_rewrite_small_data): Rename the OP parameter to PATTERN. + (m16_check_op): Use IN_RANGE. + (mips_subword): Give the HIGH_P argument type "bool" rather than "int". + (mips_split_doubleword_move): Pass booleans to mips_subword. + (mips_output_move): Store the mode in a local variable. + Explicitly assert that this function does not deal with + MFLO and MFHI. Use SMALL_OPERAND_UNSIGNED. Make order of + cases more consistent. + (mips_relational_operand_ok_p): Rename to... + (mips_int_order_operand_ok_p): ...this. + (mips_canonicalize_comparison): Rename to... + (mips_canonicalize_int_order_test): ...this. + (mips_emit_int_relational): Rename to... + (mips_emit_int_order_test): ...this. Store the mode in a local + variable. + (mips_reverse_fp_cond_p): Rename to... + (mips_reversed_fp_cond): ...this. + (mips_emit_compare): Make the order of the statements more consistent. + (mips_emit_scc): Rename to... + (mips_expand_scc): ...this. + (gen_conditional_branch): Rename to... + (mips_expand_conditional_branch): ...this. + (gen_conditional_move): Rename to... + (mips_expand_conditional_move): ...this. Build the condition + separately from the main pattern. + (mips_gen_conditional_trap): Rename to... + (mips_expand_conditional_trap): ...this and take an rtx code instead + of an operands array. Simplify. + (init_cumulative_args): Rename to... + (mips_init_cumulative_args): ...this. Use memset rather than a + copy from a zeroed static. Use prototype_p and stdarg_p. + (mips_arg_info): Rename to... + (mips_get_arg_info): ...this and put the INFO argument first. + (function_arg): Rename to... + (mips_function_arg): ...this and use "rtx" instead of + "struct rtx_def *". Only split structures into chunks if + TARGET_HARD_FLOAT, rather than checking !TARGET_SOFT_FLOAT on + a chunk-by-chunk basis. Use SCALAR_FLOAT_TYPE_P instead of a + comparison with REAL_TYPE. Rename local variable REG to REGNO + and make it unsigned. + (function_arg_advance): Rename to... + (mips_function_arg_advance): ...this. + (function_arg_boundary): Rename to... + (mips_function_arg_boundary): ...this. + (mips_pad_arg_upward): Use SCALAR_INT_MODE_P instead of a comparison + with MODE_INT. + (mips_fpr_return_fields): Use SCALAR_FLOAT_TYPE_P instead of a + comparison with REAL_TYPE. + (mips_function_value): Remove the FUNC argument. Rename local + variable UNSIGNEDP to UNSIGNED_P. + (mips_return_in_memory): Use IN_RANGE. + (mips_setup_incoming_varargs): Pass a boolean rather than an int + to FUNCTION_ARG_ADVANCE. + (mips_gimplify_va_arg_expr): Rename local variable INDIRECT + to INDIRECT_P. Remove a redundant mips_abi check. Only calculate + SIZE and RSIZE if needed. + (mips16_stub): Rename FPRET to FP_RET_P and give it type "bool" + rather than "int". + (build_mips16_function_stub): Rename to... + (mips16_build_function_stub): ...this. + (build_mips16_call_stub): Rename to... + (mips16_build_call_stub): ...this. Make static, and return a + "bool" rather than an "int". Rename the ARG_SIZE argument to + ARGS_SIZE. Rename the local variable FPRET to FP_RET_P and give + it type "bool". Use "jr" rather than "j". Use XNEW. Simplify. + (mips_load_call_address): Give the SIBCALL_P argument type "bool" + rather than "int". + (mips_expand_call): Likewise. Assert that MIPS16 calls via stubs + are not sibling ones. + (mips_emit_fcc_reload): Rename to... + (mips_expand_fcc_reload): ...this. + (mips_get_unaligned_mem): Give the WIDTH and BITPOS arguments type + "HOST_WIDE_INT". + (mips_expand_unaligned_load): Rename to... + (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH + and BITPOS arguments type "HOST_WIDE_INT". Remove redundant + SUBREG_BYTE check. + (mips_expand_unaligned_store): Rename to... + (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH + and BITPOS arguments type "HOST_WIDE_INT". + (mips_use_ins_ext_p): Rename second and third arguments to WIDTH + and BITPOS and give them type "HOST_WIDE_INT" rather than "rtx". + Use IN_RANGE. + (mips_init_split_addresses): Replace with... + (mips_split_addresses_p): ...this new function. + (mips_init_relocs): Check mips_split_addresses_p () rather than + mips_split_addresses. Always initialize mips_split_p with booleans. + (print_operand_reloc): Rename to... + (mips_print_operand_reloc): ...this. Use a gcc_assert rather than + a fatal_error. + (print_operand): Rename to... + (mips_print_operand): ...this. + (print_operand_address): Rename to... + (mips_print_operand_address): ...this. Use GP_REG_FIRST. + (mips_in_small_data_p): Simplify. + (mips_output_ascii): Remove the PREFIX argument and "register" + keywords. Use the STRING parameter directly and cast to + "unsigned char". + (mips16e_collect_argument_save_p): Use IN_RANGE. + (mips_function_has_gp_insn): Simplify. + (mips_set_return_address): Use BITSET_P. + (mips_restore_gp): Use a separate statement to pick the base + register. + (mips_output_function_prologue): Use a local FRAME variable. + (mips_save_reg): Pass booleans to mips_subword. + (mips_expand_prologue): Use a local FRAME variable. Use + cprestore_size to detect when .cprestore is needed. + (mips_restore_reg): Use GP_REG_FIRST. + (mips_expand_epilogue): Give the SIBCALL_P argument type "bool" + rather than "int". Use local FRAME and REGNO variables. + (mips_can_use_return_insn): Return a "bool" rather than an "int". + (mips_secondary_reload_class): Give the IN_P argument type "bool" + rather than "int". + (mips_linked_madd_p): Rename arguments to OUT_INSN and IN_INSN. + (mips_store_data_bypass_p): Return a "bool" rather than an "int". + (vr4130_swap_insns_p): Rename local variables to DEP1_P and DEP2_P. + (mips_74k_agen_init): Assume INSN satisfies USEFUL_INSN_P. + (mips_variable_issue): Do nothing unless INSN satisfies USEFUL_INSN_P. + (builtin_description): Rename to... + (mips_builtin_description): ...this. + (mips_bdesc): Rename to... + (mips_ps_bdesc): ...this. + (sb1_bdesc): Rename to... + (mips_sb1_bdesc): ...this. + (dsp_bdesc): Rename to... + (mips_dsp_bdesc): ...this. + (dsp_32only_bdesc): Rename to... + (mips_dsp_32only_bdesc): ...this. + (bdesc_map): Rename to... + (mips_bdesc_map): ...this. + (bdesc_arrays): Rename to... + (mips_bdesc_arrays): ...this. + (mips_prepare_builtin_arg): Rename OP to OPNO and ARGNUM to ARGNO. + Tweak error message. + (mips_expand_builtin_direct): Rename HAS_TARGET to HAS_TARGET_P. + Rename local variables I and J to OPNO and ARGNO respectively. + Assert that the number of arguments is no more than the number of + input operands. + (mips_expand_builtin_compare): Use an array of arguments rather + than an array of operands. Assert that the number of operands is + as expected. + (add_constant): Rename to... + (mips16_add_constant): ...this. Use XNEW. + (dump_constants_1): Rename to... + (mips16_emit_constants_1): ...this. Use ALL_SCALAR_FIXED_POINT_MODE_P. + (dump_constants): Rename to... + (mips16_emit_constants): ...this. + (mips_sim_wait_reg, mips_sim_record_set): Use END_REGNO. + (mips_set_mips16_mode): Don't call mips_init_split_addresses. + Assign mips16_p to was_mips16_p. + (mips_parse_cpu): Tweak warning message. + (override_options): Rename to... + (mips_override_options): ...this. Move the mips_cost initialization + out of the "shared with GAS" block. Quote option names in error + messages. + (mips_conditional_register_usage): Make local variable REGNO unsigned. + (mips_order_regs_for_local_alloc): Remove register keyword. + +2007-10-21 Richard Sandiford + + * system.h (IN_RANGE): Cast each argument individually. + +2007-10-21 Richard Sandiford + + * config/mips/mips.c (mips_set_mips16_mode) Say sorry for hard-float + MIPS16 code unless using o32 or o64. + +2007-10-21 Richard Sandiford + + * config/mips/mips.c (mips_cannot_change_mode_class): Don't check + for modes smaller than 4 bytes. + * config/mips/mips.md (*movhi_internal, *movqi_internal): Remove + FPR alternatives. + +2007-10-21 Richard Sandiford + + * config/mips/mips-protos.h (mips_output_aligned_bss): Delete. + * config/mips/linux.h (BSS_SECTION_ASM_OP): Delete. + (ASM_OUTPUT_ALIGNED_BSS): Delete. + * config/mips/mips.c (mips_output_aligned_bss): Delete. + +2007-10-21 Richard Sandiford + + * config/mips/mips.c (mips_function_ok_for_sibcall): Only forbid + sibling calls to "mips16" functions if the function satisfies + const_call_insn_operand. + +2007-10-21 Richard Sandiford + + * config/mips/mips.c (mips_va_start): Fix types in calls + to build_int_cst. + +2007-10-21 Richard Sandiford + + * config/mips/mips.c (mips_rtx_costs): Only recognize reciprocals + if ISA_HAS_FP4. + +2007-10-21 Richard Sandiford + + * config/mips/mips.h (ISA_HAS_LDC1_SDC1): New macro. + * config/mips/mips.c (mips_split_64bit_move_p): Use ISA_HAS_LDC1_SDC1 + instead of checking mips_isa. + +2007-10-21 Richard Sandiford + + * doc/invoke.texi (-mpaired-single): Don't say that the option + requires 64-bit code. + * config/mips/mips-protos.h (mips_modes_tieable_p): Declare. + * config/mips/mips.h (ISA_HAS_PAIRED_SINGLE): New macro. + (ISA_HAS_NMADD_NMSUB): Add a mode argument. Return true for + V2SF if ISA_MIPS32R2. + (MODES_TIEABLE_P): Use mips_modes_tieable_p. + * config/mips/mips.c (mips_rtx_costs): Pass a mode argument + to ISA_HAS_NMADD_NMSUB. + (mips_split_doubleword_move): Handle V2SF. + (mips_modes_tieable_p): New function. + (override_options): Report a warning rather than an error when + -mpaired-single is used on ISAs that don't support it; use + ISA_HAS_PAIRED_SINGLE to check that case. + * config/mips/mips.md (MOVE64): New mode iterator. Replace DI + and DF move splitters with a single MOVE64 splitter, thereby adding + a V2SF splitter too. + (SPLITF): Add TARGET_DOUBLE_FLOAT conditions to DI and DF. + Add a TARGET_FLOAT64 condition to TF. Add V2SF to the iterator. + (HALFMODE): Add V2SF. + (*nmadd, *nmadd_fastmath, *nmsub) + (*nmsub_fastmath): Add a mode argument to ISA_HAS_NMADD_NMSUB. + (movv2sf_hardfloat_64bit): Tweak ordering of conditions. + (movv2sf_hardfloat_32bit): New pattern. + (load_low, load_high, store_word): Remove + TARGET_DOUBLE_FLOAT conditions. + +2007-10-20 Jakub Jelinek + + * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Point + saved CR2 offset to low 32 bits of regs->ccr rather than the whole + 64-bit register in 64-bit libgcc. + +2007-10-20 Eric B. Weddington + + * config/avr/avr.c (avr_mcu_types): Add at90pwm2b, at90pwm3b. + * config/avr/avr.h (LINK_SPEC): Likewise. + (CRT_BINUTILS_SPECS): Likewsie. + * config/avr/t-avr (MULTILIB_MATCHES): Likewise. + +2007-10-20 Manuel Lopez-Ibanez + + * doc/invoke.texi (Warning Options): Move -w, -Werror, -Werror= + and -Wfatal-errors together. + +2007-10-20 Alan Modra + + PR target/33812 + * config/rs6000/rs6000.c (rs6000_emit_epilogue): Revert 2007-05-16 + change for vrsave, ie restore after frame pop. + 2007-10-19 David S. Miller * config/sparc/niagara2.md: Fix copyright notice. @@ -316,25 +1315,25 @@ 2007-10-18 Chen Liqin - * config.gcc : update score-*-elf(extra_objs). - * config/score/mac.md : Remove. - * config/score/misc.md : Remove. - * config/score/score7.md : Remove. - * config/score/score-mdaux.h : Remove. - * config/score/score-mdaux.c : Remove. - * config/score/score-version.h : Remove. - * config/score/score-generic.md : New. - * config/score/score3.h : New. - * config/score/score3.c : New. - * config/score/score7.h : New. - * config/score/score7.c : New. - * config/score/mul-div.S : add flush_cache score3 support. - * config/score/elf.h : Fix some typos. - * config/score/score.md : merge score3 and score7 pattern. - * config/score/score.c : use to seperate which target it used. - * config/score/score.h : use to seperate the target macro. - * config/score/score.opt : remove -mmac option , add -mscore3, - -mscore3d and -march OPTION support. + * config.gcc : update score-*-elf(extra_objs). + * config/score/mac.md : Remove. + * config/score/misc.md : Remove. + * config/score/score7.md : Remove. + * config/score/score-mdaux.h : Remove. + * config/score/score-mdaux.c : Remove. + * config/score/score-version.h : Remove. + * config/score/score-generic.md : New. + * config/score/score3.h : New. + * config/score/score3.c : New. + * config/score/score7.h : New. + * config/score/score7.c : New. + * config/score/mul-div.S : add flush_cache score3 support. + * config/score/elf.h : Fix some typos. + * config/score/score.md : merge score3 and score7 pattern. + * config/score/score.c : use to seperate which target it used. + * config/score/score.h : use to seperate the target macro. + * config/score/score.opt : remove -mmac option , add -mscore3, + -mscore3d and -march OPTION support. 2007-10-17 Andrew Pinski @@ -397,7 +1396,7 @@ IX86_BUILTIN_PSRADI128, IX86_BUILTIN_PSRLWI128, IX86_BUILTIN_PSRLDI128, IX86_BUILTIN_PSRLQI128]: Do not require immediate shift value. - config/i386/emmintrin.h (_mm_slli_epi16, _mm_slli_epi32, + * config/i386/emmintrin.h (_mm_slli_epi16, _mm_slli_epi32, _mm_slli_epi64, _mm_srai_epi16, _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32, _mm_srli_epi64): Remove 'const' from count argument. Remove macros for !__OPTIMIZE__ case. @@ -504,8 +1503,8 @@ 2007-10-15 Razya Ladelsky - * matrix-reorg.c (gate_matrix_reorg): Don't comment out whole - program flag. + * matrix-reorg.c (gate_matrix_reorg): Don't comment out whole + program flag. 2007-10-15 Jakub Jelinek @@ -709,7 +1708,7 @@ 2007-10-10 Wolfgang Gellerich * opth-gen.awk: Fixed generation of comment stating the origin - of options.h + of options.h 2007-10-10 Kazu Hirata @@ -919,7 +1918,7 @@ * config/m68k/m68k.h (ASSEMBLER_DIALECT): New. 2007-10-06 Eric Botcazou - Nathan Froyd + Nathan Froyd * dwarf2out.c (dwarf2out_frame_init): Check for DWARF2_FRAME_INFO when determining whether to record INCOMING_RETURN_ADDR_RTX. @@ -966,7 +1965,8 @@ * ra-conflict.c: Include "sparseset.h". (conflicts): Change to HOST_WIDEST_FAST_INT. (allocnos_live): Redefine variable as a sparseset. - (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, GET_ALLOCNO_LIVE): Delete macros. + (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, GET_ALLOCNO_LIVE): + Delete macros. (allocno_row_words): Removed global variable. (partial_bitnum, max_bitnum, adjacency_pool, adjacency): New variables. (CONFLICT_BITNUM, CONFLICT_BITNUM_FAST): New defines. @@ -999,7 +1999,8 @@ Use the FOR_EACH_CONFLICT macro. * ra.h: Comments updated. (conflicts): Update prototype to HOST_WIDEST_FAST_INT. - (partial_bitnum, max_bitnum, adjacency, adjacency_pool): Add prototypes. + (partial_bitnum, max_bitnum, adjacency, adjacency_pool): + Add prototypes. (ADJACENCY_VEC_LENGTH, FOR_EACH_CONFLICT): New defines. (adjacency_list_d, adjacency_iterator_d): New types. (add_neighbor, adjacency_iter_init, adjacency_iter_done, @@ -1642,8 +2643,8 @@ 2007-09-25 Bernd Schmidt * config/bfin/bfin.c (expand_prologue_reg_save, - expand_epilogue_reg_restore): Code to save and restore I/M/B/L regs and - ASTAT moved here... + expand_epilogue_reg_restore): Code to save and restore I/M/B/L regs + and ASTAT moved here... (expand_interrupt_handler_prologue, expand_interrupt_handler_epilogue): ... from here. New argument ALL; callers changed. (n_regs_saved_by_prologue): Count ASTAT for plain saveall functions.