blob: 888821fda465a7c4b83c7c7252ace87b6d8f951e [file] [log] [blame]
2005-12-31 Andrew Pinski <>
PR tree-opt/25612
* tree-ssa-pre.c (compute_avail): Treat the static chain decl as a
parameter and pretend that it is defined in the entry basic block.
2005-12-30 Kazu Hirata <>
* tree-outof-ssa.c (_elim_graph): Change the type of STACK to
(new_elim_graph, delete_elim_graph, elim_forward,
eliminate_phi): Use the VEC API on STACK.
2005-12-29 Daniel Berlin <>
* tree.h (VALUE_HANDLE_VUSES): New.
(struct tree_value_handle): Add vuses.
* tree-vn.c (struct val_expr_pair_d): Remove stmt, add vuses.
(vn_compute): Remove stmt argument.
Don't use vuses in hash value computation.
(val_expr_pair_eq): Compare vuse lists.
(copy_vuses_from_stmt): New function.
(shared_vuses_from_stmt): Ditto.
(vn_add): Rewrite in terms of vn_add_with_vuses.
(vn_add_with_vuses): New function.
(vn_lookup): Rewrite in terms of vn_lookup_with_vuses.
(vn_lookup_with_vuses): New function.
(vuses_compare): New function.
(print_creation_to_file): Ditto.
(vn_lookup_or_add): Rewrite to handle vuses.
(sort_vuses): New function.
(vn_lookup_or_add_with_vuses): Ditto.
(vn_init): Initialize shared_lookup_vuses.
(vn_delete): Free shared_lookup_vuses.
* tree-ssa-pre.c: Update todo list.
(bb_value_sets_t): Add rvuse_in, rvuse_out, rvuse_gen, and
(RVUSE_IN): New macro.
(RVUSE_GEN): Ditto.
(RVUSE_KILL): Ditto.
(RVUSE_OUT): Ditto.
(modify_expr_node_pool): New function.
(pretemp): New.
(storetemp): Ditto.
(mergephitemp): Ditto.
(prephitemp): Ditto.
(struct expr_pred_trans_d): Add vuses member.
(expr_pred_trans_eq): Compare vuses.
(phi_trans_lookup): Add vuses argument.
(phi_trans_add): Ditto.
(translate_vuses_through_block): New function.
(phi_translate): Use vuses to ask about those expressions that can
have vuses.
Properly translate virtual uses through phis, and use
vn_lookup_or_add_with vuses. Handle tcc_reference.
(phi_translate_set): Don't add pointless translations to the
(get_representative): New function.
(vuses_dies_in_block_x): Ditto.
(valid_in_set): Add block argument. Check virtual use validity.
(clean): Add block argument. Update call to valid_in_set
(compute_antic_aux): Update call to clean.
(dump_bitmap_of_names): New function.
(compute_vuse_representatives): Ditto.
(compute_rvuse): Ditto.
(can_value_number_call): Modified to accept calls with vuses.
(can_value_number_operation): New function.
(can_PRE_operation): Ditto.
(need_creation): New vector of stores that may need creation.
(find_or_generate_expression): use can_PRE_operation.
(create_expression_by_pieces): Handle INDIRECT_REF.
Only create one temp until we have to change types.
Mark new vars for renaming.
(insert_into_preds_of_block): Ignore loopiness of loads.
Use can_PRE_operation.
Only create one temp until we have to chnge types.
(insert_aux): Use can_PRE_operation.
Don't pass name to insert_into_preds_of_block.
(insert_extra_phis): Only use one temp until we have to change
(poolify_tree): New function.
(modify_expr_template): New var.
(poolify_modify_expr): New function.
(insert_fake_stores): Ditto.
(realify_fake_stores): Ditto.
(compute_avail): Use can_value_number_operation.
(mark_operand_necessary): Return NULL for non-SSA names.
(remove_dead_inserted_code): Update comment.
(init_pre): Initialize pretemp, need_creation, storetemp,
mergephitemp, prephitemp.
Create modify_expr_node_pool.
(fini_pre): Free modify_expr_node_pool and need_creation array.
(execute_pre): Call insert_fake_stores, compute_rvuse, and
* tree-flow.h (vn_compute): Fix prototype.
(vn_add): Ditto.
(vn_lookup): Ditto.
(sort_vuses): New.
(vn_lookup_or_add_with_vuses): Ditto.
(vn_add_with_vuses): Ditto.
(vn_lookup_with_vuses): Ditto.
* passes.c (pass_may_alias): Add.
2005-12-30 Gabriel Dos Reis <>
* c-pretty-print.h (struct c_pretty_print_info): Add new member
(pp_constant): New macro.
* c-pretty-print.c (pp_c_pretty_printer_init): Set pp->constant.
2005-12-30 John David Anglin <>
PR fortran/25586
* Remove REG_POINTER check from REG+REG peephole2 floating-point
store patterns.
2005-12-29 Kenneth Zadeck <>
* bitmap.c (bitmap_element_free, bitmap_element_link,
bitmap_elt_insert_after, bitmap_and, bitmap_and_compl,
bitmap_and_compl, bitmap_ior, bitmap_ior_into, bitmap_xor,
bitmap_xor_into): Added code to properly maintain the variants
associated with the CURRENT and HEAD fields.
(bitmap_popcount, bitmap_clear_range, bitmap_compl_and_into): New
* bitmap.h: Added defs for bitmap_popcount, bitmap_clear_range,
and bitmap_compl_and_into.
2005-12-29 Mike Stump <>
* doc/invoke.texi (Objective-C and Objective-C++ Dialect Options
-fobjc-exceptions): Don't imply this doesn't work with the GNU
2005-12-29 Nathan Sidwell <>
* varasm.c (get_section): Use gcc_assert.
2005-12-29 Paul Brook <>
* config/m68k/m68k.h (RETURN_ADDR_RTX): Define.
* config/m68k/m68k.c (m68k_initial_elimination_offset): Remove FIXME.
Include offset due to FIRST_PARM_OFFSET.
2005-12-29 Paul Brook <>
* config/m68k/lb1sf68.asm (__cmpdf2): Fix typo in immediate mask.
Create wrapper and rename body...
(__cmpdf2_internal): ... to this. Return correct value for unordered
(__cmpsf2): Create wrapper and rename body...
(__cmpsf2_internal): ... to this. Return corerct value for unordered
(__eqdf2, __nedf2, __gtdf2, __gedf2, __ltdf2, __ledf2): Use
(__eqsf2, __nesf2, __gtsf2, __gesf2, __ltsf2, __lesf2): Use
2005-12-29 Paul Brook <>
* config/m68k/fpgnulib.c (__extendsfdf2): Handle negative zero.
(__truncdfsf2): Ditto.
(__extenddfxf2): Ditto.
(__truncxfdf2): Ditto.
* config/m68k/lb1sf68.asm (__addsf3): Return -0.0 for -0.0 + -0.0.
(__adddf3): Ditto.
2005-12-29 Daniel Jacobowitz <>
Paul Brook <>
* config/m68k/m68k.c (m68k_output_pic_call): Don't use bsr.l for
* config/m68k/t-m68kelf (EXTRA_PARTS): Remove.
* config/m68k/t-uclinux (EXTRA_PARTS): Remove.
2005-12-29 Alan Modra <>
PR target/25572
* config/rs6000/rs6000.c (create_TOC_reference): Set regs_ever_live.
2005-12-28 Nathan Sidwell <>
* config.gcc (mt-*-*): Add --with-arch support.
(--with): Print accepted options on error.
* config/mt/mt.h (OPTION_DEFAULT_SPECS): Define.
* config/mt/mt.c (DEF_VEC_P(basic_block),
DEF_VEC_ALLOC_P(basic_bloc,heap)): Remove from here.
2005-12-28 Daniel Berlin <>
Fix PR tree-optimization/25394
* fold-const.c (fold_checksum_tree): Guard
portions of checksumming with correct structure checks.
2005-12-27 Kazu Hirata <>
* global.c, tree-ssa-pre.c: Move DEF_VEC_P(basic_block) and
DEF_VEC_ALLOC_P(basic_block,{gc,heap}) to ...
* basic-block.h: ... here.
2005-12-27 Roger Sayle <>
* fold-const.c (int_const_binop): Return NULL_TREE when an expression
can't be evaluated at compile-time (instead of calling abort).
Return NULL_TREE for division (and modulus) by zero.
(const_binop): Return NULL_TREE for floating point operators that
aren't handled by real_arithmetic.
(fold_binary): Eliminate "wins" variable, and "binary" label, by
folding operators with constant operands early. Assert that
operands are non-NULL.
2005-12-27 Kazu Hirata <>
* tree-vrp.c (extract_range_from_binary_expr): Use
build_int_cst instead of fold_convert.
2005-12-26 Mark Mitchell <>
PR c++/23171, c++/23172, c++/25417.
* c-decl.c (compound_literal_number): Remove.
(build_compound_literal): Use set_compound_literal_name.
* c-common.c (compound_literal_number): New variable.
(set_compound_literal_name): New function.
* c-common.h (set_compound_literal_name): Declare.
2005-12-26 Kazu Hirata <>
PR tree-optimization/25125
* convert.c (convert_to_integer): Don't narrow the type of a
PLUS_EXPR or MINUS_EXPR if !flag_wrapv and the unwidened type
is signed.
2005-12-26 Graham Stott <>
PR middle-end/25568
* combine.c (simplify_shift_const_1 <case PLUS>):Fix enable-checking
rtl bootstrap failure.
2005-12-25 Kazu Hirata <>
* final.c (compute_alignments): Make it static.
* gcse.c (gcse_main, bypass_jumps): Likewise.
* web.c (web_main): Likewise.
* output.h: Remove the prototype for compute_alignments.
* rtl.h: Remove the prototypes for web_main, gcse_main, and
2005-12-24 Roger Sayle <>
* expr.c (force_operand): Use expand_fix and expand_float to
implement integer <-> FP conversions instead of convert_to_mode.
2005-12-24 Mark Mitchell <>
PR c++/23171
* varasm.c (initializer_constant_valid_p): An ADDR_EXPR of a
CONSTRUCTOR is invalid.
2005-12-23 Daniel Berlin <>
* tree-pass.h (pass_eliminate_useless_stores): Remove.
* tree-ssa-pre.c (is_copy_stmt): Ditto.
(follow_copies_till_vuse): Ditto.
(do_eustore): Ditto.
(gate_eustores): Ditto.
(pass_eliminate_useless_stores): Ditto.
* passes.c (init_optimization_passes): Ditto.
2005-12-23 Paolo Bonzini <>
* combine.c (simplify_shift_const): Fix typo. Use, whenever
applicable, simplify_const_binary_operation.
(simplify_shift_const): Leave only the fallback
case when no simplification is possible. Extract to...
(simplify_shift_const_1): ... here. Always create a new
RTX instead of substituting. Remove the signed_count variable.
Return NULL_RTX if no substitution is possible.
(simplify_and_const_int): Leave only the fallback
case when no simplification is possible. Extract to...
(simplify_and_const_int_1): ... here. Always create a new
RTX instead of substituting. Return NULL_RTX if no substitution
is possible.
(force_to_mode, simplify_comparison): Don't pass a non-NULL first
parameter to simplify_and_const_int and simplify_shift_const,
unless it is equal to the expected non-simplified result.
2005-12-23 Jakub Jelinek <>
PR target/25005
* regrename.c (replace_oldest_value_reg): Use validate_change with
IN_GROUP set to 1 instead of doing direct modifications.
(copyprop_hardreg_forward_1): Likewise. If any replace_oldest_*
replacements have been performed on an instruction, use
apply_change_group ().
2005-12-23 Hans-Peter Nilsson <>
* config/cris/arit.c (do_31div): Clarify what "31" refers to.
[L_divsi3] (__Udiv): Don't use as inline function.
[L_modsi3] (__Umod): Ditto.
(__Div): Rearrange to call do_31div directly instead of __Udiv.
(__Mod): Similarly regarding __Umod.
PR target/24342
* config/cris/cris.c (cris_split_movdx): Add REG_INC notes for
emitted insns with post-increments.
(cris_expand_epilogue): Ditto.
2005-12-22 Jakub Jelinek <>
Richard Henderson <>
Merge from gomp-branch.
* builtins.def: Move all DEF_SYNC_BUILTIN to ...
* sync-builtins.def: ... new file.
BUILT_IN_LOCK_RELEASE_16): New builtins.
* builtin-types.def (BT_I16, BT_FN_I16_VPTR_I16,
BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add.
* builtins.c (expand_builtin): Handle sync BUILT_IN_*_16 builtins.
* c-common.c (enum c_builtin_type): Move to top-level from
c_common_nodes_and_builtins enum builtin_type.
(builtin_types): Move from c_common_nodes_and_builtins.
(def_fn_type): New.
(c_common_nodes_and_builtins): Use it.
(def_builtin_1): Check for error_mark_node.
(sync_resolve_size): Handle also 128 bit sync builtins.
* (BUILTINS_DEF): New. Use it instead of builtins.def.
* config/i386/i386.h (x86_cmpxchg8b, x86_cmpxchg16b): New decls.
* config/i386/i386.c (x86_cmpxchg8b, x86_cmpxchg16b): New variables.
* config/i386/ (CASMODE, DCASMODE): New mode macros.
(doublemodesuffix, DCASHMODE): New mode attrs.
(sync_compare_and_swap<mode>): Change into expand, use CASMODE
instead of IMODE, if mode is wider than a word, expand into
(*sync_compare_and_swap<mode>): New insn.
(sync_double_compare_and_swap<mode>): Likewise.
(*sync_double_compare_and_swapdi_pic): Likewise.
(sync_compare_and_swap_cc<mode>): Use CASMODE instead of IMODE, if
mode is wider than a word, expand into
(sync_double_compare_and_swap_cc<mode>): New insn.
(*sync_double_compare_and_swap_ccdi_pic): Likewise.
2005-12-22 Richard Henderson <>
* config/i386/mmintrin.h (_mm_add_si64): Only define for SSE2.
(_mm_sub_si64): Likewise.
* config/i386/xmmintrin.h (_mm_shuffle_pi16, _m_pshufw): Likewise.
2005-12-23 Alan Modra <>
PR rtl-optimization/25432
* reload1.c (eliminate_regs_in_insn): Update insn code on
successfully re-recognizing modified insn.
2005-12-22 Richard Guenther <>
* tree.c (tree_fold_gcd): Use build_int_cst where appropriate.
* tree-ssa-loop-ivcanon.c (create_canonical_iv): Likewise.
* varasm.c (array_size_for_constructor): Likewise.
* fold-const.c (size_diffop, invert_truthvalue,
optimize_bit_field_compare, make_range, build_range_check,
fold_cond_expr_with_comparison, fold_truthop,
fold_single_bit_test_into_sign_test, fold_binary): Likewise.
2005-12-22 Dale Johannesen <>
* config/i386/ (sse_movhlps): Reverse operands for
2nd and 3rd alternatives.
2005-12-22 Andrew Pinski <>
PR tree-opt/25513
* tree-dfa.c (make_rename_temp): Set DECL_COMPLEX_GIMPLE_REG_P complex
2005-12-22 Zdenek Dvorak <>
Steven Bosscher <>
* df.c (df_bitmaps_free): Only work for bbs for that structures are
(df_bb_modify): Realloc tables to the new index.
(df_find_use): New function.
(df_find_def, df_reg_used): Handle subregs.
* df.h (df_find_use): Declare.
* loop-invariant.c: Include hashtab.h.
(struct invariant): Remove processed field, add eqto and reg fields.
(struct invariant_expr_entry): New.
(invariant_for_use, hash_invariant_expr_1, invariant_expr_equal_p,
hash_invariant_expr, eq_invariant_expr, find_or_insert_inv,
find_identical_invariants, merge_identical_invariants): New functions.
(create_new_invariant): Return the new invariant. Initialize new
(find_invariants): Call merge_identical_invariants.
(get_inv_cost, best_gain_for_invariant, set_move_mark,
move_invariant_reg): Handle equivalent invariants.
* (loop-invariant.o): Add HASHTAB_H dependency.
2005-12-22 Volker Reichelt <>
PR c++/23333
* c-lex.c (c_lex_with_flags): Add PURE_ZERO to cpp_flags if
number is a single digit '0'.
2005-12-22 Kazu Hirata <>
PR tree-optimization/23518
* fold-const.c (make_range): Don't move a constant to the
other side of the comparison if the type is signed and -fwrapv
is given.
2005-12-22 Kazu Hirata <>
* tree-vrp.c (extract_range_from_binary_expr): Clean up uses
of vr0.type.
2005-12-21 Joseph S. Myers <>
PR middle-end/24998
* config/arm/t-arm-elf (LIB1ASMFUNCS): Add _floatundidf and
2005-12-21 Andrew Haley <>
PR middle-end/25121
* recog.c (peephole2_optimize): Don't peephole any
2005-12-21 Kazu Hirata <>
* tree-data-ref.c (estimate_niter_from_size_of_data): Replace
fold_build2 with fold_binary.
* tree-ssa-ccp.c (visit_assignment, maybe_fold_stmt_addition):
Replace fold_build1 with fold_unary.
* tree-ssa-reassoc.c (optimize_ops_list): Replace fold_build2
with fold_binary.
2005-12-21 Steven Bosscher <>
PR rtl-optimization/25196
* postreload-gcse.c (record_last_set_info): Notice stack pointer
changes in push insns without REG_INC notes.
2005-12-21 Kazu Hirata <>
PR tree-optimization/25382.
* tree-vrp.c (extract_range_from_binary_expr): Extract a range
2005-12-21 Janis Johnson <>
Ben Elliston <>
* Enable C extension for decimal float if invoked
with --enable-decimal-float.
* doc/install.texi (Configuration): Document it.
* configure, Regenerate.
2005-12-20 Mike Stump <>
* config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Handle the
ambiguity between -seg_addr_table and -seg_addr_table_filename.
(LINK_SPEC): Likewise.
2005-12-20 Kenneth Zadeck <>
* cfganal.c (flow_reverse_top_sort_order_compute):
Renamed to post_order_compute and additional parameter added which
allows the inclusion of entry and exit blocks into list.
(mark_dfs_back_edges): Fixed comment.
(flow_depth_first_order_compute): Renamed to
pre_and_rev_post_order_compute additional parameter added which
allows the inclusion of entry and exit blocks into list.
* global.c (set_up_bb_rts_numbers): Call to
flow_reverse_top_sort_order_compute renamed to
* var-tracking.c (vt_stack_adjustments): Fixed comment.
(vt_find_locations): Call to
flow_depth_first_order_compute renamed to
* cfgloop.c (flow_find_loops): Ditto.
* tree-ssa-reassoc.c (init_reassoc): Ditto.
* df.c (df_analyze_1, df_analyze_subcfg): Calls to
flow_reverse_top_sort_order_compute renamed to post_order_compute
and calls to flow_reverse_top_sort_order_compute renamed to
* basic_block.h: Ditto.
2005-12-20 Roger Sayle <>
Paolo Bonzini <>
PR rtl-optimization/25115
* gcse.c (pre_insert_copy_insn): Fall back to the sole
SET in the insn if there is no SET for an
expression that is equivalent to EXPR.
2005-12-20 Richard Guenther <>
PR middle-end/24306
* builtins.c (std_gimplify_va_arg_expr): Do not align
va frame for zero sized types.
* config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
2005-12-20 Kazu Hirata <>
PR tree-optimization/25501
* tree-cfgcleanup.c (merge_phi_nodes): Check that RESULT is
used in the PHI argument corresponding to the edge from BB to
2005-12-20 Richard Guenther <>
2005-12-02 Richard Guenther <>
* tree-cfg.c (mark_used_vars): New function.
(dump_function_to_file): Dump only used VAR_DECLs.
2005-12-19 Roger Sayle <>
* combine.c (try_combine): Improve splitting of binary operators
by taking advantage of reassociative transformations.
2005-12-19 Jeff Law <>
* tree-ssa-dom.c (thread_across_edge): Do not use local_fold.
Strip away all type conversions after simplifying the
* tree-cfgcleanup.c (merge_phi_nodes): Allow merging in some
cases the forwarder block dominates the destination.
2005-12-19 DJ Delorie <>
* reload1.c (spill_failure): Dump reload data to dump file.
(find_reload_regs): Likewise.
2005-12-19 Zdenek Dvorak <>
PR tree-optimization/24793
* tree-ssa-loop-ivopts.c (get_ref_tag): Remember the
original reference if there are subvars.
* tree-ssa-operands.c (get_tmr_operands): Handle subvars.
2005-12-19 Kenneth Zadeck <>
* df.c (df_analyze_1, df_analyze_subcfg, iterative_dataflow):
Corrected basic block number calculations for changes in entry and
exit numbering.
2005-12-19 Zdenek Dvorak <>
* tree-flow.h (struct var_ann_d): Change type of
may_aliases field to VEC(tree, gc) *.
(may_aliases): Declaration changed.
* tree-ssa-alias.c (group_aliases, add_may_alias,
replace_may_alias, dump_may_aliases_for,
is_aliased_with, add_type_alias, new_type_alias):
Work with VEC(tree, gc) * instead of varray.
* tree-flow-inline.h (may_aliases): Ditto.
* tree-ssa.c (verify_flow_insensitive_alias_info,
verify_name_tags): Ditto.
* tree-ssa-operands.c (add_stmt_operand): Ditto.
2005-12-19 J"orn Rennecke <>
* cfgcleanup.c: Temporarily revert patches for PR 20070 till Bernd
comes back.
2005-12-19 J"orn Rennecke <>
* struct-equiv.c (struct_equiv_improve_checkpoint): Fix sets_cc0_p
2005-12-19 Ben Elliston <>
* doc/install.texi (Configuration): Typo in Fortran subheading.
2005-12-19 Nathan Sidwell <>
* config/mt/ (decrement_and_branch_until_zero): Add another
scratch. Correct its reload split. Adjust its peephole.
(doloop_end): Add additional scratch.
(nop): Use 'nop'.
* config/mt/mt.c (MT_INT_ARG_FIRST): Remove.
(mt_asm_output_opcode, mt_print_operand): Use 'nop'.
(mt_function_arg_slotno): Use FIRST_ARG_REGNUM.
(mt_builtin_saveregs): Replace with ...
(mt_setup_incoming_varargs): ... here. Save just the varadic
(mt_va_start): Remove.
(mt_reorg_hazard): Ignore USE insns. Don't call set_noop_p.
(mt_machine_reorg): Split all insns here.
* config/mt/mt.h (TARGET_CPU_CPP_BUILTINS): Define __mt__ only.
Set to CPU type.
2005-12-17 Kenneth Zadeck <>
* flow.c (update_life_info, count_or_remove_death_notes): Fixed
latent bug that could happen if update_life_info was called with a
blocks parameter and the call to cleanup_cfg actually deleted one
of those blocks.
2005-12-19 Zdenek Dvorak <>
* tree-ssa-structalias.c (update_alias_info): Remove handling
of may_be_aliased (SSA_NAME_VAR (op)) case.
2005-12-19 Zdenek Dvorak <>
* tree-flow.h (struct stmt_ann_d): Remove
makes_aliased_loads and makes_aliased_stores fields.
* tree-ssa-ccp.c (likely_value): Do not use makes_aliased_stores
and makes_aliased_loads fields.
* tree-ssa-dom.c (eliminate_redundant_computations): Do not
use makes_aliased_stores.
* tree-ssa-operands.c (clobbered_aliased_loads,
clobbered_aliased_stores, ro_call_aliased_loads): Removed.
(build_ssa_operands, add_stmt_operand, add_call_clobber_ops,
add_call_read_ops): Do not set makes_aliased_stores and
makes_aliased_loads fields.
* tree-ssa.c (verify_ssa): Do not verify makes_aliased_stores
2005-12-18 Geoffrey Keating <>
* config/darwin.h: Don't include darwin-sections.def to declare
global variables; instead create darwin_section_enum.
(darwin_section_enum): New.
(darwin_sections): New.
* config/darwin.c: Don't include darwin-sections.def to define
global variables.
(darwin_sections): New.
(output_objc_section_asm_op): Rewrite to take advantage of
(darwin_init_sections): Rewrite to use darwin_sections.
(machopic_output_indirection): Update for darwin_sections array.
(machopic_select_section): Likewise.
(machopic_select_rtx_section): Likewise.
(machopic_asm_out_constructor): Likewise.
(machopic_asm_out_destructor): Likewise.
(darwin_file_end): Likewise.
* config/rs6000/rs6000.c (machopic_output_stub): Likewise.
* config/i386/i386.c (machopic_output_stub): Likewise.
2005-12-18 Richard Guenther <>
PR tree-optimization/25481
* tree-ssa-structalias.c (handle_ptr_arith): Handle accesses we
don't have a varinfo for.
2005-12-18 Jon Grimm <>
Janis Johnson <>
Ben Elliston <>
* optabs.c (init_floating_libfuncs): Handle decimal float modes.
(init_optabs): Handle libfuncs for decimal float.
* genopinit.c (gen_insn): Handle MODE_DECIMAL_FLOAT.
* stor-layout.c (int_mode_for_mode): Likewise.
* simplify-rtx.c (simplify_immed_subreg): Likewise.
(simplify_unary_operation_1): Skip optimisations for decimal float
* varasm.c (output_constant_pool_2): Handle MODE_DECIMAL_FLOAT.
* emit-rtl.c (gen_const_vector): Add assertion check.
(init_emit_once): Populate const_tiny_rtx with constants in each
decimal float mode.
* expmed.c (extract_high_half, expand_mult_highpart_optab,
expand_mult_highpart): Assert that mode is not a scalar float
* expr.c (convert_move): Handle conversion between decimal and
binary floats of the same size.
* convert.c (convert_to_real): Consider decimal float types when
* dwarf2out.c (base_type_die): Use DW_ATE_decimal_float to
describe decimal floating point types.
2005-12-18 Ulrich Weigand <>
PR rtl-optimization/21041
* reload.c (find_reloads_subreg_address): Replace paradoxical
subreg of MEM by widened access only if the resulting memory
is properly aligned, even on !STRICT_ALIGNMENT targets.
2005-12-18 Andreas Krebbel <>
* tree-cfg.c (tree_flow_call_edges_add): Check for empty basic blocks.
2005-12-18 Steven Bosscher <>
* gcse.c (gcse_main, bypass_jumps): Fix non-GNU-isms from
the 2005-12-17 patch to renumber the entry and exit blocks.
2005-12-18 Gabriel Dos Reis <>
* doc/objc.texi (Type encoding): Fix typo.
2005-12-17 Gabriel Dos Reis <>
* tree-tailcall.c (find_tail_calls): Use XNEW.
* tree-ssa-dom.c (allocate_edge_info): Use XCNEW.
(free_all_edge_infos): Use explicit cast to convert from void *.
(vrp_free): Likewise.
(dom_opt_finalize_block): Likewise.
(record_equivalences_from_incoming_edge): Likewise.
(thread_across_edge): Likewise. Use XCNEWVEC.
(record_cond): Use XCNEW.
(record_conditions): Use XNEWVEC.
(record_edge_info): Use XCNEWVEC.
(lookup_avail_expr): Use XNEW.
(record_range): Likewise. Use GGC_NEW.
* tree-nested.c (var_map_hash): Use explicit cast to convert from
void *.
(var_map_eq): Likewise.
(lookup_field_for_decl): Likewise.
(convert_nonlocal_reference): Likewise.
(convert_local_reference): Likewise.
(convert_nl_goto_reference): Likewise.
(convert_nl_goto_receiver): Likewise.
(convert_call_expr): Likewise.
(convert_tramp_reference): Likewise.
(lookup_tramp_for_decl): Likewise.Use GGC_NEW.
(convert_nl_goto_reference): Likewise.
(lookup_field_for_decl): Use GGC_NEW.
(create_nesting_tree): Use GGC_CNEW.
* tree-ssa-phiopt.c (blocks_in_phiopt_order): Use XNEWVEC.
* tree-ssa-alias.c (init_alias_info): Use XCNEW.
(create_alias_map_for): Likewise.
(setup_pointers_and_addressables): Use XCNEWVEC.
(get_ptr_info): Use GGC_NEW.
(used_part_map_eq): Use explicit cast to convert from void *.
(up_lookup): Likewise.
(up_insert): Use XNEW.
(get_or_create_used_part_for): Use XCNEW.
(get_tmt_for): Likewise.
* tree-ssa-operands.c (ssa_operand_alloc): Use GGC_NEW.
* tree-ssa-pre.c (phi_trans_add): Use XNEW.
(bitmap_set_new): Use explicit cast to convert from void *.
(set_new): Likewise.
(insert_into_set): Likewise.
(pool_copy_list): Likewise.
(phi_translate): Likewise.
(create_value_expr_from): Likewise.
(insert_aux): Use XCNEWVEC.
(compute_avail): Use XNEWVEC.
* tree-ssa-live.c (calculate_live_on_entry): Likewise.
(sort_coalesce_list): Likewise.
(build_tree_conflict_graph): Use XCNEWVEC.
* tree-ssa-dce.c (tree_dce_init): Use XNEWVEC.
* tree-ssa-copy.c (init_copy_prop): Likewise.
(fini_copy_prop): Likewise.
* tree-ssa-uncprop.c (associate_equivalences_with_edges): Use XNEW
(record_equiv): Use XNEW.
(uncprop_into_successor_phis): Use explicit cast to convert from
void *.
(uncprop_initialize_block): Likewise.
2005-12-18 Dorit Nuzman <>
PR tree-optimization/24378
* tree-vect-transform.c (vect_transform_loop): Create single-predecessor
basic-block after loop-versioning.
2005-12-18 Jeff Law <>
* tree-ssa-dom.c (simplify_switch_and_lookup_avail_expr): Code
to simplify SWITCH_EXPR_CODE moved from here to ...
* tree-ssa-forwprop.c (simplify_switch_expr): Here.
(tree-ssa-forward_propagate_single_use_vars): Call
simplify_switch_expr when appropriate.
2005-12-17 Andrew Pinski <>
* doc/objc.texi (Type encoding): Add documentation about encoding
complex types and _Bool.
2005-12-17 Paul Brook <>
* config/m68k/ (m68k_output_function_prologue): Always call
dwarf2out_def_cfa. Only add space for frame pointer to cfa_offset
when frame_pointer_needed.
2005-12-17 Gabriel Dos Reis <>
* tree-vn.c (vn_add): Use XNEW.
* tree-ssa-ccp.c (ccp_initialize): Use XNEWVEC.
(ccp_fold): Likewise.
(fold_stmt_r): Use explicit cast to convert from void *.
* tree-outof-ssa.c (new_temp_expr_table): Use XCNEWVEC.
(new_temp_expr_table): Likewise.
* gimplify.c (lookup_tmp_var): Use XNEW.
(gimplify_asm_expr): Use explcit cast to convert from void *.
* tree-into-ssa.c (get_ssa_name_ann): Likewise.
(get_def_blocks_for): Use XNEW.
(add_to_repl_tbl): Likewise.
(mark_def_sites): Use explicit cast to convert from void *.
(def_blocks_free): Likewise.
(mark_def_sites_initialize_block): Likewise.
(update_ssa): Use XNEWVEC.
* tree-dfa.c (create_var_ann): Use GGC_NEW.
(create_stmt_ann): Likewise.
(create_tree_ann): Likewise.
(referenced_var_insert): Likewise.
(set_default_def): Likewise.
(referenced_var_lookup_if_exists): Use explicit cast to convert
from void *.
(referenced_var_lookup): Likewise.
(default_def): Likewise.
(set_default_def): Likewise.
* tree-cfg.c (create_bb): Likewise.
(edge_to_cases_cleanup): Likewise.
(verify_node_sharing): Likewise.
(record_switch_edge): Use XNEW.
(cleanup_dead_labels): Use XCNEWVEC.
(tree_duplicate_sese_region): Use XNEWVEC.
* tree-scalar-evolution.c (get_instantiated_value): Likewise.
* tree-ssa.c (verify_ssa): Use XCNEWVEC.
(int_tree_map_eq): Use explicit cast to convert from void *.
* libgcov.c (gcov_exit): Use explicit cast to convert from void *.
(__gcov_execl): Likewise.
(__gcov_execlp): Likewise.
(__gcov_execle): Likewise.
* tree-eh.c (struct_ptr_eq): Likewise.
(struct_ptr_hash): Likewise.
(lookup_stmt_eh_region_fn): Likewise.
(outside_finally_tree): Likewise.
(find_goto_replacement): Likewise.
(make_eh_edge): Likewise.
(mark_eh_edge): Likewise.
(add_stmt_to_eh_region_fn): Use GGC_NEW.
(record_in_finally_tree): Use XNEW.
(maybe_record_in_goto_queue): Use XRESIZEVEC.
(lower_try_finally_copy): Use XCNEWVEC.
2005-12-17 Gabriel Dos Reis <>
* tree-inline.c (copy_body_r): Use explicit cast when converting
from void *.
(copy_bb): Likewise.
(copy_edges_for_bb): Likewise.
(remap_decl_1): Likewise.
(estimate_num_insns_1): Likewise.
* cgraph.c (hash_node): Use explicit cast when converting from
void *.
(eq_node): Likewise.
(cgraph_create_node): Use GGC_CNEW.
(cgraph_create_edge): Use GGC_NEW.
(cgraph_remove_node): Use explicit cast when converting from void *.
(hash_varpool_node): Likewise.
(eq_varpool_node): Likewise.
(cgraph_varpool_node): Use GGC_CNEW.
* lambda.h (lambda_vector_new): Use GGC_CNEWVEC.
* tree-scalar-evolution.c (new_scev_info_str): Use XNEW.
(eq_scev_info): Use explicit cast when converting from void *.
(find_var_scev_info): Likewise.
(set_instantiated_value): Likewise.
(gather_stats_on_scev_database_1): Likewise.
* cfgloop.h (simple_loop_desc): Use explicit cast when converting
from void *.
* c-pch.c (c_common_write_pch): Use XNEWVEC.
(c_common_read_pch): Likewise.
* prefix.c (save_string): Use XNEWVEC.
(translate_name): Use explicit cast when converting from void *.
* c-ppoutput.c (print_line): Use explicit cast when converting
from void *.
(pp_dir_change): Likewise.
* c-cppbuiltin.c (builtin_define_std): Likewise.
(builtin_define_with_value): Likewise.
(builtin_define_with_value_n): Likewise.
(builtin_define_with_int_value): Likewise.
(builtin_define_type_max): Likewise.
* c-incpath.c (add_env_var_paths): Use XNEWVEC.
(add_path): Use XNEW.
* c-format.c (check_format_info_main): Use GGC_NEW.
(format_type_warning): Use explicit cast when converting from void *.
* c-typeck.c (alloc_tagged_tu_seen_cache): Use XNEW instead of
(start_init): Likewise.
* tree-flow-inline.h (first_referenced_var): Use explicit cast
when converting from void *.
(next_referenced_var): Likewise.
* c-pragma.c (push_alignment): Use GGC_NEW instead of ggc_alloc.
* gensupport.c (lookup_predicate): Use explicit cast to convert
from void *.
(init_predicate_table): Use XCNEW instead of xcalloc.
* genpreds.c (process_define_predicate): Likewise.
2005-12-17 Danny Berlin <>
Kenneth Zadeck <>
* basic-block.h: Changed basic block numbering so that the entry
block is 0 and the exit block is 1. Changed insn iterators so
that they are tolerant of blocks with no insns.
* regrename.c (copyprop_hardreg_forward): Changed basic block
numbering so that the entry block is 0 and the exit block is 1.
* sched-ebb.c (sehedule_ebbs): Ditto.
* tracer.c (branch_ratio_cutoff): Ditto.
* cfgloopmanip.c (fix_loop_structure): Ditto.
* cfghooks.c (verify_flow_info): Ditto.
* cfg.c (compact_blocks): Ditto.
* reorg.c (dbr_schedule): Ditto.
* flow.c (calculate_global_regs_live, libcall_dead_p): Ditto.
* dominance.c (calc_dfs_tree_nonrec, calc_dfs_tree,
calculate_dominance_info): Ditto.
* cfganal.c (create_edge_list, print_edge_list,
flow_depth_first_order_compute, flow_dfs_compute_reverse_init,
flow_dfs_compute_reverse_add_bb, flow_dfs_compute_reverse_execute,
dfs_enumerate_from): Ditto.
* global.c (global_alloc, set_up_bb_rts_numbers): Ditto.
* ifcvt.c (find_if_case_2): Ditto.
* cfgbuild.c (control_flow_insn_p, count_basic_blocks,
find_basic_blocks): Ditto.
* predict.c (predict_loops, tree_bb_level_predictions,
predict_paths_leading_to, propagate_freq): Ditto.
* lcm.c (compute_antinout_edge, compute_laterin,
compute_available): Ditto.
* function.c (thread_prologue_and_epilogue_insns): Ditto.
* gcse.c (gcse_main, bypass_jumps): Ditto.
* profile.c (compute_branch_probabilities,
compute_value_histograms, branch_prob): Ditto.
* tree-flow-inline.h (bsi_start, bsi_after_labels,
bsi_last): Ditto.
* tree-ssa-phiopt.c (tree_ssa_phiopt,
blocks_in_phiopt_order): Ditto.
* bt-load.c (compute_defs_uses_and_gen, compute_kill,
compute_out, link_btr_uses, migrate_btr_defs): Ditto.
* tree-dfa.c (collect_dfa_stats): Ditto.
* cfgcleanup.c (try_forward_edges, try_optimize_cfg): Ditto.
* cfglayout.c (fixup_reorder_chain): Ditto.
* bb-reorder.c (reorder_basic_blocks, duplicate_computed_gotos,
partition_hot_cold_basic_blocks): Ditto.
* var-tracking.c (vt_find_locations): Ditto.
* cfgloop.c (flow_loops_cfg_dump, flow_loops_find, get_loop_body): Ditto.
* sched-rgn.c (compute_trg_info, init_regions, schedule_insns): Ditto.
* tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, make_edges
label_to_block_fn, print_loop_ir, tree_flow_call_edges_add): Ditto.
* tree-ssa-reassoc.c (init_reassoc): Ditto.
* cfgrtl.c (entry_of_function, rtl_verify_flow_info,
rtl_flow_call_edges_add, rtl_flow_call_edges_add): Ditto.
* df.c (df_analyze_1, hybrid_search, iterative_dataflow): Ditto
and removed unused reverse orders.
* df.h (): Ditto.
* combine.c: Fix document typo.
2005-12-17 Jan Hubicka <>
* tree-flow-inline.h (set_default_def, default_def): Kill.
* tree-dfa.c (default_defs): New global variable.
(default_def, set_default_def): New functions.
* tree-ssa.c (init_tree_ssa, delete_tree_ssa): Add default_def hash.
* tree-flow.h (struct var_ann_d): Kill default_def field.
(set_default_def, default_def): Update prototype.
(default_defs): Declare.
2005-12-16 Jeff Law <>
* tree-ssa-dom.c (update_rhs_and_lookup_avail_expr): Kill.
(simplify_rhs_and_lookup_avail_expr): Kill. Remnants moved
into tree-ssa-forwprop.c.
(eliminate_redundant_computations): Do not call
simplify_rhs_and_lookup_avail_expr anymore.
* tree-ssa-forwprop.c (simplify_not_neg_expr): New function
extracted from remnants of simplify_rhs_and_lookup_avail_expr.
(tree_ssa_forward_propagate_single_use_vars): Call
simplify_not_neg_expr appropriately.
2005-12-16 Bernd Trog <>
PR target/20016
* config/avr/t-avr: Add -Os to TARGET_LIBGCC2_CFLAGS.
2005-12-17 Kazu Hirata <>
PR rtl-optimization/25456
* struct-equiv.c (struct_equiv_improve_checkpoint): Replace
info->x_start with p->x_start.
2005-12-17 Alan Modra <>
* simplify-rtx.c (simplify_binary_operation_1 <IOR>): Correct bug
introduced 2005-12-16.
2005-12-16 Steven Bosscher <>
PR rtl-optimization/23837
* optabs.c (expand_binop): For a multi-word rotate, never emit
2005-12-16 John David Anglin <>
PR middle-end/25457
* reorg.c (mostly_true_jump): Remove unused variable 'insn'.
PR target/25447
* config/pa/pa.c (pa_scalar_mode_supported_p): Handle
2005-12-16 Steven Bosscher <>
* loop-invariant.c (move_loop_invariants): Add missing hunk from
the previous patch, to nullify df.
2005-12-16 Steven Bosscher <>
* reorg.c (mostly_true_jump): Clean up code depending on
LABEL_OUTSIDE_LOOP_P and loop notes. Remove code doing
poor man's branch prediction, instead rely on REG_BR_PROB
notes to be available.
2005-12-16 Jakub Jelinek <>
PR rtl-optimization/24899
* loop.c (strength_reduce): Don't reduce giv that is not always
computable and where add_val or mult_val can trap.
* doc/invoke.texi (-fdump-tree-*): Remove note about C/C++ only.
2005-12-16 Nathan Sidwell <>
* config/mt/mt.h (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Correct
names of ms1-16-002 files.
2005-12-16 Alan Modra <>
PR driver/20425
* gcc.c (for_each_path): New function.
(add_to_obstack, file_at_path): New functions.
(struct file_at_path_info, struct add_to_obstack_info): New.
(build_search_list): Rewrite using for_each_path. Constify struct
path_prefix pointer. Add do_multi param. Adjust all callers.
(find_a_file): Similarly, but just change existing param to bool.
(putenv_from_prefixes): Add do_multi param, make "paths" const.
(do_spec_path): Delete.
(struct spec_path_info): New.
(spec_path): New function.
(do_spec_1): Use for_each_path for %D and %I.
(find_file): Adjust for find_a_file changes.
(main): Search multilibs for specs. Print multilib lib path for
-print-search-dirs. Likewise add multilibs to LIBRARY_PATH_ENV.
(read_specs): Search multilibs for %include and %include_noerr.
(is_directory): Remove second string param. Change last param
to a bool. Don't use concat. Remove SMALL_ARG_MAX test, always
check path is a dir. Update all callers.
* doc/hostconfig.texi (SMALL_ARG_MAX): Remove mention.
* system.h (SMALL_ARG_MAX): Poison.
* config.gcc: Don't define SMALL_ARG_MAX.
* Likewise.
* Likewise.
2005-12-16 Paolo Bonzini <>
* combine.c (combine_simplify_rtx <case NOT, NEG, TRUNCATE,
simplify_logical): Move simplifications that do not require
additional infrastructure...
* simplify-rtx.c (simplify_unary_operation_1,
simplify_binary_operation_1): ... here.
2005-12-16 Andreas Krebbel <>
PR 24823
* flow.c (mark_used_dest_regs): New function.
(mark_used_regs): Call mark_used_dest_regs.
2005-12-16 Jeff Law <>
* tree-ssa-dse.c (dse_optimize_stmt): Correctly handle PHI nodes which
represent a use and definition of the same SSA_NAME.
2005-12-16 Jon Grimm <>
Janis Johnson <>
Ben Elliston <>
* target.h (struct gcc_target): Add decimal_float_supported_p.
* targhooks.c (default_scalar_mode_supported_p): Handle
* builtins.def: Add new builtins for 32, 64 and 128 bit variants
of inf, nan, finite, isinf and isnan.
* builtin-types.def (BT_DFLOAT32, BT_DFLOAT64, BT_DFLOAT128,
* c-decl.c (declspecs_add_type): Verify combos on type qualifiers.
Pedwarn if decimal floating point types are used. Error if
decimal floating point is not supported by the target.
(finish_declspecs): Return type from DFP typespec_word.
* c-typeck.c (c_common_type): Choose the decimal floating point
type with the greater precision when determining a common type.
(convert_arguments): Warn if there is a mismatch between argument
and prototype for decimal float types. Warn of conversions with
binary float types and of precision narrowing due to prototype.
* c-parser.c (reswords): Add _Decimal32, _Decimal64, _Decimal128.
(c_token_starts_typename): Handle RID_DFLOAT32/64/128.
(c_token_starts_declspecs): Likewise.
(c_parser_attributes): Likewise.
* c-common.h (enum rid): Add new enumeration values RID_DFLOAT32,
(T_D32, TEX_D32, T_D64, TEX_D64, T_D128, TEX_D128): New macros.
* c-common.c (c_common_type_for_mode): Handle decimal float modes.
(shorten_compare): Convert DFP/BFP operands to a common type.
(c_common_modes_and_builtins): Register built-in decimal float
types if the target supports them.
(handle_mode_addtribute): Handle MODE_DECIMAL_FLOAT.
* builtins.c (fold_builtin_1): Handle 32, 64 and 128 bit cases of
inf, nan, finite, isinf and isnan builtins.
* c-cppbuiltin.c (builtin_define_decimal_float_constants): New.
(builtin_define_float_constants): Assert non-decimal radix.
(c_cpp_builtins): Register built-in __DEC_EVAL_METHOD__ define.
Call builtin_define_decimal_float_constants for each type.
* c-lex.c (interpret_float): Decode decimal float types from CPP_N
flags. Use real_from_string3, which can handle binary or decimal
* c-tree.h (enum c_typespec_keyword): Add cts_dfloat32,
cts_dfloat64, cts_dfloat128.
* tree.c (build_common_tree_nodes_2): Add decimal float types.
* tree.h (enum tree_index): Add new enumeration values
(dfloat32_type_node): New macro.
(dfloat64_type_node, dfloat128_type_node): Likewise.
(dfloat32_ptr_type_node, dfloat64_ptr_type_node): Likewise.
(dfloat128_ptr_type_node): Likewise.
* c-pretty-print.c (pp_c_floating_constant): Append 32, 64 and 128
bit decimal floating point types with "df", "dd" and "dl".
* c-format.h (enum format_lengths): Add new enumeration values
* c-format.c (printf_length_specs, scanf_length_specs): Add
entries for H, D, DD.
(print_char_table, scan_char_table): Use new entries.
(asm_fprintf_char_table, gcc_diag_char_table,
gcc_cdiag_char_table, gcc_cxxdiag_char_table): Adjust for longer
length arrays.
* defaults.h (DECIMAL32_TYPE_SIZE): Define.
(DECIMAL64_TYPE_SIZE): Likewise.
(DECIMAL128_TYPE_SIZE): Likewise.
* doc/extend.texi (Decimal Float): New node.
(Constructing Calls): Document decimal float built-ins.
* doc/tm.texi: Document TARGET_DECIMAL_FLOAT_SUPPORTED_P hook.
* (USER_H): Add $(srcdir)/ginclude/decfloat.h.
* ginclude/decfloat.h: New file.
2005-12-16 Alan Modra <>
* reload.c (find_reloads): Fix comment typo.
* recog.h (recog_memoized): Correct comment.
2005-12-16 Kazu Hirata <>
* basic-block.h, config/i386/winnt.c, config/pa/pa.c,
config/s390/s390.c, dfp.c, expr.c, fold-const.c, params.def,
reload.c, struct-equiv.c, tree-ssa-ccp.c, tree-ssa-pre.c,
tree-ssa-reassoc.c, tree-ssa-structalias.c: Fix comment typos.
* doc/invoke.texi, doc/tm.texi: Fix typos.
2005-12-16 Ben Elliston <>
* real.c (decimal_quad_format): Correct values for emin, emax.
2005-12-15 DJ Delorie <>
* config/m32c/ (m32c_psi_scale): New.
* config/m32c/m32c.c (m32c_expand_neg_mulpsi3): New.
* config/m32c/ (mulpsi3): Support negative constants.
2005-12-16 Jan Hubicka <>
PR rtl-optimization/25224
* tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Free copy
2005-12-15 Zdenek Dvorak <>
Steven Bosscher <>
* loop-invariant.c (df): New global variable.
(find_defs, check_dependencies, find_invariant_insn, record_uses,
find_invariants_bb, find_invariants_body, find_invariants,
find_invariants_to_move, move_invariants, free_inv_motion_data,
move_single_loop_invariants, move_loop_invariants): Do not pass df in
2005-12-15 Jakub Jelinek <>
* varasm.c (default_unique_section_1): Use special section
names for SECCAT_DATA_REL{,_RO}{,_LOCAL}.
2005-12-16 Ben Elliston <>
* doc/invoke.texi (Warning Options): Document -Walways-true being
enabled by -Wall.
2005-12-15 Joseph S. Myers <>
PR other/25028
* libgcc2.h (SF_SIZE, DF_SIZE, XF_SIZE, TF_SIZE): Define.
* libgcc2.c (__floatdixf, __floatundixf, __floatditf,
__floatunditf): Use #error if type sizes don't match requirements
of implementation.
(__floatdisf, __floatdidf): Unify. Possibly use XFmode or TFmode
as wider floating-point type. Use #error if type sizes don't
match requirements of implementation. Avoid overflow in computing
Wtype_MAXp1_F * Wtype_MAXp1_F. When special casing conversion,
shift one more bit. Cast 1 to DWtype or UDWtype for shifting.
(__floatundisf, __floatundidf): Likewise.
* config/ia64/hpux.h (XF_SIZE, TF_SIZE): Define.
* config/ia64/ia64.c (ia64_init_libfuncs): Use
_U_Qfcnvfxt_quad_to_quad and _U_Qfcnvxf_quad_to_quad for
TFmode-TImode conversions.
* doc/tm.texi (SF_SIZE, DF_SIZE, XF_SIZE, TF_SIZE): Document.
2005-12-14 Craig Rodrigues <>
* freebsd-spec.h (FBSD_TARGET_OS_CPP_BUILTINS):
Use builtin_define_with_int_value() instead of
adding a new check for every new major FreeBSD version.
2005-12-14 Andrew Pinski <>
* config/t-darwin (darwin-c.o): Depend on $(TREE_H) instead of tree.h.
2005-12-15 Richard Sandiford <>
* config/arm/ (call_memory_operand): New.
* config/arm/ (*call_mem, *call_value_mem): Use it.
2005-12-15 Andrew Haley <>
* unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Guard
against prev_cache_entry == NULL when moving a cache entry to the
head of the list.
2005-12-15 Nathan Sidwell <>
* config/mt/mt.c (mt_override_options): Require lower case
architectures. Revert accidental default to ms2.
ENDFILE_SPEC): Require lower case architectures. Revert default
to ms2.
* doc/invoke.texi (MT Options): Rename and update.
* doc/md.texi (MorphoTech family): Rename and update.
2005-12-15 Olivier Hainque <>
* stor-layout.c (layout_type): Don't complain about a too small
an array element type size compared to its alignment when the
size overflows.
2005-12-15 Jan Hubicka <>
PR target/24969
* i386.c (classify_argument): Properly adjust offset of bitfield for
2005-12-15 Richard Sandiford <>
* final.c (final_scan_insn): Flip in_cold_section_p when changing
between the hot and cold sections. Use current_function_section
to get the new section.
* dwarf2out.c (output_line_info): Use in_cold_section_p to
determine whether we are assembling hot or cold code.
(secname_for_decl, dwarf2out_var_location): Likewise.
(dwarf2out_init, dwarf2out_finish): Use switch_to_section.
* varasm.c (last_text_section): Delete.
(in_cold_section_p): New variable.
(hot_function_section): New function.
(current_function_section): Pass in_cold_section_p as the
reloc argument to select_section. Use it to decide between
unlikely_function_section and hot_function_section.
(assemble_start_function): Use switch_to_section. Set
in_cold_section_p instead of last_text_section.
(assemble_end_function): Use switch_to_section.
(switch_to_section): Don't set last_text_section.
* config/darwin/darwin.c (machopic_select_section): Trust the reloc
argument to make the right choice between hot and cold sections.
2005-12-15 Nathan Sidwell <>
Second part of MS1->MT renaming
* config/mt/ (doloop_end): Call mt_add_loop.
(movqi, movhi): Call mt_set_memflags.
(*movdf_internal): Call mt_split_words.
(reload_inqi, reload_outqi, reload_inhi, reload_outhi): Call
(cmpsi): Store to mt_compare_op[01].
(beq, bne, bge, bgt, ble, blt, bgeu, bgtu, bleu, bltu, bunge,
bungt, bunle, bunlt): Call mt_emit_cbranch.
(prologue): Call mt_expand_prologue.
(epilogu): Call mt_expend_epilogue.
(eh_return): Call mt_expand_eh_return.
(eh_epilogue): Call me_emit_eh_epilogue.
(conditional_trap): Store to mt_compare_op[01].
* config/mt/crti.asm: Adjust comment.
* config/mt/crtn.asm: Adjust comment.
* config/mt/mt.c (MT_INT_ARG_FIRST): Renamed.
(mt_compare_op0, mt_compare_op1): Renamed.
(current_frame_info, zero_frame_info): Adjust type.
(mt_ucmpsi3_libcall): Renamed.
(mt_flag_delayed_branch): Renamed.
(mt_struct_value_rtx, mt_return_addr_rtx): Renamed.
(mt_nops_required, mt_nop_reasons): Renamed.
(mt_asm_output_opcode, mt_get_attr_type, mt_final_prescan_insn,
mt_debug_stack, mt_print_operand_simple_address,
mt_print_operand_address, mt_print_operand): Renamed, adjusted.
(mt_init_cumulative_args, mt_function_arg_slotno, mt_function_arg,
mt_function_arg_advance, mt_arg_partial_bytes,
mt_pass_by_reference, mt_function_arg_boundary,
mt_reg_ok_for_base_p, mt_legitimate_simple_address_p,
mt_legitimate_address_p): Renamed, adjusted.
(mt_cpu): Renamed.
(mt_init_machine_status, mt_override_options, mt_builtin_saveregs,
mt_va_start, mt_compute_frame_size, mt_emit_save_restore,
mt_emit_save_fp, mt_emit_save_regs, mt_interrupt_function_p,
mt_expand_prologue, mt_epilogue_uses, mt_expand_epilogue,
mt_expand_eh_return, mt_emit_eh_prologue,
mt_handl_interrupt_attribute): Renamed, adjusted.
(mt_attribute_table): Renamed, adjusted.
(mt_initial_elimination_offset, mt_generate_compare,
mt_emit_cbranch, mt_set_memflags_1, mt_set_memflags,
mt_secondary_reload_class, mt_function_value, mt_split_words,
mt_pass_in_stack, mt_add_loop, mt_loop_nesting, mt_block_length,
mt_scan_loop, mt_reorg_loops): Renamed, adjusted.
(mt_labels): Renamed.
(mt_add_branches, mt_check_delay_slot, mt_reorg_hazard,
mt_machine_reorg): Renamed, adjusted.
(mt_attribute_table: Renamed.
* config/mt/mt.opt (march): Set mt_cpu_string.
* config/mt/mt.h (mt_ucmpsi3_libcall, mt_cpu): Renamed.
(TARGET_MS1_64_001, TARGET_MS1_16_002, TARGET_MS1_16_003,
TARGET_MS2): Adjust.
(MT_MIN_INT): Renamed.
(struct mt_frame_info): Renamed.
(current_frame_info): Adjust type.
(MT_NUM_ARG_REGS): Renamed.
(mt_compare_op0, mt_compare_op1): Renamed.
* config/mt/mt-protos.h: Rename prototypes.
2005-12-15 Richard Guenther <>
* tree-flow.h (okay_component_ref_for_subvars): Remove.
(get_ref_base_and_extent): Declare.
* tree-dfa.c (okay_component_ref_for_subvars): Remove.
(get_ref_base_and_extent): New function.
* tree-ssa-alias.c (find_used_portions): Use it.
* tree-ssa-structalias.c (get_constraint_for_component_ref):
* tree-ssa-operands.c (get_expr_operands): Likewise.
2005-12-15 Paolo Bonzini <>
* combine.c: Remove force_to_mode's fourth parameter.
(force_to_mode): Do not handle REG.
(canon_reg_for_combine): New.
(make_field_assignment): Use it where the removed argument was non-NULL.
2005-12-15 Alan Modra <>
PR target/25406
* config/rs6000/rs6000.c (rs6000_special_round_type_align): Handle
error_mark_node. Make alignment params unsigned.
* config/rs6000/rs6000-protos.h
(rs6000_special_round_type_align): Update prototype.
(rs6000_machopic_legitimize_pic_address): Remove arg names.
2005-12-14 Ulrich Weigand <>
PR rtl-optimization/25310
* reload1.c (eliminate_regs_in_insn): Handle lowpart SUBREGs
of the eliminable register when substituting into a PLUS.
2005-12-14 Jakub Jelinek <>
PR debug/25023
* config/i386/i386.c (ix86_force_to_memory): Always use
SImode push for HImode in -m32.
(ix86_free_from_memory): Likewise.
2005-12-14 Richard Sandiford <>
* config/arm/ Provide a big-endian version of the
(zero_extend:SI (subreg:QI ...)) splitter.
2005-12-14 J"orn Rennecke <>
* struct-equiv.c (note_local_live): Handle hard regs with different
2005-12-14 Jeff Law <>
* tree-ssa-ccp.c (fold_stmt_r): DATA argument is now a pointer
to a structure containing state rather than a pointer to bool.
(case ARRAY_REF): New code to handle folding some array references.
(case ADDR_EXPR): Note when we are processing expressions found
within an ADDRE_EXPR.
(fold_stmt, fold_stmt_inplace): Pass in a structure to fold_stmt_r
for state variables rather than just a pointer to a boolean.
* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Remove
handling of constant string references.
2005-12-14 Adrian Straetling <>
* config/s390/ ("*tstdi_extimm", "*tstsi_extimm"): Merge.
("*tstdi_cconly_extimm", "*tstsi_cconly_extimm"): Merge.
("*tstdi_cconly2", "*tstsi_cconly2"): Merge.
Move other tst* patterns to retain partial order.
2005-12-14 Adrian Straetling <>
* config/s390/ ("d0", "1"): New mode attributes.
("<shift>di3", "<shift>si3"): Merge.
("*<shift>di3_and", "*<shift>si3_and"): Merge.
("ashrdi3", "ashrsi3"): Merge.
("*ashrdi3_cc", "*ashrsi3_cc"): Merge.
("*ashrdi3_cc_and", "*ashrsi3_cc_and"): Merge.
("*ashrdi3_cconly", "*ashrsi3_cconly"): Merge.
("*ashrdi3_cconly_and", "*ashrsi3_cconly_and"): Merge.
("*ashrdi3", "*ashrsi3"): Merge.
("*ashrdi3_and", "*ashrsi3_and"): Merge.
2005-12-14 Adrian Straetling <>
* config/s390/ ("extend<mode>di2", "extend<mode>si2"): Merge.
("*extendqidi2_extimm", "*extendqisi2_extimm"): Merge.
("*extendqidi2", "*extendqisi2") Merge.
("*extendqidi2_short_displ", "*extendqisi2_short_displ"): Merge.
("zero_extendhidi2", "zero_extendqidi2"): Merge.
("*zero_extend<mode>di2_extimm", "*zero_extend<mode>si2_extimm"): Merge.
Move some patterns to retain partial ordering.
2005-12-14 Adrian Straetling <>
* config/s390/ ("atype", "length"): Rewrite.
("*insv<mode>_reg_imm", "*insv<mode>_reg_extimm"): Add mode.
2005-12-14 Sebastian Pop <>
* tree-ssa-operands.c (build_ssa_operands): Update leading comment.
2005-12-14 J"orn Rennecke <>
* struct-equiv.c (rtx_equiv_p): Allow arbitrary RVALUE values for
PARALLELs with a mode.
2005-12-14 Sebastian Pop <>
* cfgloopmanip.c (lv_adjust_loop_entry_edge): Adjust the type of
cond_expr parameter.
2005-12-14 Sebastian Pop <>
* loop-unswitch.c (unswitch_loop): Free zero_bitmap before returning.
2005-12-14 J"orn Rennecke <>
PR bootstrap/25397:
* struct-equiv.c (struct_equiv_init): Fix off-by-one error in clearing
of STACK_REGS bits.
* struct-euiv.c (rtx_equiv_p): Remove SUBREG case.
2005-12-14 Jakub Jelinek <>
PR target/25254
PR target/24188
* config/i386/i386.c (x86_64_elf_select_section): If DECL is not
DECL_P, call get_section rather than get_named_section. Supply
section flags to it.
2005-12-14 Ben Elliston <>
* c-common.c (c_common_truthvalue_conversion): Generalise warning
for addresses converted to booleans; not just function addresses.
* c-typeck.c (build_binary_op): Warn for address comparisons which
can never be NULL (eg. func == NULL or &var == NULL).
* common.opt (Walways-true): New option.
* c-opts.c (c_common_handle_option): Set it with -Wall.
* doc/invoke.texi: Document it.
2005-12-13 Paul Brook <>
* config/m68k/fpgnulib.c (__unordsf2, __unorddf2, __unordxf2,
__floatunsidf, __floatunsisf, __floatunsixf): New functions.
2005-12-13 Nathan Sidwell <>
* config/mt/t-mt (crti.o, crtn.o): Add multilib options.
2005-12-13 J"orn Rennecke <>
PR rtl-optimization/20070 / part1
* flow.c (update_life_info): If PROP_POST_REGSTACK is set, call
count_or_remove_death_notes with kill == -1.
(mark_set_1): Don't add REG_DEAD / REG_UNUSED notes for stack
registers if PROP_POST_REGSTACK is set.
(mark_used_reg): Likewise.
(count_or_remove_death_notes): If kill is -1, don't remove REG_DEAD /
REG_UNUSED notes for stack regs.
* cfgcleanup.c (condjump_equiv_p): Change parameters and processing
to match rtx_equiv_p machinery. Change caller.
(outgoing_edges_match): Likewise.
(try_crossjump_to_edge): Use struct_equiv_block_eq
instead of flow_find_cross_jump.
(struct struct_equiv_checkpoint, struct equiv_info): Likewise.
(insns_match_p): Update prototype.
(flow_find_cross_jump): Remove prototype.
(struct_equiv_block_eq, struct_equiv_init): Declare.
(rtx_equiv_p, condjump_equiv_p): Likewise.
* struct-equiv.c: Include reload.h.
(assign_reg_reg_set, struct_equiv_make_checkpoint): New functions.
(struct_equiv_improve_checkpoint): Likewise.
(struct_equiv_restore_checkpoint, rtx_equiv_p): Likewise.
(set_dest_equiv_p, set_dest_addr_equiv_p, struct_equiv_init): Likewise.
(struct_equiv_merge, find_dying_input): Likewise.
(resolve_input_conflict, note_local_live): Likewise.
(death_notes_match_p): Change parameters and processing
to match rtx_equiv_p machinery. Change caller.
(insns_match_p): Likewise.
(flow_find_cross_jump): Replace with:
Back out this change:
2005-03-07 Kazu Hirata <>
* recog.c (verify_changes): Make it static.
* recog.h: Remove the corresponding prototype.
2005-12-13 J"orn Rennecke <>
* rtlhooks.c (gen_lowpart_general): Handle SUBREGs of floating point
2005-12-13 Nathan Sidwell <>
* config/mt/t-mt (MULTILIB_OPTIONS): Add ms2
(MULTILIB_DIRNAMES): Add ms2. Prefix ms1 dirs with 'ms1'.
* config/mt/mt.c (ms1_final_prescan): Use TARGET_MS2,
TARGET_MS1_64_001 appropriately.
(ms1_machine_reorg): Use TARGET_MS2.
2005-12-13 Jakub Jelinek <>
PR debug/25023
PR target/25293
* expr.c (emit_move_resolve_push): Handle PRE_MODIFY
and POST_MODIFY with CONST_INT adjustment equal to PUSH_ROUNDING.
Fix POST_INC/POST_DEC handling if PUSH_ROUNDING is not identity.
* config/i386/ (pushhi2, pushqi2): Use pushl instead of pushw.
Set mode to SI, adjust constraints.
(pushhi2_rex64, pushqi2_rex64): Set mode to DI.
* config/i386/i386.h (PUSH_ROUNDING): Round up to 4 instead of 2 for
32-bit code.
2005-12-13 Carlos O'Donell <>
* c-cppbuiltin.c (builtin_define_float_constants): Add
fp_cast parameter, pass to builtin_define_with_hex_fp_value.
(builtin_define_with_hex_fp_value): Use fp_cast when building macro.
(c_cpp_builtins): If flag_single_precision_constant then set fp_cast
to "((double)%sL)" otherwise "%s".
2005-12-13 Paul Brook <>
* config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Pass -meabi=gnu for
2005-12-11 Rafael vila de Espndola <>
* tree-flow.h: Allow compilation with a C++ compiler.
(struct edge_prediction): Prefix all field names with "ep_".
* predict.c (tree_predicted_by_p): Likewise for struct edge_prediction.
(tree_predict_edge, combine_predictions_for_bb): Likewise.
(remove_predictions_associated_with_edge): Likewise.
2005-12-12 Jeff Law <>
* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Remove
reassociation code.
* passes.c (init_optimization_passes): Run reassociation again
after loop optimizations.
2005-12-12 Daniel Berlin <>
* tree-ssa-dom.c (thread_across_edge): Canonicalize condition
if necessary.
(optimize_stmt): Ditto.
(canonicalize_comparison): New function.
* tree-ssa-operands.c (swap_tree_operands): Make external.
(get_expr_operands): Stop auto-canonicalization.
* tree-ssa-reassoc.c: Rewrite.
* tree-flow.h (swap_tree_operands): Prototype.
* (tree-ssa-reassoc.o): Update dependencies.
2005-12-12 John David Anglin <>
* pa.c (pa_output_function_epilogue): Set cfun->machine->in_nsubspa to
indicate function epilogue has been output.
(pa_asm_output_mi_thunk): Likewise.
(output_deferred_plabels): Put plabels in readonly data section when
not generating PIC code.
(som_output_text_section_asm_op): Use .NSUBSPA to output debug
information. Add assert.
(som_output_comdat_data_section_asm_op): New function.
(pa_som_asm_init_sections): Use som_output_comdat_data_section_asm_op
instead of output_section_asm_op for COMDAT sections.
2005-12-12 J"orn Rennecke <>
* cfgcleanup.c (condjump_equiv_p, try_crossjump_to_edge):
Fix whitespace in vincinity of to-be-installed changes.
* struct-equiv.c (merge_memattrs, death_notes_match_p): Fix whitespace.
(insns_match_p): Likewise.
2005-12-12 Nathan Sidwell <>
* config.gcc (ms1): Replace with ...
(mt): ... this.
* config/ms1: Rename to ...
* config/mt: ... here. Rename ms1 files to mt.
* config/mt/mt.c: Adjust gt-mt.h #include.
* config/mt/t-mt (LIB1ASMSRCS, LIB2FUNCS_EXTRA): Adjust.
(crti.o, crtn.o): Adjust file names.
2005-12-12 Gabriel Dos Reis <>
* varray.h: Allow compilation with a C++ compiler.
(union varray_data_tag): Prefix all field names with "vdt_".
* varray.c (varray_grow): Likewise.
(varray_clear): Likewise.
2005-12-12 Alan Modra <>
PR target/25299
* config/rs6000/rs6000.c (rs6000_special_round_type_align): Increase
alignment to doubleword if the first field is a double array.
* config/rs6000/linux64.h (TARGET_ALIGN_NATURAL): Define.
2005-12-11 Daniel Berlin <>
* tree-ssa-structalias.c (process_constraint): Remove code to
transform addressofs into scalar.
(create_variable_info_for): In whole-program IPA, globals don't
point to ANYTHING by default.
2005-12-11 Daniel Berlin <>
* timevar.def (TV_IPA_PTA): New.
* tree-pass.h (pass_ipa_pta): New
* tree-ssa-structalias.c: Include cgraph.h
(in_ipa_mode): New.
(predbitmap_obstack): New.
(struct constraint_stats): Add num_edges.
(new_var_info): Don't call bitmap_clear.
(struct constraint_edge): Update docs.
(new_constraint_edge): Remove src param.
(struct constraint_graph): Add zero_weight_succs,
zero_weight_preds. Update docs.
(constraint_expr_equal): Reformat.
(constraint_edge_equal): Update for removal of src.
(constraint_edge_less): Ditto.
(constraint_edge_vec_find): Ditto.
(erase_graph_self_edge): Update for removal of src and and zero
weight bitmap.
(clear_edges_for_node): Ditto.
(add_graph_edge): Ditto.
(get_graph_weights): Ditto.
(allocate_graph_weights): Ditto.
(merge_graph_nodes): Ditto.
(int_add_graph_edge): Ditto.
(valid_graph_edge): Ditto.
(valid_weighted_graph_edge): Ditto.
(build_constraint_graph): Ditto.
(scc_visit): Ditto.
(collapse_nodes): Ditto.
(process_unification_queue): Ditto.
(topo_visit): Ditto.
(solve_graph): Ditto.
(do_structure_copy): Ditto.
(perform_var_substitution): Ditto.
Init and release obstack.
(handle_ptr_arith): Try to resolve directly.
(find_func_aliases): Don't call update_alias_info here
Handle RETURN_EXPR, and CALL_EXPR's in IPA mode.
(do_sd_constraint): Add code for propagating faster.
(do_ds_constraint): Ditto.
(count_num_arguments): New function.
(create_function_info_for): Ditto.
(create_variable_info_for): Handle FUNCTION_DECL.
(intra_create_variable_infos): Use make_constraint_to_anything.
(init_alias_vars): Init obstacks here.
(need_to_solve): Handle zero weight graph changes.
(compute_points_to_sets): Call update_alias_info here.
(delete_points_to_sets): Free zero weight preds/succs here.
(gate_ipa_pta): New.
(ipa_pta_execute): New
2005-12-11 Daniel Berlin <>
* tree-ssa-structalias.c (var_anyoffset): Removed.
(anyoffset_tree): Ditto.
(anyoffset_id): Ditto.
(do_deref): Take vector of constraints, no return value.
Update to work on vector.
(get_constraint_for): Ditto.
(get_constraint_for_component_ref): Ditto.
(do_structure_copy): Ditto.
(handle_ptr_arith): Ditto.
(find_func_aliases): Ditto.
(set_uids_in_ptset): Remove anyoffset handling.
(init_base_vars): Ditto.
2005-12-10 Mark Mitchell <>
PR c++/25010
* ipa-inline.c (cgraph_clone_inlined_nodes): Do not assume that
DECL_EXTERNAL functions have no bodies. Tidy.
2005-12-10 Andreas Schwab <>
* except.c (switch_to_exception_section): Only define if
TARGET_UNWIND_INFO is not defined.
2005-12-10 Richard Sandiford <>
* config/darwin.h (HAS_INIT_SECTION): Remove definition.
(INIT_SECTION_ASM_OP): Restore empty definition from before 2005-12-07.
2005-12-10 Richard Sandiford <>
* output.h (init_section, fini_section): Delete.
* varasm.c (init_section, fini_section): Delete.
(init_varasm_once): Don't initialize them.
* doc/tm.texi (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Say that
there are no corresponding varasm.c variables.
2005-12-10 Richard Sandiford <>
* dwarf2out.c (default_eh_frame_section): Delete, moving handling
(switch_to_eh_frame_section): Try to set eh_frame_section
if it is still null.
* except.c (default_exception_section): Delete, moving most
of the code to...
(switch_to_exception_section): ...this new function. Set
exception_section if it is still null, then switch to it.
(output_function_exception_table): Use switch_to_exception_section.
* varasm.c (exception_section, eh_frame_section): Update comments.
(get_section): Hoist use of SECTION_NAMED.
(init_varasm_once): Don't set exception_section and eh_frame_section.
* output.h (default_exception_section): Delete.
(default_eh_frame_section): Delete.
2005-12-09 Bernd Schmidt <>
* config/bfin/bfin.c: Include "cgraph.h".
(bfin_load_pic_reg): Omit loading pic reg if in a local function.
Return the reg that holds the pointer to the GOT.
(bfin_expand_prologue): Use return value of bfin_load_pic_reg when
doing stack checking.
2005-12-09 Diego Novillo <>
* tree.c (recompute_tree_invariant_for_addr_expr): Rename from
Update uses everywhere.
2005-12-09 Aldy Hernandez <>
* config/ms1/t-ms1 (MULTILIB_OPTIONS): Define.
2005-12-09 Ulrich Weigand <>
PR target/25311
* config/s390/s390.c (struct s390_address): New field literal_pool.
(s390_decompose_address): Compute literal_pool field. Do not
assume register %r13 is always (and solely) used as pool base.
(s390_extra_constraint_str): Use literal_pool field.
2005-12-09 Thiemo Seufer <>
* config/mips/mips.c (override_options): Don't allow too small
integers in FP registers.
2005-12-09 Ulrich Weigand <>
* config/s390/s390.c (s390_function_ok_for_sibcall): Use
targetm.binds_local_p to check for local function calls.
2005-12-09 Alan Modra <>
PR debug/24908
* dwarf2out.c (dwarf2out_frame_debug_expr): Don't assert that
call_used_regs can't be used to save reg in another reg.
2005-12-08 Volker Reichelt <>
Christophe Jaillet <>
* ipa-type-escape.c (analyze_variable): Use gcc_assert instead of
* except.c (output_ttype): Likewise.
* tree-object-size.c (collect_object_sizes_for): Likewise.
(check_for_plus_in_loops_1): Likewise.
(check_for_plus_in_loops): Likewise.
(compute_object_sizes): Use gcc_unreachable instead of abort.
2005-12-08 Nathan Sidwell <>
* config/ms1/ (UNSPEC_LOOP): New constant.
(loop_end, loop_init, doloop_end): New insns.
* config/ms1/ms1.h (LOOP_FIRST, LOOP_LAST): New.
* config/ms1/ms1.c: #include basic-block.h
(struct machine_function): Add has_loops field.
(ms1_add_loop): New.
(struct loop_info, struct loop_work): New.
(ms1_loop_nesting, ms1_block_length, ms1_scan_loop): New workers.
(ms1_reorg_loops): New loop optimization.
(ms1_machine_reorg): Call it.
* config/ms1/ms1-protos.h (ms1_add_loop): Declare.
2005-12-08 Zdenek Dvorak <>
PR tree-optimization/25248
* tree-scalar-evolution.c (follow_ssa_edge_in_rhs): Do not use
evolution_of_loop from the failed attempt. Remove handling
2005-12-08 Gabriel Dos Reis <>
* tree.h (DECL_EXTERNAL): Clarify documentation.
2005-12-08 Andreas Krebbel <>
Jakub Jelinek <>
PR target/25268
* config/s390/s390.c (s390_decompose_shift_count): Remove BITS
argument. Don't drop outer ANDs.
(s390_extra_constraint_str, print_shift_count_operand): Adjust callers.
* config/s390/s390-protos.h (s390_decompose_shift_count): Adjust
* config/s390/ (setmem_operand): Remove.
(shift_count_operand): Rename to...
(shift_count_or_setmem_operand): ... this. Adjust
s390_decompose_shift_count caller.
* config/s390/ (<shift>di3_31_and, <shift>di3_64_and,
ashrdi3_cc_31_and, ashrdi3_cconly_31_and, ashrdi3_31_and,
ashrdi3_cc_64_and, ashrdi3_cconly_64_and, ashrdi3_64_and,
<shift>si3_and, ashrsi3_cc_and, ashrsi3_cconly_and, ashrsi3_and,
rotl<mode>3_and, setmem_long_and): New insns.
(<shift>di3_31, <shift>di3_64, ashrdi3_cc_31, ashrdi3_cconly_31,
ashrdi3_31, ashrdi3_cc_64, ashrdi3_cconly_64, ashrdi3_64,
<shift>si3, ashrsi3_cc, ashrsi3_cconly, ashrsi3, rotl<mode>3,
<shift>di3, ashrdi3): Use shift_count_or_setmem_operand instead
of shift_count_operand.
(setmem_long): Use shift_count_or_setmem_operand instead of
2005-12-08 Daniel Jacobowitz <>
Andreas Tobler <>
* (ALL_GTFILES_H): Replace sed statement with more portable
tr expression.
2005-12-07 J"orn Rennecke <>
* expr.c (force_operand): Use convert_to_mode for conversions.
2005-12-07 J"orn Rennecke <>
* reload.h (reg_equiv_invariant): Declare.
* reload.c (refers_to_regno_for_reload_p): Allow R to be a pseudo
register also when reg_equiv_invariant[R] is set.
2005-12-07 Richard Sandiford <>
Andreas Tobler <>
* config/darwin.h: Guard section variables with #ifndef USED_FOR_TARGET.
2005-12-07 Daniel Berlin <>
* tree-ssa-pre.c (bitmap_set_and): New function.
(bitmap_set_and_compl): New function.
(bitmap_set_empty_p): New function.
(insert_extra_phis): New function.
(compute_avail): Use insert_extra_phis.
2005-12-07 Adrian Straetling <>
* config/s390/s390.c (s390_expand_atomic): New function.
Adjust comment of helper functions.
* config/s390/s390-protos.h (s390_expand_atomic): Declare.
* config/s390/ ("ATOMIC"): New code macro.
("atomic"): Corresponding new code attribute.
"sync_{new_,old_,}{and,ior,xor,add,sub,nand}[hq]i"): New pattern.
2005-12-07 Adrian Straetling <>
* config/s390/s390.c (s390_expand_mask_and_shift,
struct alignment_context, init_alignment_context,
s390_expand_cs_hqi): New.
* config/s390/s390-protos.h (s390_expand_cs_hqi): Declare.
* config/s390/ ("sync_compare_and_swaphi",
"sync_compare_and_swapqi"): New pattern.
2005-12-07 Daniel Berlin <>
Fix PR tree-optimization/25291
* tree-ssa-operands.c (add_call_clobber_ops): Remove
redundant and crashing check.
2005-12-08 Alan Modra <>
PR target/25212
* config/rs6000/rs6000.c (legitimate_indexed_address_p): Relax
tests further when !strict && reload_in_progress.
(print_operand): Check that both operands of indexed address are regs.
(print_operand_address): Likewise.
* config/rs6000/rs6000.h (INT_REG_OK_FOR_INDEX_P): Simplify.
2005-12-07 J"orn Rennecke <>
Preparation for PR rtl-optimization/20070 / part1
* basic-block.h (insns_match_p, flow_find_cross_jump): Declare.
* cfgcleanup.c (condjump_equiv_p): New function, broken out of
(outgoing_edges_match): Use condjump_equiv_p.
(merge_memattrs, insns_match_p, flow_find_cross_jump): Move from here
* struct-equiv.c: New file.
(death_notes_match_p) New function, broken out of insns_match_p.
* (OBJS-common): Add struct-equiv.o.
(struct-equiv.o): New target.
2005-12-07 Richard Sandiford <>
* coretypes.h: Revert previous change.
* config/darwin.h: Revert previous reversion.
* config/avr/avr.h (progmem_section): Guard with #ifndef IN_LIBGCC2.
2005-12-07 Richard Sandiford <>
* coretypes.h (section): Provide dummy definition for target files.
* config/darwin.h: Revert previous change.
2005-12-07 Rafael vila de Espndola <>
* doc/sourcebuild.texi (, install-normal): Remove.
* Remove and install-normal from target_list
* configure: Regenerate.
* (install): Don't depend on install-normal.
2005-12-07 Rafael vila de Espndola <>
* Document the use of stamps.
2005-12-07 Rafael vila de Espndola <>
* doc/gty.texi: Remove instructions for adding a dependency on s-gtype.
* Add code to compute some dependencies on s-gtype
automatically. Remove the declaration of those dependencies.
2005-12-07 Richard Sandiford <>
* reload.c (push_secondary_reload): Fix typo:
2005-12-07 Richard Sandiford <>
* config/darwin.h: Guard section variables with #ifndef IN_LIBGCC2.
2005-12-07 Richard Sandiford <>
* config/alpha/alpha.c (alpha_start_function): Use switch_to_section.
(alpha_elf_select_rtx_section): Return the selected section rather
than emitting assembly code.
(alpha_write_linkage): Emit a ".link" directive directly and then
set in_section to NULL.
(vms_asm_out_constructor): Use switch_to_section.
(vms_asm_out_destructor): Likewise.
(unicosmk_output_common): Set in_section to NULL instead of calling
the dummy common_section function.
(unicosmk_text_section): Delete in favor of...
(unicosmk_output_text_section_asm_op): ...this new function.
(unicosmk_data_section): Delete in favor of...
(unicosmk_output_data_section_asm_op): ...this new function.
(unicosmk_init_sections): New function.
(unicosmk_output_deferred_case_vectors): Use switch_to_section.
(unicosmk_output_ssib): Set in_section to NULL instead of calling
the dummy ssib_section function.
(unicosmk_section_buf): Delete.
* config/alpha/alpha-protos.h (unicosmk_text_section): Delete.
(unicosmk_data_section): Delete.
* config/alpha/elf.h (ASM_OUTPUT_ALIGNED_LOCAL): Use switch_to_section.
(EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS, sbss_section, sdata_section)
* config/alpha/unicosmk.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP)
(common_section, COMMON_SECTION, ssib_section, SSIB_SECTION): Delete.
(ASM_OUTPUT_ALIGNED_LOCAL): Use switch_to_section.
(link_section, literals_section): Delete.
(ASM_OUTPUT_DEF): Emit the ".literal" directive directly and then
set in_section to NULL.
* config/arm/aof.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP): Delete.
(ASM_OUTPUT_COMMON): Set in_section to NULL rather than calling
the dummy common_section function.
* config/arm/aout.h (ASM_OUTPUT_ALIGNED_LOCAL): Use switch_to_section.
* config/arm/arm.c (get_jump_table_size): Use pointer comparison
between readonly_data_section and text_section to check whether
read-only data is being put in the text section.
(arm_output_function_epilogue): Use switch_to_section.
(arm_elf_asm_constructor): Likewise.
(thumb_call_via_reg): Replace call to in_text_section with
a comparison between in_section and text_section.
(arm_file_end): Use switch_to_section.
(aof_text_section): Delete in favor of...
(aof_output_text_section_asm_op): ...this new function.
(aof_data_section): Delete in favor of...
(aof_output_data_section_asm_op): ...this new function.
(aof_asm_init_sections): New function.
(zero_init_section): Moved from config/arm/aof.h.
(aof_dump_imports, aof_file_start): Use switch_to_section.
* config/arm/arm.h (thumb_call_via_label): Update comment.
* config/arm/arm-protos.h (aof_text_section, aof_data_section): Delete.
(common_section): Delete.
* config/arm/pe.h (ASM_DECLARE_FUNCTION_NAME): Use switch_to_section.
(ASM_DECLARE_OBJECT_NAME): Update the type of save_section. Use the
global switch_to_section function instead of the old port-local one.
(drectve_section): Redefine as a macro.
* config/arm/unknown-elf.h (ASM_OUTPUT_ALIGNED_BSS):
(ASM_OUTPUT_ALIGNED_DECL_LOCAL): Use get_named_section and
* config/avr/avr.c (progmem_section): New variable.
(avr_output_progmem_section_asm_op): New function.
(avr_asm_init_sections): New function.
(avr_output_addr_vec_elt): Use switch_to_section.
* config/avr/avr.h (progmem_section): Declare.
(ASM_OUTPUT_CASE_LABEL): Use switch_to_section.
* config/avr/avr-protos.h (progmem_section): Delete.
* config/bfin/bfin.h (ASM_OUTPUT_LOCAL): Use switch_to_section.
* config/darwin-sections.def: New file.
* config/darwin.c: Define all sections in darwin-sections.def.
(output_objc_section_asm_op, darwin_init_sections): New functions.
(machopic_output_indirection): Use switch_to_section.
(machopic_select_section): Return the selected section rather than
emitting assembly code. Replace the static function table with
inline conditional expressions. Update the tests of last_text_section
and move them into the FUNCTION_DECL block.
(machopic_select_rtx_section): Return the selected section rather than
emitting assembly code.
(machopic_asm_out_constructor, machopic_asm_out_destructor)
(darwin_file_end): Use switch_to_section.
* config/darwin.h: Use darwin-sections.def to declare sections.
(INIT_SECTION_ASM_OP): Remove empty definition.
(HAS_INIT_SECTION): Define this instead.
* config/darwin-protos.h (darwin_init_sections): Declare.
(machopic_picsymbol_stub_section, machopic_picsymbol_stub1_section)
(machopic_symbol_stub_section, machopic_symbol_stub1_section): Delete.
(machopic_lazy_symbol_ptr_section, machopic_nl_symbol_ptr_section)
(constructor_section, destructor_section, mod_init_section): Delete.
(mod_term_section): Delete.
(darwin_exception_section, darwin_eh_frame_section): Delete.
(machopic_select_section): Return a section.
(machopic_select_rtx_section): Likewise.
(text_coal_section, text_unlikely_section, text_unlikely_coal_section)
(const_section, const_coal_section, const_data_section): Delete.
(const_data_coal_section, data_coal_section, cstring_section): Delete.
(literal4_section, literal8_section, constructor_section): Delete.
(mod_init_section, mod_term_section, destructor_section): Delete.
(objc_class_section, objc_meta_class_section, objc_category_section)
(objc_class_vars_section, objc_instance_vars_section): Delete.
(objc_cls_meth_section, objc_inst_meth_section): Delete.
(objc_cat_cls_meth_section, objc_cat_inst_meth_section): Delete.
(objc_selector_refs_section, objc_selector_fixup_section): Delete.
(objc_symbols_section, objc_module_info_section): Delete.
(objc_image_info_section, objc_protocol_section): Delete.
(objc_string_object_section, objc_constant_string_object_section)
(objc_class_names_section, objc_meth_var_names_section): Delete.
(objc_meth_var_types_section, objc_cls_refs_section): Delete.
(machopic_lazy_symbol_ptr_section, machopic_nl_symbol_ptr_section)
(machopic_symbol_stub_section, machopic_picsymbol_stub_section)
(darwin_exception_section, darwin_eh_frame_section): Delete.
* config/t-darwin (darwin.o): Depend on config/darwin-sections.def.
* config/frv/frv.c (frv_asm_out_constructor): Use switch_to_section.
(frv_asm_out_destructor): Likewise.
(ASM_OUTPUT_ALIGNED_DECL_LOCAL): Use switch_to_section and
(ASM_OUTPUT_CASE_LABEL): Use switch_to_section.
* config/frv/frv-protos.h (fixup_section, sdata_section, sbss_section)
(data_section): Delete.
(drectve_section): Redefine as a macro that sets in_section after
emitting the directive.
* config/i386/darwin.h (ASM_OUTPUT_ALIGN): Replace call to
in_text_section with comparison between in_section and text_section.
* config/i386/i386.c (x86_64_elf_select_section): Return the section
rather than emitting assembly code. Use get_named_section.
(x86_output_aligned_bss, ix86_file_end): Use switch_to_section and
(machopic_output_stub): Use switch_to_section.
* config/i386/nwld.c (nwld_named_section_asm_out_constructor)
(nwld_named_section_asm_out_destructor): Use get_section and
* config/ia64/ia64.c (ia64_select_rtx_section): Return the section
rather than emitting assembly code.
(ia64_rwreloc_select_section): Likewise.
(ia64_rwreloc_select_rtx_section): Likewise.
* config/ia64/ia64-protos.h (sdata_section, sbss_section): Delete.
* config/ia64/sysv4.h (ASM_OUTPUT_ALIGNED_DECL_LOCAL): Use
* config/iq2000/iq2000.c (iq2000_select_rtx_section): Return the
section rather than emitting assembly code.
(iq2000_select_section): Likewise.
* config/iq2000/iq2000.h (rdata_section, sdata_section): Delete.
(sbss_section): Delete.
* config/m32r/m32r.h (ASM_OUTPUT_ALIGNED_BSS): Use switch_to_section
and get_named_section.
* config/m32r/m32r-protos.h (sbss_section, sdata_section): Delete.
* config/mcore/mcore-elf.h (EXPORTS_SECTION_ASM_OP): Delete.
(MCORE_EXPORT_NAME): Emit the exports directive directly, then set
in_section to NULL.
(ASM_DECLARE_FUNCTION_NAME): Use switch_to_section.
(ASM_DECLARE_OBJECT_NAME): Update the type of save_section. Use the
global switch_to_section function instead of the old port-local one.
* config/mcore/mcore-pe.h (SUBTARGET_SWITCH_SECTIONS): Delete.
(MCORE_EXPORT_NAME): Emit ".section .drectve" directly, then set
in_section to NULL.
(ASM_DECLARE_OBJECT_NAME): Update the type of save_section. Use the
global switch_to_section function instead of the old port-local one.
(ASM_DECLARE_FUNCTION_NAME): Use switch_to_section.
* config/mips/mips.c (mips_file_start): Update comment.
(mips_output_aligned_bss): Use switch_to_section and get_named_section.
(mips_output_aligned_decl_common): Use switch_to_section.
(mips_select_rtx_section): Return the section rather than emitting
assembly code. Use get_named_section.
(mips_function_rodata_section: Likewise get_section.
(build_mips16_function_stub): Use switch_to_section.
* config/mips/mips.h (ASM_OUTPUT_IDENT): Use switch_to_section.
* config/mips/vxworks.h (EXTRA_SECTIONS): Delete.
* config/mmix/mmix.c (mmix_file_start, mmix_file_end)
(mmix_asm_output_aligned_local): Use switch_to_section.
* config/pa/pa.c (som_readonly_data_section, som_one_only_data_section)
(som_one_only_readonly_data_section): New variables.
(pa_output_function_epilogue): Set in_section to NULL instead of
calling forget_section.
(output_deferred_plabels): Use select_section.
(pa_asm_output_mi_thunk): Likewise. Set in_section to NULL instead
of calling forget_section.
(pa_asm_output_aligned_bss, pa_asm_output_aligned_common)
(pa_asm_output_aligned_local): Use select_section.
(som_text_section_asm_op): Delete in favor of...
(som_output_text_section_asm_op): ...this new function.
(pa_som_asm_init_sections): New function.
(pa_select_section): Return the section rather than emitting
assembly code.
* config/pa/pa-protos.h (som_text_section_asm_op): Delete.
(som_readonly_data_section, som_one_only_readonly_data_section)
(som_one_only_data_section, forget_section): Delete.
* config/pa/som.h (TEXT_SECTION_ASM_OP): Delete.
* config/rs6000/rs6000.c (read_only_data_section): New variable.
(private_data_section, read_only_private_data_section): New variables.
(sdata2_section, toc_section): New variables.
(rs6000_file_start): Use switch_to_section.
(rs6000_assemble_integer): Use comparisons against in_section
instead of calling in_toc_section and in_text_section. Use
(rs6000_elf_output_toc_section_asm_op): New function, derived
from the old rs6000/sysv4.h toc_section function.
(rs6000_elf_asm_init_sections): New function.
(rs6000_elf_select_rtx_section, rs6000_elf_select_section): Return
the section rather than emitting assembly code.
(machopic_output_stub): Use switch_to_section.
(toc_section): Delete dummy function.
(rs6000_elf_asm_out_constructor, rs6000_elf_asm_out_destructor): Use
switch_to_section and get_section.
(rs6000_xcoff_output_readonly_section_asm_op): New function.
(rs6000_xcoff_output_readwrite_section_asm_op): New function.
(rs6000_xcoff_output_toc_section_asm_op): New function, derived from
the old rs6000/xcoff.h toc_section function.
(rs6000_xcoff_asm_init_sections): New function.
(rs6000_xcoff_select_section, rs6000_xcoff_select_rtx_section): Return
the section rather than emitting assembly code.
(rs6000_xcoff_file_start): Use switch_to_section.
(rs6000_xcoff_file_end): Likewise.
* config/rs6000/rs6000-protos.h (toc_section, sdata_section): Delete.
(sdata2_section, sbss_section, private_data_section): Delete.
(read_only_data_section, read_only_private_data_section): Delete.
(ASM_OUTPUT_ALIGNED_LOCAL): Use switch_to_section.
(ASM_DECLARE_FUNCTION_NAME): Use switch_to_section. Set in_section
to NULL rather than no_section.
* config/sh/sh.c (sh_file_start): Use switch_to_section.
* config/sparc/sparc.c (emit_pic_helper): Use switch_to_section.
(sparc_output_deferred_case_vectors): Likewise. Remove argument
from call to current_function_section.
* config/stormy16/stormy16.c: Include ggc.h and gt-storm16.h.
(bss100_section): New variable.
(xstormy16_asm_output_aligned_common): Use switch_to_section.
(xstormy16_asm_init_sections): New function.
(xstormy16_asm_out_destructor, xstormy16_asm_out_constructor): Use
switch_to_section and get_section.
(xstormy16_output_addr_vec): Use switch_to_section. Remove argument
from calls to current_function_section.
* config/stormy16/stormy16.h (EXTRA_SECTIONS): Delete.
* config/stormy16/stormy16-protos.h (bss100_section): Delete.
* config/svr3.h (ASM_OUTPUT_LOCAL): Use switch_to_section.
* config/v850/v850.c: Include gt-v850.h.
(rosdata_section, rozdata_section, tdata_section, zdata_section)
(zbss_section): New variables.
(v850_output_aligned_bss): Use switch_to_section.
(v850_asm_init_sections): New function.
(v850_select_section): Return the section rather than emitting
assembly code.
* config/v850/v850-protos.h (sdata_section, rosdata_section): Delete.
(sbss_section, tdata_section, zdata_section, rozdata_section): Delete.
(zbss_section): Delete.
* config/vax/vaxv.h (ASM_OUTPUT_LOCAL): Use switch_to_section.
* config/vx-common.h (vxworks_exception_section): Delete.
* config/xtensa/xtensa.c (xtensa_select_rtx_section): Return the
section rather than emitting assembly code.
* config/xtensa/xtensa.h (ASM_OUTPUT_POOL_PROLOGUE): Use
* (GTFILES): Add $(srcdir)/output.h.
* coretypes.h (section): New union and typedef.
* dbxout.c (FORCE_TEXT): Use switch_to_section. Remove argument
from call to current_function_section.
(dbxout_function_end, dbxout_init, dbxout_source_file, dbxout_finish)
(dbxout_symbol_location): Use switch_to_section.
* dwarf2out.c (named_section_eh_frame_section): Delete, moving
most of the code into...
(default_eh_frame_section): Return a section.
(collect2_eh_frame_section): Delete, moving most of the code into..
(switch_to_eh_frame_section): ...this new function.
(debug_info_section, debug_abbrev_section, debug_aranges_section)
(debug_macinfo_section, debug_line_section, debug_loc_section)
(debug_pubnames_section, debug_str_section, debug_ranges_section): New
(output_call_frame_info): Call switch_to_eh_frame_section instead of
eh_frame_section. Use switch_to_section and get_section.
(dwarf2out_begin_prologue): Use switch_to_section.
(AT_string_form): Check the flags in debug_str_section instead of
(output_comp_unit): Use switch_to_section, get_section, and
(output_line_info, secname_for_decl): Use unlikely_text_section_p.
(dwarf2out_begin_block): Use switch_to_section. Remove argument
from call to current_function_section.
(dwarf2out_var_location): Use unlikely_text_section_p.
(dwarf2out_source_line): Use switch_to_section. Remove argument
from call to current_function_section.
(dwarf2out_start_source_file, dwarf2out_end_source_file)
(dwarf2out_define, dwarf2out_undef: Use switch_to_section and
(dwarf2out_init): Initialize the new section variables. Use them
instead of calls to named_section_flags. Use switch_to_section.
(output_indirect_string): Use switch_to_section and debug_str_section.
(dwarf2out_finish): Use switch_to_section and the new section
* except.c (default_exception_section): Return the section instead
of emitting assembly code.
(output_function_exception_table): Use the global exception_section
variable instead of the target hook. Use switch_to_section. Remove
argument from call to current_function_section.
(shorten_branches): Use pointer comparisons to detect whether the
text section is the same as readonly_data_section.
(profile_function): Use switch_to_section. Remove argument from
call to current_function_section.
(final_scan_insn): Likewise. Update use of last_text_section.
* gengtype.c (open_base_files): Add an include of output.h.
* output.h (text_section, data_section, readonly_data_section)
(ctors_section, dtors_section, bss_section, init_section)
(fini_section, sdata_section): Turn into section pointers.
(in_text_section, in_unlikely_text_section, exports_section)
(drectve_section, named_section, mergeable_string_section)
(last_text_section_name): Delete.
(default_exception_section, default_eh_frame_section): Return sections.
(SECTION_MACH_DEP): Bump value.
(section_common, named_section, unnamed_section): New structures.
(unnamed_section_callback): New typedef.
(section): New union.
(sbss_section, exception_section, eh_frame_section): New variables.
(in_section, last_text_section): Turn into section pointers.
(get_unnamed_section, get_section, get_named_section): New functions.
(mergeable_constant_section, function_section): Return a section.
(unlikely_text_section): Likewise.
(current_function_section): Likewise. Remove the decl argument.
(unlikely_text_section_p, switch_to_section): New functions.
(output_section_asm_op): New function.
(set_named_section_flags, named_section_flags, named_section_real)
(named_section_first_declaration): Delete.
(default_select_section, default_elf_select_section): Return a section.
(default_elf_select_section_1, default_function_rodata_section)
(default_no_function_rodata_section, default_select_rtx_section)
(default_elf_select_rtx_section): Likewise.
* rtl.h (in_data_section): Delete.
* sdbout.c (sdbout_one_type): Use switch_to_section.
* target-def.h (TARGET_ASM_INIT_SECTIONS): New macro.
(TARGET_ASM_OUT): Update after above changes.
* target.h (init_sections): New hook.
(exception_section, eh_frame_section): Delete.
(select_section, select_rtx_section, function_rodata_section): Return
a section rather than emitting assembly code.
* varasm.c (text_section, data_section, readonly_data_section)
(ctors_section, dtors_section, bss_section, init_section)
(fini_section): Turn into section pointers.
(sdata_section, sbss_section, exception_section): New variables.
(eh_frame_section): New variable.
(in_section): Make global and turn into a section pointer.
(last_text_section): Turn into a section pointer.
(unnamed_sections): New variable.
(in_named_name, last_text_section_name): Delete.
(in_named_entry): Delete.
(section_htab): New variable, replacing...
(in_named_htab): ...this deleted variable.
(section_entry_eq, section_entry_hash): New functions, based on...
(in_named_entry_eq, in_named_entry_hash): ...these deleted functions.
(get_unnamed_section, get_section): New functions.
(unlikely_text_section): Return a section instead of emitting
assembly code.
(in_text_section, in_unlikely_text_section, in_data_section): Delete.
(get_named_section_flags, named_section_first_declaration): Delete.
(unlikely_text_section_p): New function.
(named_section_real, named_section): Delete.
(get_named_section): New function.
(asm_output_bss, asm_output_aligned_bss): Use switch_to_section.
(function_section): Return a section rather than emitting
assembly code.
(current_function_section): Likewise. Remove argument. Use
last_text_section if nonnull, otherwise use function_section.
(default_function_rodata_section): Return a section rather than
emitting assembly code. Use get_section.
(default_no_function_rodata_section): Return a section rather than
emitting assembly code.
(variable_section): Use switch_to_section and get_named_section.
(mergeable_string_section): Return a section rather than emitting
assembly code. Use get_section. Make static. Don't take special
countermeasures for empty strings.
(mergeable_constant_section): Return a section rather than emitting
assembly code. Use get_section.
(default_named_section_asm_out_destructor): Use switch_to_section
and get_section.
(default_dtor_section_asm_out_destructor): Use switch_to_section.
(default_named_section_asm_out_constructor): Use switch_to_section
and get_section.
(default_ctor_section_asm_out_constructor): Use switch_to_section.
(assemble_start_function): Likewise. Set last_text_section to
NULL rather than no_section. Change the type of save_section.
(assemble_zeros, assemble_variable): Use the section flags to detect
whether or not a section is text.
(assemble_static_space): Use switch_to_section.
(assemble_trampoline_template): Likewise.
(output_constant_def_contents): Use switch_to_section and
(output_constant_pool_1): Use switch_to_section. Use the section
flags to see whether sections contain mergeable data.
(init_varasm_once): Initialize section_htab instead of in_named_htab.
Initialize new section variables. Call TARGET_ASM_INIT_SECTIONS.
(default_elf_asm_named_section): Use SECTION_DECLARED to detect
whether a section has already been declared.
(default_select_section, default_elf_select_section): Return a
section rather than emitting assembly code.
(default_elf_select_section_1): Likewise. Use bss_section for
SECCAT_BSS if nonnull. Use get_named_section.
(default_select_rtx_section): Return a section rather than
emitting assembly code.
(default_elf_select_rtx_section): Likewise. Use get_named_section.
(file_end_indicate_exec_stack): Use switch_to_section and get_section.
(output_section_asm_op, switch_to_section): New functions.
* vmsdbgout.c (vmsdbgout_finish): Use switch_to_section and
* doc/tm.texi: Expand the introduction to the sections documentation.
(TRAMPOLINE_SECTION): Document new interface.
(SDATA_SECTION_ASM_OP): Document new macro.
(SDATA_SECTION_ASM_OP): Document new macro.
(TARGET_ASM_INIT_SECTIONS): Document new hook.
(TARGET_ASM_SELECT_RTX_SECTION): Adjust for new interface.
2005-12-07 Alan Modra <>
* gcc.c (init_gcc_specs): Match braces inside conditionally
compiled strings.
2005-12-06 Geoffrey Keating <>
2005-12-06 Aldy Hernandez <>
PR C++/24138
* tree.c (integer_all_onesp): Always return true if all bits on.
* testsuite/g++.dg/init/array0.C: New.
2005-12-06 Adrian Straetling <>
* doc/md.texi: Adapt to implementation.
2005-12-06 Andreas Schwab <>
* opts.c (decode_options): Fix typo in message.
2005-12-06 Alan Modra <>
PR other/13873
* longlong.h: Merge PPC tests from upstream.
2005-12-06 Richard Guenther <>
* fold-const.c (fold_convert): Do not build and fold
CONVERT_EXPR, but always use NOP_EXPR.
2005-12-06 Jan Beulich <>
* config/i386/i386.c (builtin_description): Use MASK_SSE2 for
__builtin_ia32_paddq and __builtin_ia32_psubq.
(ix86_init_mmx_sse_builtins): Use MASK_SSE|MASK_3DNOW_A for
* config/i386/ (mmx_adddi3, mmx_subdi3): Depend on TARGET_SSE2.
2005-12-05 James E Wilson <>
PR target/24934
* opts.c (decode_options): Turn off partitioning if flag_unwind_tables
is set.
2005-12-05 Daniel Berlin <>
* print-tree.c (print_node): Ditto.
* tree-dfa.c (add_referenced_var): Tag's don't have DECL_INITIAL.
* tree-dump.c (dequeue_and_dump): Check for decl_common structure
before accessing DECL_ARTIFICIAL.
Handle new tag tree codes.
* tree-flow-inline.h (clear_call_clobbered): Update for tag
(unmodifiable_var_p): Ditto.
* tree-flow.h (mem_tag_kind): Remove.
(struct var_ann_d): Remove mem_tag_kind member.
* tree-gimple.c (is_gimple_reg): Tags are not gimple registers.
* tree-pretty-print.c (dump_generic_node): Handle memory tags.
* tree-ssa-alias.c (init_alias_info): Update for memory tag changes.
(group_aliases): Ditto.
(setup_pointers_and_addressables): Ditto.
(is_escape_site): Ditto.
(may_alias_p): Ditto.
(create_tag_raw): New function.
(create_memory_tag): Use it.
(dump_alias_info): Update for tags.
(may_be_aliased): Ditto.
(add_type_alias): Ditto.
(new_type_alias): Ditto.
(create_sft): Ditto.
(create_structure_vars): Ditto.
* tree-ssa-ccp.c (get_default_value): Ditto.
* tree-ssa-operands.c (get_expr_operands): Ditto.
(add_stmt_operand): Ditto.
(add_call_clobber_ops): Remove duplicated condition.
* tree-ssa.c (verify_flow_insensitive_alias_info): Update for
* tree-tailcall.c (suitable_for_tail_opt_p): Ditto.
* tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
* tree.c (init_ttree): Update structures for new tree codes.
(tree_code_size): Update sizes for new tree codes.
(make_node_stat): Don't try to set common things on minimal
(tree_node_structure): Update for tags.
(is_global_var): Ditto.
* tree.def: Add new tree codes.
* tree.h (MTAG_P): New macro.
(SSA_VAR_P): Update for tags.
(struct tree_memory_tag): New structure.
(MTAG_GLOBAL): New macro.
(union tree_node): Add memory tag member.
* treestruct.def (TS_MEMORY_TAG): New.
2005-12-05 Dale Johannesen <>
* config/i386/xmmintrin.h (_MM_TRANSPOSE4_PS): Fix to match
what was approved (PR 24323).
2005-12-05 Gabriel Dos Reis <>
* doc/c-tree.texi (Function Bodies): Remove description of
2005-12-05 Joseph S. Myers <>
* doc/libgcc.texi (__floatunsisf, __floatunsidf, __floatunsitf,
__floatunsixf, __floatundisf, __floatundidf, __floatunditf,
__floatundixf, __floatuntisf, __floatuntidf, __floatuntitf,
__floatuntixf, __powisf2, __powidf2, __powixf2, __mulsc3,
__muldc3, __multc3, __mulxc3, __divsc3, __divdc3, __divtc3,
__divxc3): Document.
2005-12-05 Geoffrey Keating <>
* config/arm/arm.c (arm_cxx_determine_class_data_visibility): Preserve
previous behaviour.
* config/darwin.h (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Define to
* config/darwin.c (darwin_cxx_determine_class_data_visibility): New.
* config/darwin.c (machopic_select_section): It's not defined
as weak if it's only marked as weak_import.
* config/darwin-protos.h (darwin_cxx_determine_class_data_visibility):
* varasm.c (default_binds_local_p_1): Weakrefs don't bind locally.
A hidden weak object does bind locally. Strong linkonce data
counts like any other strong symbol for binding.
(weak_finish_1): Don't specially handle weakrefs, they no longer
arrive here.
(assemble_alias): Weakrefs can't be TREE_PUBLIC yet.
* c-common.c (handle_alias_attribute): Allow static aliases
of variables.
(handle_weakref_attribute): Don't call declare_weak on weakrefs.
* gthr-dce.h: Make weakrefs static.
* gthr-tpf.h: Likewise.
* gthr-solaris.h: Likewise.
* gthr-posix.h: Likewise.
* gthr-posix95.h: Likewise.
* config/darwin.c (darwin_encode_section_info): static weakref
variables are not necessarily defined in this translation unit.
* doc/extend.texi (Function Attributes): Mention that an alias
attribute creates a definition for the thing it's attached to.
Change the documentation for weakref to say that the thing
it's attached to must be static.
* config/rs6000/host-darwin.c (segv_handler): Unblock SEGV so
we don't go into an infinite loop.
2005-12-05 Paolo Bonzini <>
* config/rs6000/ (logical_const_operand): Split
out of logical_operand.
(logical_operand): Use it.
* config/rs6000/ (cmp -> xor peephole2): Use
2005-12-05 Jan Beulich <>
* config/i386/i386.c (enum ix86_builtins): Remove IX86_BUILTIN_CMPNEPS
(ix86_init_mmx_sse_builtins): Remove ti_ftype_ti_ti.
* config/i386/i386.h (ALIGN_MODE_128): Don't check TFmode explicitly.
* config/i386/ (movti_internal): Correct type attribute.
Simplify mode attribute.
(movti_rex64, movsf_1, movdf_nointeger, movdf_integer, movtf_internal):
Correct type attribute.
(absxf2): Correct operator.
* config/i386/ (mov<mode>_internal_rex64, mov<mode>_internal,
movv2sf_internal_rex64, movv2sf_internal): Correct type attribute.
* config/i386/ (mov<mode>_internal, movv2df_internal): Simplify
mode attribute.
(sse2_vmsqrtv2df2): Correct mode attribute.
2005-12-05 Jan Beulich <>
* config/ia64/ (rotlsi3_internal): Don't split if rotating by
16 bits. Provide insn pattern for this case.
2005-12-05 Jan Beulich <>
* libgcc2.c (__popcountSI2): Don't use wide type for iterator and
(__popcountDI2): Likewise.
2005-12-04 John David Anglin <>
PR target/25166
* pa/pa.c (pa_hpux_init_libfuncs): Add _U_Qfcnvxf_usgl_to_quad and
_U_Qfcnvxf_udbl_to_quad to set of initialized libfuncs.
* pa/quadlib.c (_U_Qfcnvxf_usgl_to_quad, _U_Qfcnvxf_udbl_to_quad): New
2005-12-04 Joseph S. Myers <>
* c-typeck.c (null_pointer_constant_p): New function.
(build_conditional_expr, build_c_cast, convert_for_assignment,
build_binary_op): Use it.
2005-12-04 Joseph S. Myers <>
* c-common.c (binary_op_error): Do not allow NOP_EXPR.
(c_common_truthvalue_conversion): Handle NOP_EXPR the same as
(check_function_arguments_recurse): Allow both NOP_EXPR and
CONVERT_EXPR but check conversions preserve precision.
* c-typeck.c (pointer_diff): Allow both NOP_EXPR and CONVERT_EXPR
but check conversions preserve precision.
(build_unary_op): Don't allow NOP_EXPR. Use gcc_unreachable () in
default case.
2005-12-04 Roger Sayle <>
PR c/7776
* common.opt (Wstring-literal-comparison): New command line option.
* c-opts.c (c_common_handle_option): Set it with -Wall.
* c-typeck.c (parser_build_binary_op): Issue warning if either
operand of a comparison operator is a string literal, except for
testing equality or inequality against NULL.
* doc/invoke.texi: Document new -Wstring-literal-comparison option.
2005-12-03 Joseph S. Myers <>
* c-common.c (c_sizeof_or_alignof_type): Use fold_convert instead
of building a NOP_EXPR.
(c_alignof_expr): Likewise. Handle CONVERT_EXPR the same as
* c-convert.c (convert): Use fold_convert instead of building
NOP_EXPRs and CONVERT_EXPRs directly. Don't special case
c_objc_common_truthvalue_conversion returning a NOP_EXPR. Remove
#if 0 code.
* c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Handle
* c-typeck.c (build_function_call): Use fold_convert instead of
building a NOP_EXPR directly.
(build_compound_expr): Handle NOP_EXPR the same as CONVERT_EXPR.
2005-12-03 Alan Modra <>
PR rtl-optimization/25197
* dwarf2out.c (dwarf2out_frame_debug_expr <rule 12>): Assert we
have a reg.
2005-12-02 Stuart Hastings <>
* config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Remove -fpic
2005-12-03 Joseph S. Myers <>
* c-typeck.c (default_function_array_conversion,
build_function_call): Allow for CONVERT_EXPR as well as NOP_EXPR.
(build_conditional_expr): Apply integer_zerop to orig_op1 and
orig_op2. Don't check them for NOP_EXPR.
(build_c_cast, convert_for_assignment): Don't check for NOP_EXPR
around integer zero.
2005-12-03 Alan Modra <>
* config/rs6000/rs6000.c (rs6000_stack_t): Remove toc_save_p,
toc_save_offset, toc_size, lr_size.
(rs6000_stack_info): Use memset rather than bss struct copy to init.
Test rs6000_ra_ever_killed last in condition setting lr_save_p.
Adjust for removal of unused rs6000_stack_t fields.
(debug_stack_info): Adjust.
(rs6000_ra_ever_killed): Expand FIND_REG_INC_NOTE. Test for calls
first, and don't bother checking for set/inc of lr on sibcalls.
(rs6000_emit_epilogue): Tidy code restoring stack pointer.
2005-12-02 Jakub Jelinek <>
PR target/25199
* config/i386/ (movqi_1): Only force imovx for alternative
5 if operand 1 is not aligned. Undo previous constraint change.
* config/i386/ (aligned_operand): Use MEM_ALIGN.
2005-12-02 Richard Guenther <>
* tree.h (build): Remove prototype.
(build, _buildN1, _buildN2, _buildC1, _buildC2): Remove macros.
* tree.c (build): Remove.
(build0_stat): Update comment.
2005-12-02 Richard Guenther <>
* tree-ssa-loop-im.c (schedule_sm): Use buildN instead of build.
* tree-complex.c (update_complex_assignment, expand_complex_div_wide):
* tree-ssa-ccp.c (maybe_fold_offset_to_array_ref,
maybe_fold_offset_to_component_ref): Likewise.
* tree-ssa-dom.c (thread_across_edge,
find_equivalent_equality_comparison, record_equivalences_from_stmt):
* gimple-low.c (lower_function_body, lower_return_expr): Likewise.
* tree-eh.c (do_return_redirection, honor_protect_cleanup_actions,
lower_try_finally_switch): Likewise.
* tree-if-conv.c (add_to_dst_predicate_list,
replace_phi_with_cond_modify_expr, ifc_temp_var): Likewise.
* gimplify.c (internal_get_tmp_var, gimple_build_eh_filter,
voidify_wrapper_expr, build_stack_save_restore, gimplify_bind_expr,
gimplify_return_expr, gimplify_decl_expr, gimplify_switch_expr,
gimplify_case_label_expr, gimplify_exit_expr, gimplify_self_mod_expr,
shortcut_cond_r, shortcut_cond_expr, gimplify_cond_expr,
gimplify_init_ctor_eval, gimplify_init_constructor,
gimplify_variable_sized_compare, gimplify_boolean_expr,
gimplify_cleanup_point_expr, gimple_push_cleanup, gimplify_target_expr,
gimplify_expr, gimplify_body, gimplify_function_tree,
force_gimple_operand): Likewise.
* tree-ssa-pre.c (create_expression_by_pieces): Likewise.
* tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for,
mx_register_decls): Likewise.
* tree-nested.c (init_tmp_var, save_tmp_var, get_static_chain,
get_frame_field, finalize_nesting_tree_1): Likewise.
* tree-inline.c (setup_one_parameter): Likewise.
* tree-vect-transform.c (vectorizable_condition): Likewise.
* tree-outof-ssa.c (insert_copy_on_edge, insert_backedge_copies):
* tree-profile.c (tree_gen_edge_profiler): Likewise.
* tree-cfg.c (factor_computed_gotos, gimplify_val): Likewise.
* c-parser.c (c_parser_if_body, c_parser_switch_statement): Likewise.
* tree-chrec.h (build_polynomial_chrec): Likewise.
2005-12-02 Richard Guenther <>
* config/alpha/alpha.c (alpha_va_start, alpha_gimplify_va_arg_1i,
alpha_gimplify_va_arg): Use buildN and fold_buildN where applicable.
* config/frv/frv.c (frv_expand_builtin_va_start): Likewise.
* config/s390/s390.c (s390_va_start, s390_gimplify_va_arg): Likewise.
* config/ia64/ia64.c (ia64_gimplify_va_arg): Likewise.
* config/i386/i386.c (ix86_va_start, ix86_gimplify_va_arg): Likewise.
* config/rs6000/rs6000.c (rs6000_va_start, rs6000_gimplify_va_arg):
* config/sh/sh.c (sh_va_start, sh_gimplify_va_arg_expr,
sh_adjust_unroll_max): Likewise.
* config/c4x/c4x.c (c4x_gimplify_va_arg_expr): Likewise.
* config/pa/pa.c (hppa_gimplify_va_arg_expr): Likewise.
* config/xtensa/xtensa.c (xtensa_va_start, xtensa_gimplify_va_arg_expr):
* config/stormy16/stormy16.c (xstormy16_expand_builtin_va_start):
* config/mips/mips.c (mips_va_start, mips_gimplify_va_arg_expr):
2005-12-02 Richard Guenther <>
* tree-vrp.c (build_assert_expr_for, process_assert_insertions_for,
simplify_cond_using_ranges): Use buildN instead of build.
* tree-tailcall.c (adjust_accumulator_values,
adjust_return_value): Likewise.
* tree-sra.c (generate_one_element_ref, generate_copy_inout,
generate_element_copy, generate_element_zero,
generate_one_element_init): Likewise.
* tree-ssa-forwprop.c (forward_propagate_into_cond_1): Likewise.
* lambda-code.c (gcc_loop_to_lambda_loop, lbv_to_gcc_expression,
lle_to_gcc_expression, lambda_loopnest_to_gcc_loopnest,
perfect_nestify): Likewise.
2005-12-02 John David Anglin <>
* pa.c (pa_secondary_reload): Revise initialization of variable regno.
2005-12-02 Gabriel Dos Reis <>
* ggc.h (GGC_RESIZEVEC): New.
2005-12-02 Volker Reichelt <>
* gcc.c (execute): Improve readability.
2005-12-02 Richard Guenther <>
* tree-cfg.c (mark_used_vars): New function.
(dump_function_to_file): Dump only used VAR_DECLs.
2005-12-02 Richard Guenther <>
* convert.c (convert_to_integer): Fix compare for nonpositive
constant to use tree_int_cst_sgn <= 0.
2005-12-02 Richard Guenther <>
* convert.c (convert_to_integer): Use fold_convert instead
of fold_build1 (NOP_EXPR, ...). Use tree_int_cst_sgn < 0
instead of comparing against 0. Use build_int_cst instead
of converting integer_zero_node.
2005-12-02 Richard Guenther <>
* tree-pretty-print.c (op_symbol): Handle LROTATE_EXPR
2005-12-02 Alan Modra <>
PR target/21017
* combine.c (simplify_logical <IOR>): Simplify more patterns to
2005-12-02 Alan Modra <>
PR middle-end/25176
* function.c (expand_function_end): Emit blockage for unwinder
after return label.
2005-12-01 Roger Sayle <>
* tree.h (TREE_OVERFLOW): Make this flag/predicate specific to
constant nodes, i.e. INTEGER_CST, REAL_CST, etc...
* tree-vrp.c (compare_values): Only check TREE_OVERFLOW for
integer constant comparisons.
2005-12-02 Jon Grimm <>
Janis Johnson <>
David Edelsohn <>
Ben Elliston <>
* dfp.h, dfp.c: New files.
(DECNUM_H): Likewise.
(OBJS-common): Add dfp.o.
(dfp.o): New rule.
* real.h (EXP_BITS): Pinch one bit to ..
(struct real_value): Add decimal field.
(real_format): Change table size, update documentation.
(REAL_MODE_FORMAT): Update for to handle float, decimal float.
(real_from_string3): Declare.
(decimal_single_format): Declare.
(decimal_double_format): Declare.
(decimal_quad_format): Declare.
* real.c: Include dfp.h.
(normalize): Early return for decimal floats.
(do_add): Zero decimal field.
(do_compare): Call do_decimal_compare for decimal floats.
(do_fix_trunc): Likewise, call decimal_do_fix_trunc.
(real_arithmetic): Call decimal_real_arithmetic for decimal
floating point operands.
(real_identical): If a and b are of differing radix, return false.
(real_to_integer): Call decimal_real_to_integer if the value is a
decimal float.
(real_to_integer2): Likewise, call decimal_real_to_integer2.
(real_to_decimal): Likewise, call decimal_real_to_decimal.
(real_to_hexadecimal): Place "N/A" in the return string for
decimal float.
(real_from_string3): New variant, given a mode.
(real_maxval): Use decimal_real_maxval for decimal floats.
(round_for_format): Use decimal_round_for_format for decimals.
(real_convert): Use decimal_real_convert where appropriate.
(significand_size): Handle base 10.
(encode_decimal_single, decode_decimal_single,
encode_decimal_double, decode_decimal_double, encode_decimal_quad,
decode_decimal_quad): New functions.
(decimal_single_format): New.
(decimal_double_format): New.
(decimal_quad_format): New.
* machmode.def: Add SD, DD and TD decimal floating point modes.
* mode-classes.def (MODE_DECIMAL_FLOAT): New mode class.
* genmodes.c (struct mode_data): Add counter field.
(struct mode_data): Update comment for format.
(blank_mode): Initialise counter field.
(new_mode): Increment counter field for each mode defined.
(complete_mode): Handle MODE_DECIMAL_FLOAT, update check for mode
using a format.
(make_complex_modes): Handle modes containing `D'.
(make_decimal_float_mode): New.
(reset_float_format): Handle MODE_DECIMAL_FLOAT.
(cmp_modes): Compare counter field if other characteristics
(emit_real_format_for_mode): Support formats for decimal floats.
* doc/rtl.texi (Machine Modes): Document SD, DD and TDmodes.
2005-12-02 Alan Modra <>
* simplify-rtx.c (simplify_plus_minus): Do simplify constants.
Delete dead code.
2005-12-01 Richard Henderson <>
* optabs.c (expand_vec_cond_expr): Use EXPAND_NORMAL.
2005-12-01 Kaveh R. Ghazi <>
* config/pa/pa.c (pa_init_builtins): If we detect
DONT_HAVE_FPUTC_UNLOCKED, set builtin fputc_unlocked to
2005-12-01 Richard Guenther <>
* fold-const.c (fold_binary): Use fold_build2, not
fold (build (...)).
2005-12-01 Nathan Sidwell <>
* config/ms1/ms1.c (ms1_reorg_hazard): Don't count noop moves.
* vec.h (VEC_block_remove): New.
2005-12-01 Gabriel Dos Reis <>
PR c/13384
* c-common.c (lvalue_error): Fix wording.
2005-12-01 Richard Guenther <>
* tree-ssa-forwprop.c (forward_propagate_addr_expr): Fix
thinko in last patch.
2005-12-01 Geoffrey Keating <>
* config/t-slibgcc-darwin (SHLIB_LINK): Use -single_module rather
than -flat_namespace.
2005-12-01 Ben Elliston <>
* Parameterise the script to build soft float
functions by iterating over each type, rather than cloning the
code for each type.
2005-11-30 Kaveh R. Ghazi <>
PR middle-end/25158
* builtins.c (fold_builtin_fputs): Defer check for missing
replacement functions.
2005-11-30 Kean Johnston <>
* config/i386/i386.c: Check the value of SUPPORTS_ONE_ONLY, not
simply its presense in case targets #define SUPPORTS_ONE_ONLY 0.
2005-11-30 Richard Guenther <>
PR tree-optimization/22501
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
function split out from ...
(forward_propagate_addr_expr): ... here. Use it to propagate
ADDR_EXPRs to all uses.
2005-11-30 Volker Reichelt <>
* tree.h (CASE_FLT_FN, CASE_INT_FN): New macros.
* builtins.c (expand_builtin_mathfn): Use them.
(expand_builtin_mathfn_2): Likewise.
(expand_builtin_mathfn_3): Likewise.
(expand_builtin_int_roundingfn): Likewise.
(expand_builtin): Likewise.
(integer_valued_real_p): Likewise.
(fold_builtin_int_roundingfn): Likewise.
(fold_builtin_bitop): Likewise.
(fold_builtin_logarithm): Likewise.
(fold_builtin_1): Likewise.
* convert.c (convert_to_integer): Likewise.
* fold-const.c (negate_mathfn_p): Likewise.
(tree_expr_nonnegative_p): Likewise.
2005-11-30 Dale Johannesen <>
Andrew Pinski <>
* combine.c (find_split_point): Sign extend bitmask
when changing bitfield assignment to IOR of AND.
2005-11-30 Nathan Sidwell <>
* config/ms1/ (decrement_and_branch_until_zero): Add early
clobber to scratch reg.
(*decrement_and_branch_until_zero_no_clobber): Remove.
(decrement_and_branch peephole): Add dummy scratch reg to pattern.
(mulhish3): Use TARGET_MS1_16_003, TARGET_MS2.
* config/ms1/ms1.opt (mmul): Remove.
* config/ms1/ms1.h (ASM_SPEC): Cope with uppercase arch names.
2005-11-30 John David Anglin <>
Bernd Schmidt <>
* pa/ (symbolic_operand): Add comment.
* pa/ (reload_insi_r1, reload_indi_r1): New reload expanders.
* pa/pa-protos.h (pa_secondary_reload_class): Delete.
* pa/pa.c (TARGET_SECONDARY_RELOAD): Define.
(pa_secondary_reload_class): Delete.
(pa_secondary_reload): New function derived from SECONDARY_RELOAD_CLASS
and pa_secondary_reload_class. Reorder some checks. Update inline
copy of symbolic operand.
* pa/pa.h (SECONDARY_RELOAD_CLASS): Delete.
2005-11-30 Nathan Sidwell <>
* loop-doloop.c (add_test): Only add jump notes if we did emit a
2005-11-30 Jeff Law <>
* tree-ssa-uncprop.c (associate_equivalences_with_edges): Properly
2005-11-30 Jakub Jelinek <>
* config/ia64/ia64.c (ia64_expand_tls_address): Add ORIG_OP1 argument.
Move ADDEND_{HI,LO} computation into TLS_MODEL_INITIAL_EXEC case.
(ia64_expand_move): Adjust caller.
* config/ia64/ia64.c (ia64_expand_atomic_op): Only use
fetchadd{4,8}.acq instruction if CODE is PLUS or MINUS, for MINUS
negate VAL.
2005-11-30 Paolo Bonzini <>
* simplify-rtx.c (simplify_plus_minus): Remove final parameter.
Always produce an output if we can remove NEGs or canonicalize
(minus (minus ...)) expressions. Provide a fast path for the
two-operand case.
(simplify_gen_binary): Do not call simplify_plus_minus.
(simplify_binary_operation_1): Reassociate at the end of the
2005-11-29 Evan Cheng <>
* config/i386/xmmintrin.h (_MM_TRANSPOSE4_PS): Rewrite using high/low
moves and unpack to speed up.
2005-11-29 David S. Miller <>
* config/sparc/sparc.c (gen_compare_reg): Kill 2nd and 3rd
argument, they are always sparc_compare_op0 and sparc_compare_op1.
(gen_v9_scc): Update callers.
* config/sparc/ Likewise.
* config/sparc/sparc-protos.h: Update extern declaration.
* tree-into-ssa.c (rewrite_into_ssa): Fix comment typo.
2005-11-29 Andrew Pinski <>
* fold-const.c (negate_expr) <case BIT_NOT_EXPR>: Add break after
the if.
2005-11-29 Andrew Pinski <>
* fold-const.c (negate_expr_p): Return true for BIT_NOT_EXPR.
(fold_unary) <case NEGATE_EXPR>: Move -(~a) transformation to ...
(negate_expr): Here.
2005-11-29 Ben Elliston <>
Fix typo in comment.
2005-11-29 Ben Elliston <>
* (clean-target): Depend on clean-target-libgcc.
(clean-target-libgcc): Import rule from the top-level
2005-11-29 Kaveh R. Ghazi <>
PR middle-end/20109
PR middle-end/25120
* builtins.c (init_target_chars): New.
(expand_builtin_printf, expand_builtin_fprintf,
expand_builtin_sprintf, fold_builtin_sprintf,
maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
fold_builtin_snprintf_chk, fold_builtin_printf,
fold_builtin_fprintf): Check for matching format strings using
the target charset.
2005-11-29 Paul Brook <>
* config.gcc: Do not use fixproto on m68k-elf.
2005-11-28 Roger Sayle <>
* expmed.c (div_cost): Replace with...
(sdiv_cost, udiv_cost): New.
(init_expmed): Initialize sdiv_cost and udiv_cost, not div_cost.
Rename the div and mod fields, used to initialize sdiv_pow2_cheap
and smod_pow2_cheap, to sdiv_32 and smod_32 to avoid confusion.
(expand_divmod): Replace use of div_cost with either sdiv_cost
or udiv_cost depending upon the signedness of the operation.
2005-11-28 Alexandre Oliva <>
PR libfortran/24991
* config/darwin.c (machopic_indirection_name,
machopic_output_indirection): Follow transparent alias chain.
2005-11-28 Alexandre Oliva <>
* varasm.c (ultimate_transparent_alias_target): Add comment.
2005-11-28 Kazu Hirata <>
* config/m68k/m68k.c (notice_update_cc): Use SET_DEST and
SET_SRC instead of XEXP where appropriate.
2005-11-28 Joseph S. Myers <>
* config/fp-bit.c (isnan, isinf, pack_d, unpack_d): Use
2005-11-28 Joseph S. Myers <>
* config/fp-bit.h (LSHIFT): Take shift count parameter.
* config/fp-bit.c (_fpadd_parts): Shift in one go instead of one
bit at a time.
2005-11-28 Bernd Schmidt <>
* config/bfin/bfin.c (bfin_secondary_reload): Renamed from
secondary_input_reload_class, made static. Adapt to new
(secondary_output_reload_class): Delete.
* config/bfin/bfin.h (SECONDARY_INPUT_RELOAD_CLASS,
2005-11-28 Nathan Sidwell <>
PR c++/21166
* c-decl.c (finish_struct): Only set DECL_PACKED on a field
when its natural alignment is > BITS_PER_UNIT.
* stor-layout.c (finalize_type_size): Revert my patch of 2005-08-08.
* c-common.c (handle_packed_attribute): Ignore packing on a field
whose type is naturally char aligned.
2005-11-28 Richard Guenther <>
* c-common.c (strict_aliasing_warning): Handle all
component-ref like accesses.
2005-11-28 Roger Sayle <>
Uros Bizjak <>
PR middle-end/20219
* fold-const.c (fold binary) <RDIV_EXPR>: Optimize
sin(x)/tan(x) as cos(x) and tan(x)/sin(x) as 1.0/cos(x)
when flag_unsafe_math_optimizations is set and
we don't care about NaNs or Infinities.
Move x/expN(y) and x/pow(y,z) transformation into common
flag_unsafe_math_optimizations section.
2005-11-27 Mark Mitchell <>
* gcc.c (main): Change type of argv to "char **".
2005-11-28 Alan Modra <>
* doc/invoke.texi (powerpc msdata-data): Static data doesn't go in
small data sections.
* config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Make global.
* config/rs6000/rs6000-protos.h: (rs6000_elf_in_small_data_p): Declare.
* config/rs6000/sysv4.h (ASM_OUTPUT_ALIGNED_LOCAL): Rename to..
(ASM_OUTPUT_ALIGNED_DECL_LOCAL): ..this, adding extra parm. Don't
output locals to sbss if !rs6000_elf_in_small_data_p.
(ASM_OUTPUT_ALIGNED_BSS): Adjust for above.
2005-11-28 Alan Modra <>
PR target/24997
* config/rs6000/rs6000.c (legitimate_indexed_address_p): Allow pattern
generated by reload.
* config/rs6000/ (indexed_or_indirect_operand): Use
(indexed_or_indirect_address): Don't test for base reg. Call
address_operand last. Make it a special predicate.
2005-11-27 Kazu Hirata <>
* config/m68k/m68k.c (notice_update_cc): Remove useless code.
2005-11-27 Andrew Pinski <>
PR middle-end/24575
* fold-const.c (negate_expr_p): Add case for signed divides if overflow
is undefined.
(negate_expr): Likewise.
2005-11-27 Andreas Schwab <>
* config/m68k/m68k.c: Reindent and fix whitespace, remove
redundant parens.
2005-11-27 Steven Bosscher <>
* cfgcleanup.c (try_crossjump_to_edge): Always split SRC2 if it
has EH predecessor edges.
2005-11-26 Eric Christopher <>
* config/i386/ (*zero_extendqihi2_movzbw): Avoid partial
register stalls by zero extending to the full register.
2005-11-27 Joseph S. Myers <>
* config/floatunsisf.c, config/floatunsidf.c,
config/floatunsixf.c, config/floatunsitf.c: New files.
* config/ia64/t-hpux: Add floatunsitf.c.
* config/ia64/ia64.c (ia64_init_libfuncs): Use
_U_Qfcnvxuf_dbl_to_quad for unsigned DImode-to-TFmode conversion.
2005-11-26 Richard Henderson <>
* c-lex.c (pragma_lex): Rename from c_lex.
* c-pch.c: Update for pragma_lex rename.
* c-pragma.c, c-pragma.h, config/ia64/ia64-c.c: Likewise.
* config/m32c/m32c-pragma.c, config/darwin-c.c: Likewise.
* config/rs6000/rs6000-c.c, config/c4x/c4x-c.c: Likewise.
* config/sol2-c.c, config/v850/v850-c.c: Likewise.
* doc/tm.texi: Likewise.
2005-11-26 Andrew Pinski <>
PR middle-end/23669
* fold-const.c (fold_binary): Convert -A/-B to A/B for signed types
when overflow is undefined.
2005-11-26 Hans-Peter Nilsson <>
* doc/md.texi (Insn Canonicalizations): Refer to the
function commutative_operand_precedence for further rules.
2005-11-25 Roger Sayle <>
PR middle-end/21309
* expmed.c (choose_mult_variant): Return immediately when mult_cost
is less than zero. Limit mult_cost to a reasonable upper bound for
the synthetic multiplication sequence.
2005-11-25 Kaveh R. Ghazi <>
PR middle-end/25022
* builtins.c (expand_builtin_printf, expand_builtin_fprintf,
fold_builtin_fputs, fold_builtin_printf, fold_builtin_fprintf):
Lookup the explicit replacement functions for any unlocked
stdio builtin transformations.
2005-11-25 Hans-Peter Nilsson <>
* config/cris/ ("reload_out<mode>"): Mark operand 2 as
* targhooks.c (default_secondary_reload): Don't require operand 2
for an input reload to be earlyclobber.
2005-11-25 Volker Reichelt <>
* fold-const.c (negate_mathfn_p): Fix comment and add support
2005-11-25 Joseph S. Myers <>
PR middle-end/24998
* config/sparc/sparc.c (sparc_init_libfuncs): Use _Q_utoq and
_Q_ulltoq for unsigned conversions from SImode and DImode to
2005-11-25 Alan Modra <>
* config/rs6000/ppc64-fp.c (__floatunditf): New function.
(__floatundidf, __floatundisf): Likewise.
2005-11-25 David Edelsohn <>
* config/rs6000/rs6000.c (rs6000_sr_alias_set): Delete.
(rs6000_override_options): Remove initialization of
(rs6000_emit_eh_reg_restore): Use gen_frame_mem.
(rs6000_emit_stack_tie): Same.
(emit_frame_save): Same.
(gen_frame_mem_offset): Same.
(rs6000_emit_prologue): Same.
(rs6000_emit_epilogue): Same.
2005-11-25 Andrew Pinski <>
PR middle-end/24989
* fold-const.c (fold_build): Convert bool_var != 1 and
bool_var == 0 to !bool_var.
2005-11-25 Andrew Pinski <>
PR middle-end/24990
* fold-const.c (fold_binary): Fold (~a) == C to a == ~C
for C being INTEGER_CST. Likewise for !=.
2005-11-25 Joseph S. Myers <>
PR middle-end/24998
* config/rs6000/rs6000.c (rs6000_init_libfuncs): Use _q_utoq for
unsigned conversions from SImode to TFmode.
2005-11-24 Bernd Schmidt <>
* expr.c (expand_expr_real_1): Fix error in last change.
2005-11-24 J"orn Rennecke <>
* caller-save.c: (this_insn_sets): Move into:
(mark_set_regs): Get this_insn_sets from data.
(save_call_clobbered_regs): Take sets of the return value by
sibcalls into account.
2005-11-24 J"orn Rennecke <>
PR target/21623:
* regclass.c (FORBIDDEN_INC_DEC_CLASSES): Remove
(init_fake_stack_mems): Remove HAVE_SECONDARY_RELOADS test.
(memory_move_secondary_cost, init_reg_autoinc): Remove
secondary_reload_class call.
(copy_cost): Likewise. Add new parameter prev_sri. Changed all
* reload.c (entire file): Remove HAVE_SECONDARY_RELOADS checks.
(push_secondary_reload): Use secondary_reload target hook.
(secondary_reload_class, scratch_reload_class): New functions.
(push_reload): Remove SECONDARY_INPUT_RELOAD_CLASS and
SECONDARY_{IN,OUT}PUT_RELOAD_CLASS use with secondary_reload_class call.
* reload.h (HAVE_SECONDARY_RELOADS): Don't define nor test.
(secondary_reload_class, scratch_reload_class): Declare.
* reload1.c: Include target.h.
(reload_adjust_reg_for_temp): New function.
(reload_adjust_reg_for_icode): Likewise.
(choose_reload_regs): Remove SECONDARY_INPUT_RELOAD_CLASS test.
Replace SECONDARY_INPUT_RELOAD_CLASS use with secondary_reload_class
(emit_input_reload_insns): Likewise. Rewrite secondary reload checks
for inheritance. Support case when both secondary & tertiary reloads
are for intermediate registers.
(emit_output_reload_insns): Replace SECONDARY_OUTPUT_RELOAD_CLASS use
with secondary_reload_class call. Support case when both secondary
& tertiary reloads are for intermediate registers.
* target-def.h (TARGET_SECONDARY_RELOAD): Provide default definition.
* target.h (secondary_reload_info): New struct / typedef.
(struct gcc_target): New member secondary_reload.
* targhooks.c Include reload.h, optabs.h and recog.h.
(default_secondary_reload): New function.
* targhooks.h (default_secondary_reload): Declare.
* doc/tm.texi: Document secondary_reload target hook. Update
description of SECONDARY_*RELOAD_CLASS and reload_{in,out}<mode>.
* doc/md.texi: Likewise.
* sh-protos.h (sh_secondary_reload): Declare.
(sh_secondary_reload): New function.
* sh.h (SECONDARY_INOUT_RELOAD_CLASS): Don't define.
* (reload_indf): Rename to:
(reload_outdf): Rename to:
(reload_insf): Rename to:
(reload_insi): Rename to:
2005-11-24 Uros Bizjak <>
* Require at least texinfo 4.4.
* configure: Regenerate.
* doc/install.texi (Tools/packages necessary for building GCC):
Update required version of texinfo to at least 4.4.
(Installing GCC: Building): Update required version of texinfo
to at least 4.4.
(Installing GCC: Final installation): Update required version
of texi2dvi to at least 4.4.
(Host/target specific installation notes for GCC): Update required
version of texinfo to at least 4.4.
2005-11-24 Richard Guenther <>
Dirk Mueller <>
PR c++/14024
* c-common.h (strict_aliasing_warning): Declare.
* c-common.c (strict_aliasing_warning): New function,
split out from ...
* c-typeck.c (build_c_cast): ... here.
2005-11-24 Paolo Bonzini <>
* optabs.c (expand_binop): Use swap_commutative_operands_with_target
to order operands.
(swap_commutative_operands_with_target): New.
2005-11-24 Paolo Bonzini <>
* gcse.c (hash_scan_set): Look through REG_EQUAL or REG_EQUIV notes
also when doing PRE, rather than only for global CPROP.
2005-11-24 Ben Elliston <>
* machmode.h (CLASS_HAS_WIDER_MODES_P): New macro.
* optabs.c (expand_binop): Use CLASS_HAS_WIDER_MODES_P, improve
(expand_twoval_unop): Likewise.
(widen_clz): Likewise.
(expand_parity): Likewise.
(expand_unop): Likewise.
(emit_cmp_and_jmp_insn_1): Likewise.
(prepare_float_lib_cmp): Likewise.
2005-11-24 Ben Elliston <>
* optabs.c (prepare_cmp_insn): Use SCALAR_FLOAT_MODE_P.
Remove unused `class' variable.
2005-11-23 Gabriel Dos Reis <>
PR c++/21667
* c-typeck.c (build_array_ref): Avoid code duplicate. Use common
C/C++ diagnostic function warn_array_subscript_with_type_char.
* c-common.h (warn_array_subscript_with_type_char): Declare.
* c-common.c (warn_array_subscript_with_type_char): Define.
2005-11-23 Gabriel Dos Reis <>
PR c/21668
* c-decl.c (grokdeclarator): Don't warn for 'extern const' when
compiling at the intersection of C and C++.
2005-11-23 Mark Mitchell <>
* doc/invoke.texi: For man pages, include gcc-vers.texi.
List @file in the option summary. Include the libiberty
documentation for @file.
* gcc.c (main): Call expandargv.
* (gcc-vers.texi): Define srcdir.
2005-11-23 Diego Novillo <>
* passes.c (init_optimization_passes): Document
sequencing of passes.
2005-11-23 Kazu Hirata <>
* config/m68k/ (pcrel_address, extend_operator,
post_inc_operand, pre_dec_operand): Remove redundant
(const_uint32_operand, const_sint32_operand): Use gcc_assert
instead of abort.
(valid_dbcc_comparison_p): Rewrite in the lisp style.
2005-11-23 Ben Elliston <>
* dwarf2.h (enum dwarf_type): Add DW_ATE_decimal_float.
2005-11-22 J"orn Rennecke <>
Preparatory work for PR target/21623:
* alpha.c (secondary_reload_class): Rename to:
* alpha.h, alpha-protos.h: Likewise.
* mn10300.c (secondary_reload_class): Rename to:
* mn10300.h, mn10300-protos.h: Likewise.
* pa.c (secondary_reload_class): Rename to:
* pa.h, pa-protos.h: Likewise.
* rs6000.c (secondary_reload_class): Rename to:
* rs6000.h, rs6000-protos.h: Likewise.
2005-11-22 Eric Botcazou <>
PR middle-end/22561
* tree-ssa-structalias.c (get_constraint_for): Handle ARRAY_RANGE_REF.
2005-11-22 Ian Lance Taylor <>
* optabs.c (expand_unop): Call SCALAR_FLOAT_MODE_P on a mode, not
a mode_class.
(prepare_cmp_insn): Likewise.
2005-11-22 Kazu Hirata <>
PR target/23435
* (zero_extendsidi2): Force operands[1] to a register
if both operands[0] and operands[1] are memory.
2005-11-22 Andrew Pinski <>