blob: d48c31acab8c26c523b378b9df651ec24b721650 [file] [log] [blame]
2004-12-31 Richard Henderson <>
PR tree-opt/19042
* tree-sra.c (decide_block_copy): Force use_block_copy false
for complex values.
2004-12-31 Richard Henderson <>
PR middle-end/17799
* function.c (use_register_for_decl): Check DECL_IGNORED_P instead
(assign_parms_augmented_arg_list): Set DECL_IGNORED_P.
* c-decl.c (build_compound_literal): Likewise.
* dwarf2asm.c (dw2_force_const_mem): Likewise.
* gimplify.c (create_artificial_label): Likewise.
* tree-inline.c (expand_call_inline): Likewise.
* var-tracking.c (vt_initialize): Likewise.
* tree-outof-ssa.c (create_temp): Copy DECL_IGNORED_P.
2004-12-31 Andrew Pinski <>
PR target/19211
* config/darwin.c (machopic_legitimize_pic_address): If the orig
is subregister return orig.
2004-12-31 Zdenek Dvorak <>
* tree-scalar-evolution.c (instantiate_parameters_1): Copy the
expression only if needed.
2004-12-31 John David Anglin <>
2004-12-31 Hans-Peter Nilsson <>
PR target/18701
* combine.c (combine_simplify_rtx): Do not allow paradoxical
subregs of MEM.
PR target/18701
* combine.c (gen_lowpart_for_combine): When stripping SUBREG of
MEM, adjust imode and isize.
2004-12-30 Richard Henderson <>
* config/ia64/ia64.c (hfa_element_mode): Return false for
zero-sized top-level aggregates.
2004-12-30 Jan Hubicka <>
PR target/18019
* (movqi_1): Fix -Os instruction choice.
2004-12-30 Steven Bosscher <>
* global.c (regclass_intersect): Remove.
(mark_reg_use_for_earlyclobber): Use reg_classes_intersect_p instead.
2004-12-30 Richard Henderson <>
* config/ia64/ia64.c (ia64_function_value): Use PARALLEL for
aggregates with XF/XCmode.
2004-12-29 Richard Henderson <>
* target.h (targetm.calls.arg_partial_bytes): New.
* target-def.h (TARGET_ARG_PARTIAL_BYTES): New.
* calls.c (store_unaligned_arguments_into_pseudos): Update for
partial in bytes.
(load_register_parameters): Likewise.
(store_one_arg): Likewise.
(initialize_argument_information): Use targetm.calls.arg_partial_bytes.
(emit_library_call_value_1): Likewise.
* expr.c (block_move_libcall_safe_for_call_parm): Likewise.
(emit_push_insn): Update for partial in bytes.
* function.c (assign_parm_find_entry_rtl): Use
targetm.calls.arg_partial_bytes. Update for result in bytes.
(locate_and_pad_parm): Update for partial in bytes.
* system.h (FUNCTION_ARG_PARTIAL_NREGS): Poison.
* targhooks.c (hook_int_CUMULATIVE_ARGS_mode_tree_bool_0): New.
* targhooks.h (hook_int_CUMULATIVE_ARGS_mode_tree_bool_0): Declare.
* doc/tm.texi (TARGET_ARG_PARTIAL_BYTES): Rename and update from
* config/arc/arc.h, config/c4x/c4x.h, config/i386/i386.h,
config/i860/i860.h, config/m68hc11/m68hc11.h, config/m68k/m68k.h,
config/pdp11/pdp11.h, config/s390/s390.h, config/stormy16/stormy16.h,
config/xtensa/xtensa.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
* config/alpha/alpha.c (alpha_arg_partial_bytes): New.
* config/alpha/alpha.h, config/alpha/unicosmk.h,
config/alpha/vms.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
* config/arm/arm.h (FUNCTION_ARG_PARTIAL_NREGS): Move ...
* config/arm/arm.c (arm_arg_partial_bytes): ... here.
* config/cris/cris.h (FUNCTION_ARG_PARTIAL_NREGS): Move ...
* config/cris/cris.c (cris_arg_partial_bytes): ... here.
* config/fr30/fr30.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
* config/fr30/fr30.c (fr30_arg_partial_bytes): Rename from
fr30_function_arg_partial_nregs. Adjust to return bytes.
* config/fr30/fr30-protos.h: Update.
* config/frv/frv.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
* config/frv/frv.c (frv_arg_partial_bytes): Rename from
frv_function_arg_partial_nregs. Adjust to return bytes.
* config/frv/frv-protos.h: Update.
* config/ia64/ia64.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
* config/ia64/ia64.c (ia64_arg_partial_bytes): Rename from
ia64_function_arg_partial_nregs. Adjust to return bytes.
* config/ia64/ia64-protos.h: Update.
* config/iq2000/iq2000.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
* config/iq2000/iq2000.c (iq2000_arg_partial_bytes): Rename from
function_arg_partial_nregs. Adjust to return bytes.
* config/iq2000/iq2000-protos.h: Update.
* config/m32r/m32r.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
* config/m32r/m32r.c (m32r_arg_partial_bytes): Rename from
function_arg_partial_nregs. Adjust to return bytes.
* config/m32r/m32r-protos.h: Update.
* config/mcore/mcore.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
* config/mcore/mcore.c (mcore_arg_partial_bytes): Rename from
mcore_function_arg_partial_nregs. Adjust to return bytes.
* config/mcore/mcore-protos.h: Update.
* config/mips/mips.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
* config/mips/mips.c (mips_arg_partial_bytes): Rename from
function_arg_partial_nregs. Adjust to return bytes.
* config/mips/mips-protos.h: Update.
* config/mn10300/mn10300.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
* config/mn10300/mn10300.c (mn10300_arg_partial_bytes): Rename from
function_arg_partial_nregs. Adjust to return bytes.
* config/mn10300/mn10300-protos.h: Update.
* config/ns32k/ns32k.h (FUNCTION_ARG_PARTIAL_NREGS): Move ...
* config/ns32k/ns32k.c (ns32k_arg_partial_bytes): ... here.
* config/pa/pa.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
* config/pa/pa.c (pa_arg_partial_bytes): Rename from
function_arg_partial_nregs. Handle 32-bit. Adjust to return bytes.
* config/pa/pa-protos.h: Update.
* config/rs6000/rs6000.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
* config/rs6000/rs6000.c (rs6000_arg_partial_bytes): Rename from
function_arg_partial_nregs. Adjust to return bytes.
* config/rs6000/rs6000-protos.h: Update.
* config/sh/sh.h (FUNCTION_ARG_PARTIAL_NREGS): Move ...
* config/sh/sh.c (sh_arg_partial_bytes): ... here.
* config/sparc/sparc.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
* config/sparc/sparc.c (sparc_arg_partial_bytes): Rename from
function_arg_partial_nregs. Adjust to return bytes.
* config/sparc/sparc-protos.h: Update.
* config/v850/v850.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
* config/v850/v850.c (v850_arg_partial_bytes): Rename from
function_arg_partial_nregs. Adjust to return bytes.
* config/v850/v850-protos.h: Update.
2004-12-30 Hans-Peter Nilsson <>
* config/mmix/mmix.h (ASM_OUTPUT_INTERNAL_LABEL): Define.
* config/mmix/mmix.c (mmix_asm_output_internal_label): New
* config/mmix/mmix-protos.h (mmix_asm_output_internal_label):
2004-12-29 Richard Henderson <>
* config/sparc/sparc.c (TARGET_RELAXED_ORDERING): True.
2004-12-29 Jeff Law <>
* tree-outof-ssa.c (insert_backedge_copies): New function.
(rewrite_out_of_ssa): Use it.
2004-12-29 Ira Rosen <>
PR tree-optimization/18179
* tree-vectorizer.c (vect_get_base_and_offset): Call get_inner_reference
and vect_analyze_offset_expr.
(vect_create_addr_base_for_vector_ref): Build address_base by combining
base and initial_offset fields of vect_stmt_info.
(vect_update_inits_of_dr): Update offset of data-ref instead of its
access-fn. Remove argument.
(vect_update_inits_of_drs): Call vect_update_inits_of_dr with new
(vect_compute_data_ref_alignment): Check misalignment info in
vect_stmt_info. Remove argument.
(vect_compute_data_refs_alignment): Call vect_compute_data_ref_alignment
with correct argument.
(vect_analyze_data_ref_access): Check access info in vect_stmt_info.
(vect_analyze_pointer_ref_access): Update step and initial_offset fields
of vect_stmt_info.
(vect_get_memtag_and_dr): Call vect_get_base_and_offset and set the
fields of stmt_vec_info.
(vect_analyze_data_refs): Find vectype and pass it to
(vect_get_first_index): Remove.
(vect_compute_array_base_alignment): Remove.
(vect_compute_array_ref_alignment): Remove
(vect_create_data_ref_ptr): Use TYPE_SIZE_UNIT instead GET_MODE_SIZE.
(vect_gen_niters_for_prolog_loop): Use TREE_CONSTANT instead
(vectorizable_load): Use size arithmetics.
2004-12-29 Ira Rosen <>
PR tree-optimization/18179
* tree-vectorizer.c (vect_get_base_and_offset): Rename (previous name
(vect_get_memtag_and_dr): Rename (previous name vect_get_symbl_and_dr).
2004-12-29 Ira Rosen <>
PR tree-optimization/18179
* tree-vectorizer.h (struct _stmt_vec_info): Add new fields:
initial_offset, step, misalignment and base_aligned_p and macros
to access them.
* tree-vectorizer.c (vect_analyze_offset_expr): New function.
(new_stmt_vec_info): Initialize the new fields of stmt_vec_info.
(vect_create_data_ref_ptr): Fix printings.
2004-12-29 Ira Rosen <>
PR tree-optimization/18179
* tree-vectorizer.c (vect_get_symbl_and_dr): Reorganize. Add memtag
(vect_analyze_data_refs): Remove memtag retrieval.
2004-12-28 Richard Henderson <>
PR inline-asm/15740
* gimplify.c (gimplify_asm_expr): Move resolve asm names ...
* c-typeck.c (build_asm_expr): ... here. Validate input
constraints. Mark memory inputs addressable.
2004-12-28 Hans-Peter Nilsson <>
PR target/18321
* config/mmix/mmix.c (mmix_expand_epilogue): Change type of
variable offset to HOST_WIDE_INT. Remove obsolete comment. Fix
2004-12-28 Andrew Pinski <>
* fold-const.c (fold_build_cleanup_point_expr): For a RETURN_EXPR,
we only need a cleanup point expression when the expression on the
left hand side of the MODIFIY_EXPR inside the return has side
2004-12-28 Dorit Naishlos <>
* tree-vectorizer.c (vect_mark_relevant) First argument changed from
varray_type to varray_type*.
(vect_mark_stmts_to_be_vectorized): Pass &worklist instead of worklist
when calling vect_mark_relevant.
2004-12-28 Alan Modra <>
* config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Don't
generate non-offsettable DImode lo_sum addresses.
2004-12-28 Zdenek Dvorak <>
PR rtl-optimization/19103
* loop-iv.c (iv_number_of_iterations): Fix typo.
2004-12-28 Andreas Jaeger <>
* genrecog.c (compute_predicate_codes): Avoid warning.
2004-12-27 John David Anglin <>
* vax.c (vax_address_cost, vax_rtx_cost): Correct casts.
(vax_rtx_cost): Handle small offsets for both PLUS and MINUS.
2004-12-27 Jeff Law <>
* tree-ssa-dom.c (thread_across_edge): Remove broken code to
avoid threading into a loop.
2004-12-27 Richard Henderson <>
PR target/17406
* config/i386/i386.c (ix86_expand_prologue): Add REG_FRAME_RELATED_EXPR
note for allocate_stack_worker insn.
2004-12-27 Jason Merrill <>
* doc/tm.texi (TARGET_RELAXED_ORDERING): Document.
* target.h (struct gcc_target): Add relaxed_ordering field.
* target-def.h (TARGET_RELAXED_ORDERING): Define default.
* config/alpha/alpha.c (TARGET_RELAXED_ORDERING): Define.
* config/ia64/ia64.c (TARGET_RELAXED_ORDERING): Define.
* config/rs6000/rs6000.c (TARGET_RELAXED_ORDERING): Define.
* config/sparc/sparc.c (TARGET_RELAXED_ORDERING): Define.
2004-12-27 Roger Sayle <>
PR driver/16118
* doc/invoke.texi: Document the interaction between -save-temps
and -x.
2004-12-27 David Edelsohn <>
* config/rs6000/rs6000.c (rs6000_eliminate_indexed_memrefs):
Do not break apart constant pool addresses.
(rs6000_emit_move): Only force source into REG if target is MEM.
2004-12-27 Mark Mitchell <>
PR c++/19148
* gimplify.c (gimplify_cond_expr): Add post_p parameter.
(gimplify_modify_expr_rhs): Adjust call to gimplify_cond_expr.
(gimplify_expr): Likewise.
2004-12-27 Richard Henderson <>
* config/i386/i386.h (UNITS_PER_SIMD_WORD): Don't use MMX/3DNOW.
2004-12-26 Richard Henderson <>
* config/i386/i386.c (ix86_gimplify_va_arg): Also pass the result
of type_natural_mode to examine_argument.
* config/i386/ (mov<MMXMODEI>_internal_rex64): New.
(movv2sf_internal_rex64): New.
(mov<MMXMODEI>_internal): Use no register preferences at all.
(movv2sf_internal): Likewise.
2004-12-26 Richard Henderson <>
* simplify-rtx.c (simplify_relational_operation_1): Don't simplify
plus/minus across EQ for floating-point.
2004-12-26 John David Anglin <>
PR target/17643
* pa.c (pa_function_ok_for_sibcall): Sibcalls are not ok when
generating code for the portable runtime.
2004-12-25 Richard Henderson <>
* expr.c (clear_storage): Validate CONST0_RTX extant. Special case
complex modes.
2004-12-25 Zdenek Dvorak <>
PR rtl-optimization/19078
* tree-ssa-loop-ivopts.c (determine_use_iv_cost_generic,
determine_use_iv_cost_outer): Fix computing of cost for the original
(dump_use): Handle case related_cands == NULL.
2004-12-25 Marek Michalkiewicz <>
PR target/19059
* config/avr/avr.c (avr_mcu_types): Move attiny{13,2313} from avr4
to avr2.
* config/avr/avr.h (LINK_SPEC): Ditto.
* config/avr/t-avr (MULTILIB_MATCHES): Ditto.
2004-12-25 Alan Modra <>
PR target/19137
* config/rs6000/ (movti_power, movti_string): Relax
operand[1] predicate to input_operand, and add r<-n alternative.
Move TImode const_double_operand splitter to where it belongs.
2004-12-25 Alan Modra <>
PR target/19147
* config/rs6000/ (andsi3_internal7, andsi3_internal8): Delete.
2004-12-24 Uros Bizjak <>
* config/i386/ (*fix_trunc{d,s,h}i_1):
Rename to *fix_trunc{d,s,h}i_i387.
(fix_trunc{d,s}fdi2): Reorder tests.
2004-12-24 Daniel Berlin <>
Fix PR debug/14638
* tree.h (DECL_DEBUG_ALIAS_OF): New macro.
* var-tracking.c (track_expr_p): Don't disqualify tracking of variables
that are aliases of variables we want to track, unless the
original variable is also ignored for debugging purposes.
(VARIABLE_HASH_VAL): Use DECL_UID, so that this is deterministic.
* tree-outof-ssa.c (create_temp): Note who we are a debug alias of.
* dwarf2out.c (dwarf2out_var_location): Add us to the location of
the decl we are an alias of.
2004-12-24 Alan Modra <>
PR target/19142
* config/rs6000/rs6000.c (legitimate_lo_sum_address_p): Allow
DFmode for 32-bit again.
2004-12-23 Roger Sayle <>
* reload.c (regno_clobbered_p): Add a gcc_assert that regno
refers to a hard register.
2004-12-23 Mark Mitchell <>
* gimplify.c (gimplify_modify_expr_rhs): Use types_compatible_p.
2004-12-23 DJ Delorie <>
* genrecog.c (did_you_mean_codes): New.
(compute_predicate_codes): Fail unmatched codes.
2004-12-23 Eric Christopher <>
* config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Add
assert for machine=mips for !TARGET_IRIX.
* config/mips/linux.h: Remove machine=mips assert.
* config/mips/netbsd.h: Ditto.
* config/mips/openbsd.h: Ditto.
2004-12-23 Dale Johannesen <>
* tree.c (iterative_hash_expr): Canonicalize builtins.
2004-12-23 Alexandre Oliva <>
PR target/16819
* calls.c (load_register_parameters): Don't call use_regs when
nregs is zero.
2004-12-23 Eric Botcazou <>
PR middle-end/17746
* expr.c (get_inner_reference): Add 'keep_aligning' parameter.
platforms only if keep_aligning is true.
(expand_assignment): Adjust call to get_inner_reference.
(expand_expr_addr_expr_1): Likewise.
(expand_expr_real_1): Likewise.
* dojump.c (do_jump): Likewise.
* dwarf2out.c (loc_descriptor_from_tree_1): Likewise.
* fold-const.c (optimize_bit_field_compare): Likewise.
(decode_field_reference): Likewise.
(split_address_to_core_and_offset): Likewise.
* tree-ssa-loop-ivopts.c (split_address_cost): Likewise.
* tree.h (get_inner_reference): Adjust prototype.
2004-12-23 Richard Henderson <>
* config/i386/i386.c (override_options): Revert last change
wrt fancy 387 math.
2004-12-23 Richard Henderson <>
* config/alpha/ (one_cmpl<mode>2, and<mode>3, andnot<mode>3,
ior<mode>3, iornot<mode>3, xor<mode>3, xornot<mode>3): New macroized
vector operate patterns.
2004-12-23 Richard Henderson <>
* config/i386/i386.c (ix86_expand_vector_move): Tidy.
(ix86_expand_vector_move_misalign): New.
(ix86_misaligned_mem_ok): Remove.
* config/i386/i386-protos.h: Update.
* config/i386/ (SSEMODEI): Rename from SSEINT16.
(MMXMODEI): Rename from MMXINT8.
(SSEMODE, MMXMODE, movmisalign<mode>): New.
2004-12-23 Mark Mitchell <>
PR c++/16405
* gimplify.c (gimplify_modify_expr_rhs): Handle
2004-12-22 Richard Henderson <>
* config/alpha/alpha.c (alpha_expand_mov): Split out ...
(alpha_expand_movmisalign): ... misaligned vector support.
* config/alpha/alpha-protos.h: Update.
* config/alpha/ (VEC): New macro.
(movv8qi, movv4hi, movv2si): Compress with VEC.
(movv8qi_fix, movv4hi_fix, movv2si_fix): Likewise.
(movv8qi_nofix, movv4hi_nofix, movv2si_nofix): Likewise.
(movmisalign<mode>): New.
2004-12-22 Richard Henderson <>
* optabs.h (OTI_movmisalign, movmisalign_optab): New.
* optabs.c (init_optabs): Create it.
* genopinit.c (optabs): Initialize it.
* expr.c (expand_expr_real_1) <MISALIGNED_INDIRECT_REF>: Use it.
* tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
* target.h (vectorize.misaligned_mem_ok): Remove.
* targhooks.c (default_vect_misaligned_mem_ok): Remove.
* doc/md.texi (movmisalign): New.
2004-12-22 Richard Henderson <>
* config/i386/emmintrin.h (_mm_loadh_pd): Don't cast pointer arg
to __v2si.
(_mm_storeh_pd, _mm_loadl_pd, _mm_storel_pd): Likewise.
* config/i386/i386.c (ix86_init_mmx_sse_builtins): Use double* or
const double* for __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
__builtin_ia32_storehpd, __builtin_ia32_storelpd.
(ix86_expand_builtin): Update to match.
(ix86_expand_vector_init): Use sse2_loadlpd.
* config/i386/ (vec_setv2df): Use sse2_loadlpd, sse2_loadhpd.
(vec_extractv2df): Use sse2_storelpd, sse2_storehpd.
(sse2_storehpd, sse2_loadhpd, sse2_storelpd, sse2_loadlpd): New.
(sse2_movhpd): Remove.
2004-12-23 Alan Modra <>
PR target/18751
* config/rs6000/rs6000.c (legitimate_lo_sum_address_p): Return
false for anything larger than 32 bits in 32-bit code.
2004-12-22 Richard Henderson <>
* config/i386/ (btsq, btrq, btcq): Fix modes.
(bt peepholes): Likewise.
* varasm.c (force_const_mem): Call set_mem_align.
2004-12-22 Richard Henderson <>
* config/i386/ (sse_comparison_operator): Fix
typo in ieee test.
(arith_or_logical_operator): Downcase codes.
2004-12-23 Kaz Kojima <>
PR target/18511
* reload1.c (emit_output_reload_insns): Check if OLD is a hard
register before calling regno_clobbered_p.
* reload.c: Update comment for regno_clobbered_p.
2004-12-22 Richard Henderson <>
* config/i386/i386.c (override_options): Respect user disable of
fancy 387 math, sse, mmx.
(construct_container): Generate error if we need an sse regster
and sse has been disabled.
* config/i386/i386.h (TARGET_SWITCHES): Disabling sse also disables
later sse generations. Disabling mmx also disables 3dnow.
2004-12-22 Daniel Berlin <>
* tree-inline.c (struct inline_data): Remove inlined_fns.
(expand_call_inline): Remove dead code setting
(optimize_inline_calls): Remove dead code setting DECL_INLINED_FNS.
* tree.h (struct tree_decl): Remove inlined_fns.
2004-12-22 Roger Sayle <>
* tree-browser.c: Remove obsolete #ifdef HOST_EBCDIC code.
2004-12-23 Alan Modra <>
PR target/18896
* function.c (split_complex_args): Set DECL_ARTIFICIAL, DECL_IGNORED_P
for real and imaginary parts if the parm is addressable.
(assign_parms_unsplit_complex): If parm addressable, save real
and imaginary parts to a stack temp. Pass assign_parm_data_all.
(assign_parms): Adjust assign_parms_unsplit_complex call.
2004-12-22 Daniel Berlin <>
* tree.h (DECL_PTA_ALIASVAR): Dead.
(struct tree_decl): Remove alias_var field.
2004-12-22 Nathan Sidwell <>
* system.h (IN_RANGE): Restore HOST_WIDE_INT cast.
* tree.h (IS_EXPR_CODE_CLASS): Do not use IN_RANGE.
2004-12-22 Richard Henderson <>
Uros Bizjak <>
* config/i386/ (truncdfsf2): Don't create stack temp when
using sse math only. Use truncdfsf2_with_temp.
(truncdfsf2_with_temp): New.
(truncdfsf_fast_i387): Rename from truncdfsf2_noop. Add memory
output alternative.
(truncdfsf_mixed): Rename from truncdfsf2_1_sse. Compress duplicate
(truncdfsf_fast_sse): Rename from truncdfsf2_2. Remove f alternative.
(truncdfsf2_3, truncdfsf2_sse_only): Remove.
(truncdfsf_i387): Rename from truncdfsf2_1. Compress duplicates.
(truncdfsf_fast_mixed): New.
(truncdfsf splitters): Remove all except the 387 load/store split.
(truncxfsf2_1, truncxfdf2_1): Unify enable constraint with
respect to TARGET_SSE2, TARGET_80387, TARGET_SSE_MATH and
(*truncxf{s,d}f2_1): Rename to *truncxf{s,d}f2_mixed.
(truncxf{s,d}f2_noop) Rename to truncxf{d,s}f2_i387_noop.
(*truncxf{s,d}f2_i387): New patterns.
(*truncxf{s,d}f2_2): Rename to *truncxf{s,d}f2_i387_1.
(truncxf{s,d}f2, fmod{s,d}f3, drem{s,d}f3, log1p{s,d}f2,
rint{s,d}f2, floor{s,d}f2, ceil{s,d}f2, btrunc{s,d}f2,
nearbyint{s,d}f2): Use renamed patterns.
2004-12-22 Richard Kenner <>
* function.c (gimplify_parm_type): Don't gimplify type if already done.
* gimplify.c (gimplify_decl_expr): Likewise.
(gimplify_type_sizes): Set TYPE_SIZES_GIMPLIFIED. Examine nested
array types.
2004-12-22 Richard Henderson <>
* gimplify.c (eval_save_expr): Remove.
(gimplify_one_sizepos): Unshare expr before gimplifying.
* stor-layout.c (variable_size): Revert 2004-12-19 change.
(layout_decl): Revert 2004-12-18 change.
(layout_type): Revert 2004-12-21 change.
2004-12-22 Richard Kenner <>
* tree-sra.c (type_can_be_decomposed_p): Reject variable sized types.
2004-12-22 Mark Mitchell <>
* (install-common): Remove special-case code for when
SPECS is defined.
2004-12-22 Jan Beulich <>
* config.gcc: Add dbxelf.h to NetWare's tm_file.
* config/i386/netware-crt0.c: Prototype __init_environment and
__deinit_environment prior to their definition.
(__init_environment): Correct invokation of constructor function.
* config/i386/netware.h (TARGET_OS_CPP_BUILTINS): Use
builtin_define_std rather than builtin_define on IAPX386.
* config/i386/nwld.h: Disable stabs debugging info with the linker
this file supports.
* config/i386/t-nwld (SHLIB_LINK): Do not use a temporary file for
the output. Add -posix to the options as that is the more compatible
* gthr-nks.h: Formatting.
(__gthread_mutex_init_function): Kill the dubious use of
NX_MUTEX_RECURSIVE as it is now clear that the traditional mutexes
were not meant to be recursive.
(__gthread_recursive_mutex_t, __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION,
__gthread_recursive_mutex_lock, __gthread_recursive_mutex_trylock,
__gthread_recursive_mutex_unlock): New.
2004-12-22 Alexandre Oliva <>
* config/mips/t-linux64: Remove code that messed with $(SPECS).
n32 to the front.
* config/mips/linux64.h (DRIVER_SELF_SPECS): Don't handle
2004-12-21 Andrew Pinski <>
PR c++/18984
* pointer-set.c (pointer_set_contains): Add back.
* pointer-set.h (pointer_set_contains): Add back.
2004-12-21 Richard Henderson <>
* gimplify.c (eval_save_expr): New.
(gimplify_one_sizepos): Use it.
* stor-layout.c (layout_type): Unshare TYPE_MIN/MAX_VALUE.
2004-12-21 Nathan Sidwell <>
* system.c (IN_RANGE): Use plain unsigned, not unsigned
QUAL_UNION_TYPE): Reorder for better code efficiency.
* tree.h (INDIRECT_REF_P): Reorder checks for better optimization.
(INTEGRAL_TYPE_P, FLOAT_TYPE_P): Reorder checks for better
2004-12-21 David O'Brien <>
* config/freebsd-spec.h: Use KSE pthread lib for -pthread.
2004-12-21 James A. Morrison <>
PR c/18963
* c-decl.c (pushdecl): Remove block trying to merge static function
declarations at block scope to file scope declarations.
2004-12-21 James A. Morrison <>
PR c/18596
* (initdcl): Don't process a declaration if start_decl fails.
(notype_initdcl): Don't process a declaration if start_decl fails.
* c-decl.c (start_decl): Fail if grokdeclarator fails.
(grokdeclarator): Fail if a function definition has an invalid storage
* c-typeck.c (start_init): Treat error_mark_node the same as 0.
2004-12-21 Richard Henderson <>
* config/i386/i386.c (x86_sse_split_regs): Rename from
* config/i386/i386.h (x86_sse_split_regs): Likewise.
* config/i386/ (*): Update to match. Remove two
floatsisf splitters that use it.
* config/i386/i386.h (x86_sse_partial_regs_for_cvtsd2ss): Remove.
* config/i386/i386.c (x86_sse_partial_regs_for_cvtsd2ss): Remove.
* config/i386/i386.h (TARGET_SSE_PARTIAL_REGS_FOR_CVTSD2SS): Remove.
* config/i386/ (truncdfsf2_1_sse): Don't test it.
(truncdfsf2_2, truncdfsf2_sse_only): Likewise.
(truncdfsf2_1_sse_nooverlap, truncdfsf2_2_nooverlap): Remove.
(truncdfsf2_sse_only_nooverlap): Remove.
* config/i386/i386.h (TARGET_SSE_TYPELESS_LOAD0): Remove.
2004-12-21 Eric Botcazou <>
* expr.c (emit_group_load_1): Return the source if the move
is a regular move between complex values.
2004-12-20 Roger Sayle <>
PR middle-end/18683
* config/rs6000/rs6000.c (current_file_function_operand): Only check
current_function_decl's DECL_RTL if it has already been set.
2004-12-20 Roger Sayle <>
PR middle-end/18683
* function.c (pop_function_context_from): Don't reset reg_renumber.
2004-12-20 Eric Botcazou <>
PR middle-end/18776
* expr.c (write_complex_part): Use a subreg if the original object
is a hard reg that spans an even number of regs or a MEM.
(read_complex_part): Likewise.
2004-12-20 Mark Mitchell <>
* (install-common): Do not install the specs file
unless SPECS is defined.
2004-12-20 Zdenek Dvorak <>
PR rtl-optimization/18942
* simplify-rtx.c (simplify_relational_operation_1): Simplify
x + cst1 == cst2 to x == cst2 - cst1. Made static.
2004-12-20 Matt Austern <>
PR c++/19044
* c-common.c (set_builtin_user_assembler_name): New.
* c-common.h (set_builtin_user_assembler_name): Declare.
* c-decl.c (finish_decl): Use set_builtin_user_assembler_name
2004-12-20 Diego Novillo <>
PR tree-optimization/19080
Merge from tree-cleanup-branch
* tree-flow-inline.h (clear_call_clobbered): New function.
* tree-ssa-alias.c (init_alias_info): Call it.
2004-12-20 Richard Henderson <>
* config/i386/ (sse2_movsd): Remove ix86_binary_operator_ok
2004-12-20 Steven Bosscher <>
Andrew Pinski <>
PR middle-end/18191
PR middle-end/18965
PR middle-end/18999
* expr.c (categorize_ctor_elements_1): Count the total number
of elements in the constructor.
(categorize_ctor_elements): Return it in a new argument.
* tree.h (categorize_ctor_elements): Adjust prototype.
* gimplify.c (gimplify_init_ctor_eval_range): New.
(gimplify_init_ctor_eval): Gimplify RANGE_EXPR.
(gimplify_init_constructor): Block clear the object if the
constructor has fewer elements than the object type. Only try
to add assignments to individual elements when we have to.
2004-12-20 Richard Henderson <>
* config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
long_long_integer_type_node in building V2DI_type_node.
* config/i386/emmintrin.h: Use __vector_size__ instead of vector_size.
* config/i386/mmintrin.h, config/i386/xmmintrin.h: Likewise.
2004-12-20 Ben Elliston <>
* doc/md.texi (Expander Definitions): Use @emph instead of @strong
around Note: text to workaround a limitation of the Info format.
* doc/cpp.texi (Invocation): Likewise.
* doc/cppopts.texi: Likewise.
2004-12-19 Dale Johannesen <>
* tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Don't
reference operand 1 of ADDR_EXPRs.
2004-12-19 Mark Mitchell <>
* defaults.h (ASM_OUTPUT_INTERNAL_LABEL): New macro.
* output.h (assemble_name_raw): Declare it.
* system.h (ASM_OUTPUT_INTERNAL_LABEL): Do not poison it.
* varasm.c (assemble_name_raw): New function.
(assemble_name): Use it.
(default_internal_label): Likewise.
* config/darwin.c (darwin_asm_output_dwarf_delta): Likewise.
* doc/tm.texi (ASM_OUTPUT_INTERNAL_LABEL): Document.
2004-12-19 Richard Henderson <>
PR 18067
* stor-layout.c (variable_size): Force creation of a SAVE_EXPR.
2004-12-19 Steven Bosscher <>
* config/i386/i386.c (ix86_split_to_parts): Use an array with
four elements for decoding a CONST_DOUBLE on 64 bits targets.
2004-12-19 Bernardo Innocenti <>
* config/m68k/m68kemb.h (TARGET_OS_CPP_BUILTINS): Remove redundant
definition of mc68000, already present in TARGET_CPU_CPP_BUILTINS.
2004-12-18 Daniel Berlin <>
* lambda-code.c (can_convert_to_perfect_nest): Make checking
match up with what perfect_nestify can actually handle.
(perfect_nestify): Don't return false in the phi node loop.
2004-12-18 Richard Henderson <>
* config/i386/ (SSEINT16): New.
(movv16qi, movv8hi, movv4si, movv2di): Compress via macros.
(movv16qi_internal, movv8hi_internal, movv4si_internal,
movv2di_internal): Compress via macros. Add SSE zero alternative.
Fix pure SSE alternatives to use 'x' instead of 'Y'.
(MMXINT8): New.
(movv8qi, movv4hi, movv2si, movv8qi_internal, movv4hi_internal,
movv2si_internal): Compress via macros.
(pushv18qi, pushv8hi, pushv4si, pushv2di, pushti, pushv4sf, pushv2df,
pushv8qi, pushv4hi, pushv2si, pushv2sf): Compress via macros.
2004-12-18 Richard Henderson <>
PR middle-end/16417
* c-decl.c (store_parm_decls): Clarify get_pending_sizes insertion
* c-objc-common.c (c_cannot_inline_tree_fn): Remove pending sizes
* c-tree.h (struct lang_decl): Remove pending_sizes.
* function.c: Include tree-gimple.h
(assign_parm_setup_reg): Remove callee-copies code.
(gimplify_parm_type, gimplify_parameters): New functions.
(expand_pending_sizes): Remove.
(expand_function_start): Don't call it.
* gimplify.c (gimplify_expr): Examine DECL_VALUE_EXPR for PARM_DECL.
(gimplify_body): Add do_parms argument. Use gimplify_parameters.
(gimplify_function_tree): Setup cfun. Update gimplify_body call.
* tree-gimple.h (gimplify_body): Update decl.
* tree-inline.c (initialize_inlined_parameters): Update gimplify_body
* tree.h (gimplify_parameters): Declare.
* (function.o): Depend on TREE_GIMPLE_H.
2004-12-18 Richard Henderson <>
* c-decl.c (finish_struct): Add DECL_EXPR for variable sized
structures seen inside functions.
2004-12-18 Richard Henderson <>
* c-decl.c (grokdeclarator): Save variable array size before
subtracting 1, rather than after.
2004-12-18 Eric Botcazou <>
PR middle-end/15486
* varasm.c (asm_emit_uninitialised): Return early if
a custom section is requested.
(assemble_variable): Revert 2002-03-15 patch.
2004-12-18 Richard Henderson <>
* stor-layout.c (layout_decl): Use unshare_expr, not unsave_expr.
2004-12-18 Zdenek Dvorak <>
PR tree-optimization/18800
* params.def (PARAM_IV_ALWAYS_PRUNE_CAND_SET_BOUND): New parameter.
* tree-ssa-loop-ivopts.c (struct iv_ca): Add n_cands field.
(iv_ca_set_no_cp, iv_ca_set_cp, iv_ca_new): Update n_cands field.
(iv_ca_delta_join, iv_ca_delta_reverse, iv_ca_n_cands, iv_ca_prune):
New functions.
(iv_ca_extend): Return number of candidates in the set.
(try_add_cand_for): Add argument to iv_ca_extend calls.
(try_improve_iv_set): Use iv_ca_prune.
* doc/invoke.texi (iv-always-prune-cand-set-bound): Document.
2004-12-18 Zdenek Dvorak <>
PR rtl-optimization/19001
* loop-iv.c (iv_number_of_iterations): Record assumptions for loops
with power of two step to 'infinite' field.
2004-12-18 Roger Sayle <>
* (stor-layout.o): Depend upon gt-stor-layout.h.
(tree-ssa-propagate.o): Depend upon gt-tree-ssa-propagate.h.
(tree-ssa-operands.o): Depend upon gt-tree-ssa-operands.h.
(tree-mudflap.o): Depend upon gt-tree-mudflap.h.
(expr.o): Depend upon gt-expr.h.
(regclass.o): Depend upon gt-regclass.h.
(bitmap.o): Depend upon gt-bitmap.h.
(lists.o): Depend upon gt-lists.h.
(cfgexpand.o): Don't depend upon gt-tree-cfg.h.
(GTFILES): Remove fold-const.c.
(gt-stmt.h, gt-fold-const.h, gt-input.h, gt-tree-ssa-ccp.h):
Remove rules.
2004-12-18 Richard Henderson <>
* stor-layout.c (layout_decl): Unshare size expressions copied
from the type.
* fold-const.c (multiple_of_p): Handle BIT_AND_EXPR when
BOTTOM is a power of two.
2004-12-18 Richard Henderson <>
* tree-nested.c (save_tmp_var): New.
(struct walk_stmt_info): Add is_lhs.
(walk_stmts) <MODIFY_EXPR>: Be more accurate with setting of
val_only; set is_lhs.
(convert_nonlocal_reference): Use save_tmp_var when is_lhs;
clear is_lhs when appropriate.
(convert_local_reference): Likewise.
2004-12-18 Richard Earnshaw <>
* arm/ieee754-sf.S (floatdisf): Fix label definition in FPA
compatibility code.
2004-12-18 Roger Sayle <>
* ifcvt.c (total_bb_rtx_cost): Rename function to cheap_bb_rtx_cost_p.
Take a max_cost argument to avoid scanning large blocks, by returning
a Boolean instead of a total. Include the cost of a "fstp %st(0)"
instruction required to pop dead values off of a register stack.
2004-12-18 Roger Sayle <>
PR middle-end/18548
* expr.c (expand_expr_real_1) <MAX_EXPR>: Ensure that target, op0
and op1 are all registers (or constants) before expanding the RTL
comparison sequence [to avoid reg_overlap_mentioned (target, op1)].
2004-12-18 Eric Botcazou <>
PR rtl-optimization/16968
* loop.c (scan_loop): Stop scanning the loop for movable
insns as soon as an optimization barrier is encountered.
2004-12-17 Zack Weinberg <>
PR 18897
* toplev.c (compile_file): Call process_pending_assemble_externals
just before targetm.asm_out.file_end.
2004-12-17 Diego Novillo <>
* tree-optimize.c (init_tree_optimization_passes): Run
pass_late_warn_uninitialized before the last DCE run.
2004-12-17 Richard Henderson <>
* config/i386/i386.c (x86_64_reg_class_name): Re-indent.
(classify_argument, examine_argument, construct_container,
merge_classes): Remove prototypes.
(type_natural_mode): Split out from ...
(function_arg): ... here.
(gen_reg_or_parallel): Remove alt_mode argument. Update callers.
Use orig_mode unless it's BLKmode.
(construct_container): Add orig_mode argument. Update callers.
Use gen_reg_or_parallel for SSE registers.
(ix86_function_value): Use type_natural_mode.
(ix86_gimplify_va_arg): Likewise.
(ix86_hard_regno_mode_ok): Always accept all SSE, MMX, 3DNOW modes in
SSE registers; always accept all MMX, 3DNOW modes in MMX registers.
* config/i386/i386.h (VALID_SSE2_REG_MODE): Don't include
* config/i386/ (attribute mode): Add V1DF.
(movsi_1): Use 'x' instead of 'Y' constraints.
(movsi_1_nointernunit, movdi_2, movdi_1_rex64): Likewise.
(movdi_1_rex64_nointerunit): Likewise.
(movdf_nointeger, movdf_integer): Likewise. Handle SSE1.
(movsf_1, movsf_1_nointerunit): Line up constraint alternatives.
(swapsf): Use fp_register_operand, don't disable for TARGET_SSE.
(swapdf): Likewise.
(swapxf): Enable only for TARGET_80387.
(movv2sf, movv2sf_internal, pushv2sf): Enable for MMX.
(movtf): Remove double-check for TARGET_64BIT.
(movv2df_internal): Enable for SSE1.
(movv8hi_internal, movv16qi_internal): Likewise.
(movv2df, movv8hi, movv16qi): Likewise.
(pushv2di, pushv8hi, pushv16qi, pushv4si): Likewise.
(pushdi2_rex64, movv4sf_internal, movv4si_internal, movv2di_internal,
movv8qi_internal, movv4hi_internal, movv2sf_internal,
movv2df_internal, movv8hi_internal, movv16qi_internal,
movti_internal): Add leading '*' to name.
2004-12-17 Dale Johannesen <>
* c-decl.c (diagnose_mismatched_decls): Accept mismatched
function types: void with previous implicit int.
2004-12-17 Andreas Krebbel <>
* config/s390/s390.c (s390_gimplify_va_arg): Set alias set to
2004-12-17 Jan Beulich <>
PR target/17603
* config/i386/i386.c (enum x86_64_reg_class): Define
(x86_64_reg_class_names): Add name for X86_64_COMPLEX_X87_CLASS.
(merge_classes): Handle X86_64_COMPLEX_X87_CLASS.
(classify_argument): XCmode is X86_64_COMPLEX_X87_CLASS.
(examine_argument): X86_64_COMPLEX_X87_CLASS requires two
registers when dealing with a return value.
(construct_container): Handle X86_64_COMPLEX_X87_CLASS.
Eliminate impossible case of two X87/X87UP pairs (this now is
being expressed by a single COMPLEX_X87).
(x86_libcall_value): XCmode gets returned in st0/st1.
2004-12-17 Steven Bosscher <>
* tree.c (type_contains_placeholder_1): Always return false
for VECTOR_TYPE if its TREE_TYPE does not contain a placeholder.
2004-12-17 Uros Bizjak <>
* config/i386/ (extendsfdf2, *extendsfdf2_1,
*extendsfdf2_1_sse_only): Unify enable constraint with
(*extendsfdf2_i387): New insn pattern.
(*extendsfdf2_1): Rename to *extendsfdf2_mixed. Fix
register constraint for operand 0.
(*extendsfdf2_1_sse_only): Rename to *extendsfdf2_sse.
(*extend{s,d}fxf2_1): Rename to *extend{s,d}fxf2_i387.
2004-12-16 Andrew Pinski <>
PR target/19041
* config/darwin.c (machopic_symbol_defined_p): Return false
if the binds local and is a common symbol.
2004-12-16 Richard Henderson <>
* config/i386/ (extv, extzv, insv): Revalidate the
operand with ext_register_operand.
2004-12-16 Kazu Hirata <>
* global.c: Fix a comment typo.
2004-12-16 Eric Botcazou <>
Roger Sayle <>
PR tree-optimization/18707
* cfgloopmanip.c (create_preheader): Move the preheader
only if the latch was falling through to the header.
2004-12-16 Danny Smith <>
PR target/18997
* config/i386/cygwin.h (GTHREAD_USE_WEAK): Define to 0.
2004-12-16 Richard Henderson <>
Aldy Hernandez <>
* simplify-rtx.c (simplify_replace_rtx): Do not blindly replace
hard registers.
2004-12-16 H.J. Lu <>
PR other/18508
* config/alpha/t-osf4 (SHLIB_LINK): Use `.backup' as the suffix
to back up the existing shared library.
* config/arm/t-netbsd (SHLIB_LINK): Likewise.
* config/mips/t-slibgcc-irix (SHLIB_LINK): Likewise.
* config/pa/t-hpux-shlib (SHLIB_LINK): Likewise.
* config/sh/t-linux (SHLIB_LINK): Likewise.
* config/t-libunwind-elf (SHLIBUNWIND_LINK): Likewise.
* config/t-slibgcc-darwin (SHLIB_LINK): Likewise.
* config/t-slibgcc-elf-ver (SHLIB_LINK): Likewise.
* config/t-slibgcc-sld (SHLIB_LINK): Likewise.
* config/i386/t-nwld (SHLIB_LINK): Don't use the temporary
2004-12-16 Richard Henderson <>
* (MD_DEPS, s-mddeps): New.
(s-config, s-conditions, s-flags, s-codes, s-constants, s-emit,
s-recog, s-opinit, s-extract, s-peep, s-attr, s-attrtab, s-output,
s-preds): Depend on MD_DEPS instead of md_file.
(genobjnames): Add genmddeps.o
(build/genmddeps, build/genmddeps.o): New.
(mostlyclean): Remove
* genmddeps.c: New file.
* gensupport.c (include_callback): New.
(process_include): Call it.
* gensupport.h (include_callback): Declare.
2004-12-16 Nathan Sidwell <>
* local-alloc.c (block_alloc): Replace IN_RANGE with simple
* doc/c-tree.texi (CONSTRUCTOR): Mention RANGE_EXPRs.
2004-12-16 Mark Dettinger <>
* config/s390/s390.c (struct processor_costs): Two new fields:
madbr, maebr.
(s390_rtx_costs): Added handling of multipy and add in SFmode.
More precise values for cost of multiply and add.
2004-12-15 Richard Henderson <>
PR target/19028
* config/i386/ (sse compare splitter): Test for SF and DFmode
explicitly instead of using VALID_SSE_REG_MODE.
2004-12-15 Richard Henderson <>
PR target/19005
* config/i386/ (swaphi_1): Swap with swaphi_2, allow with
(swapqi_1): Rename from swapqi. Enable only for no partial reg
stall and optimize_size.
(swapqi_2): New.
(swaphi_1, swaphi_2, swapqi_1): Add athlon_decode.
(swapsi, swaphi_1, swaphi_2, swapqi_1, swapdi): Remove modrm override.
2004-12-16 Uros Bizjak <>
* config/i386/ (*floathisf2_i387, *floathidf2_i387):
Also enable for TARGET_MIX_SSE_I387.
2004-12-16 Uros Bizjak <>
* config/i386/ (sqrt{s,d}f2_1, sqrt{s,d}f2_1_sse_only,
sqrt{s,d}f2_i387): Unify enable constraint with respect to
(sqrt{s,d}f2_1): Rename to *sqrt{s,d}f2_mixed.
(sqrt{s,d}f2_1_sse_only): Rename to *sqrt{s,d}f2_sse.
(sqrt{s,d}f2_i387): Rename to *sqrt{s,d}f2_i387.
(*sqrtextendsfdf2): Also enable for TARGET_MIX_SSE_I387.
(*sqrtextend?f?f2): Rename to *sqrtextendsfdf2_i387.
2004-12-16 Uros Bizjak <>
* config/i386/ (*fop_?f_comm_{,sse,nosse},
*fop_?f_1_{,sse,nosse}, *fop_{d,x}f_{2,3,4,5,6}): Unify enable
constraint with respect to TARGET_80387, TARGET_SSE, TARGET_SSE2,
(*fop_?f_{comm,1}): Rename to *fop_?f_{comm,1}_mixed.
(*fop_?f_{comm,1}_nosse): Rename to *fop_?f_{comm,1}_i387.
(*fop_{d,x}f_{2,3,4,5,6}): Rename to *fop_{d,x}f_{2,3,4,5,6}_i387.
2004-12-15 H.J. Lu <>
PR target/18153
* Define HAVE_LD_STATIC_DYNAMIC if linker supports
-Bstatic/-Bdynamic option.
* Regenerated.
* configure: Likewise.
* gcc.c (init_spec): Pass -Bstatic/-Bdynamic to ld for static
-lunwind if possible.
2004-12-15 Daniel Berlin <>
* cfgloop.c (flow_loops_dump): Don't print out levels.
(flow_loops_find): Don't set loop->levels.
(flow_loops_level_compute): Make void.
* cfgloop.h (struct loops): Remove levels member.
Add comment about loops in parray possibly being NULL.
2004-12-15 Alexandre Oliva <>
* reload.c (SMALL_REGISTER_CLASS_P): New.
(push_secondary_reload, find_reusable_reload, find_reloads): Use
it instead of testing only the class size.
2004-12-15 Eric Botcazou <>
PR c++/17972
* tree-inline.c (expand_call_inline): Set TREE_SIDE_EFFECTS
on the STMT_EXPR wrapping up the inlined body.
2004-12-15 Vladimir Makarov <>
Steven Bosscher <>
PR middle end/17340
* global.c: Update comments in a few places.
(check_earlyclobber): Return true if there are early clobber
(calculate_local_reg_bb_info): Do not try to mark earlyclobber
regs if there are none.
(bb_info, allocate_bb_info, free_bb_info, modify_reg_pav,
make_accurate_live_analysis): Rename pavin, pavout to live_pavin,
(modify_bb_reg_pav): Remove.
(calculate_reg_pav): Use code from modify_bb_reg_pav.
(temp_bitmap): New variable.
(calculate_reg_pav): Allocate/deallocate temp_bitmap.
2004-12-15 Richard Henderson <>
PR target/19010
* config/i386/i386.c (ix86_must_pass_in_stack): Don't return true
for TImode vectors.
(gen_reg_or_parallel): New.
(function_arg): Use it.
(ix86_hard_regno_mode_ok): Test SSE1 and SSE2 separately,
MMX and 3DNOW separately.
(ix86_rtx_costs): Simplify FLOAT_EXTEND case.
(ix86_vector_mode_supported_p): Test SSE1 and SSE2 separately.
* config/i386/i386.h (VALID_SSE2_REG_MODE): Move SSE2 cases from ...
(VALID_SSE_REG_MODE): ... here.
2004-12-15 David Edelsohn <>
* xcoffout.c (xcoffout_declare_function): Change strncpy to memcpy.
2004-12-15 Ian Lance Taylor <>
* config/arm/arm.c (arm_xscale_rtx_costs): Increase cost of
* config/arm/ (mulsi3_compare0): Don't check
(mulsi_compare0_scratch, mulsi3_addsi_compare0): Likewise.
(mulsi3addsi_compare0_scratch): Likewise.
2004-12-15 Eric Botcazou <>
PR other/18665
* libgcc-std.ver (GCC_3.4.4): Inherit from GCC_3.4.2.
Export __absvti2, __addvti3, __mulvti3, __negvti2 and __subvti3.
* libgcc2.c (__addvsi3): Rename to __addvSI3.
(__addvdi3): Rename to __addvDI3.
(__subvsi3): Rename to __subvSI3. Use word type for the result.
(__subvdi3): Rename to __subvDI3.
(_mulvsi3): Rename to _mulvSI3.
(_mulvdi3): Rename to _mulvDI3.
(__negvsi2): Rename to __negvSI2.
(__negvdi2): Rename to __negvDI2.
(__absvsi2): Rename to __absvSI2.
(__absvdi2): Rename to __absvDI2.
* libgcc2.h (64-bit targets): Define COMPAT_SIMODE_TRAPPING_ARITHMETIC.
(__absvSI2, __addvSI3, __subvSI3, __mulvSI3, __negvSI2, __absvDI2,
__addvDI3, __subvDI3, __mulvDI3, __negvDI2): Define to the appropriate
symbol and declare.
(__absvsi2, __addvsi3, __subvsi3, __mulvsi3, __negvsi2): Declare if
2004-12-15 Kazuhiro Inaoka <>
* config/m32r/m32r.h (PREFERRED_DEBUGGING_TYPE):
* config/m32r.c (m32r_legitimize_pic_address): Changed
to support GOTOFF relocation.
* config/ (UNSPEC_GOTOFF): New.
(gotoff_load_addr): New.
2004-12-15 Richard Sandiford <>
* config/mips/mips.c (mips_arg_info): Use FUNCTION_ARG_BOUNDARY to
decide whether an argument is double-word aligned.
2004-12-15 Richard Henderson <>
* config/i386/ Fix missing modes on cmove splitters.
2004-12-15 Jan Beulich <>
* (libgcc2_c_dep): Add dependency on libgcc2.h.
2004-12-15 Uros Bizjak <>
* config/i386/ (floathisf2, *floathisf2_1, floatsisf2,
*floatsisf2_i387, *floatsisf2_sse, floatdisf2,
*floatdisf2_i387_only, *floatdisf2_i387, *floatdisf2_sse,
floathidf2, *floathidf2_1, *floatsidf2_i387, *floatsidf2_sse,
floatdidf2, *floatdidf2_i387_only, *floatdidf2_i387,
*floatdidf2_sse, floatunssisf2, floatunsdisf2, floatunsdidf2):
Unify enable constraint with respect to TARGET_80387, TARGET_SSE,
(*float?i?f_i387): Rename to *float?i?f2_mixed.
(*float?i?f2_1): Rename to *float?i?f2_i387.
(*float?i?f2_i387_only): Rename to *float?i?f2_i387.
(float?ixf2): Penalize integer register operand.
2004-12-14 John David Anglin <>
PR c++/17242
* Add GAS check for HP-UX .nsubspa comdat.
* configure, Rebuilt.
* config/pa/pa-hpux10.h (SUPPORTS_ONE_ONLY, MAKE_DECL_ONE_ONLY): Delete
* config/pa/pa.c (pa_select_section): Allow uninitialized variables in
one-only (comdat) subspaces.
* config/pa/som.h (SUPPORTS_SOM_COMDAT): New define.
(MAKE_DECL_ONE_ONLY): Place uninitialized variables in common.
2004-12-14 Ian Lance Taylor <>
* combine.c (combine_validate_cost): Consider cost of
undobuf.other_insn rather than always allowing the recombination
if it is set.
2004-12-14 John David Anglin <>
* pa-host.c (MAP_FAILED): Define if not defined.
(pa_gt_pch_use_address): Handle short reads.
2004-12-14 Richard Henderson <>
PR target/17990
* config/i386/i386.c (x86_use_bt): New.
(ix86_expand_unary_operator): Use MEM_P.
(ix86_expand_fp_absneg_operator): New.
* config/i386/i386.h (x86_use_bt): Declare.
* config/i386/i386-protos.h: Update.
* config/i386/ (negsf2): Use ix86_expand_fp_absneg_operator.
(negdf2, negxf2, abssf2, absdf2, absxf2): Likewise.
(negsf2_memory, negsf2_ifs, negsf2_if, negdf2_memory, negdf2_ifs,
negdf2_ifs_rex64, negdf2_if, negdf2_if_rex64, negxf2_if,
abssf2_memory, abssf2_ifs, abssf2_if, absdf2_memory, absdf2_ifs,
absdf2_ifs_rex64, absdf2_if, absxf2_if): Remove.
(absnegsf2_mixed, absnegsf2_sse, absnegsf2_i387, absnegdf2_mixed,
absnegdf2_sse, absnegdf2_i387, absnegxf2_i387): New. Merge all
neg and abs splitters. Handle DFmode in general regs in 64-bit mode.
(negextendsfdf2, absextendsfdf2): Disable for non-mixed sse math.
(btsq, btrq, btcq): New. Add peepholes as well.
(movv4sf_internal splitter): Postpone til after reload.
(movv2di_internal splitter): Likewise.
* config/i386/ (const_0_to_63_operand): New.
(absneg_operator): New.
2004-12-14 John David Anglin <>
Check register number and that reg_renumber is nonzero before using it.
2004-12-14 Steve Ellcey <>
* doc/invoke.texi (IA-64 options): Add existing options that
weren't already listed.
2004-12-14 Jeff Law <>
* tree-outof-ssa.c (coalesce_abnormal_edges): Pass the correct target
partition to conflict_graph_merge_regs.
2004-12-14 Uttam Pawar <>
Janis Johnson <>
* rs6000.c (rs6000_handle_altivec_attribute_tree): Report errors
for vector types with invalid component types.
2004-12-14 Jakub Jelinek <>
PR middle-end/18951
* builtins.c (expand_builtin_mathfn, expand_builtin_mathfn_2,
expand_builtin_mathfn_3): Avoid using arguments passed to
save_expr after that call.
* fold-const.c (fold_single_bit_test): If flag_syntax_only, pretend
LOAD_EXTEND_OP is not defined.
(fold): Likewise. If flag_syntax_only, don't depend on BITS_PER_WORD.
2004-12-14 Tobias Schlueter <>
* tree.def, doc/c-tree.texi: Correctly document restrictions on the
shift width.
2004-12-14 Kazu Hirata <>
* expr.h (expand_modifier): Define EXPAND_STACK_PARM as 1.
2004-12-14 Richard Earnshaw <>
PR target/18973
arm-cores.def (arm926ej-s, arm1026ej-s, arm1136j-s, arm1136-jfs)
(arm1176jz-s, arm1176jzf-s, mpcorenovfp, mpcore): Add load-scheduling
property to flags.
2004-12-14 Diego Novillo <>
* tree-gimple.c (get_base_address): Update documentation.
2004-12-13 Richard Henderson <>
PR middle-end/17930
* passes.c (rest_of_clean_state): Fix computation of
2004-12-13 Wolfgang Bangerth <>
* reload.h: Remove struct needs and its only use.
2004-12-13 Roger Sayle <>
PR rtl-optimization/18928
* simplify_rtx.c (plus_minus_operand_p): New function to encode
the test for suitable operands for calls to simplify_plus_minus.
Only allow (CONST (PLUS x y)) if both x and y are CONSTANT_P.
(simplify_binary_operation): Use plus_minus_operand_p.
2004-12-13 Alexandre Oliva <>
PR tree-opt/16951
* tree-inline.c (setup_one_parameter): Don't directly map a
parameter to the address of another variable of the same
2004-13-12 Steven Bosscher <>
* basic-block.h (PROP_POSTRELOAD): Do not include PROP_AUTOINC, we
can never create autoinc insns after reload.
2004-12-13 Jeff Law <>
Kazu Hirata <>
PR tree-optimization/18694
* tree-ssa-dom.c (thread_across_edge): Do not thread jumps if a
PHI argument is set from a PHI_RESULT in the same block and the
PHI argument is not the same as the PHI result.
2004-12-13 David Edelsohn <>
* xcoffout.c (xcoffout_declare_function): Always strip storage
class encoding.
2004-12-13 Andrew Pinski <>
PR target/18964
* config/darwin.c (darwin_assemble_visibility): Fix minor diagnostic
problem, adding a space at the end of the string before concatenation.
2004-12-13 Kazu Hirata <>
* c-common.c (fname_as_string): Free namep if we are returning
* tree-ssa-dom.c (record_edge_info): Fix memory leak.
2004-12-13 Andrew Pinski <>
* tree-cfg.c (remove_useless_stmts_cond): Call fold on COND_EXPR_COND.
2004-12-13 Kazu Hirata <>
* tree-ssa-dom.c (record_equivalences_from_phis): Speed up by
doing a pointer comparison.
* tree-ssa-dom.c (record_equivalences_from_phis): Add a
* defaults.h, stmt.c, tree-cfg.c, tree-ssa-dce.c: Fix comment
2004-12-13 Kazuhiro Inaoka <>
* config/m32r/t-linux (SHLIB_MAPFILES): Add libgcc-glibc.ver to
the list rather than replacing the existing value.
2004-12-13 Richard Henderson <>
* cfg.c (dump_flow_info): Don't dump pseudo info after reload.
2004-12-13 Richard Henderson <>
* (insn-preds.o): Depend on REGS_H.
* genpreds.c (write_insn_preds_c): Include regs.h.
* config/i386/ (index_register_operand): Use
* config/i386/i386.h (REG_CLASS_FROM_LETTER): Add 'l'.
* config/i386/ (lea_general_1, lea_general_1_zext,
lea_general_2, lea_general_2_zext, lea_general_3, lea_general_3_zext,
adddi_1_rex64, addsi_1, addsi_1_zext, addhi_1_lea, addqi_1_lea,
ashldi3_1_rex64, ashlsi3_1, ashlsi3_1_zext, ashlhi3_1_lea,
ashlqi3_1_lea): Use 'l' for index register operand.
(ashldi3_1_rex64 splitter): Use index_register_operand.
(ashlsi3_1 splitter): Be more careful with modes.
2004-12-13 Danny Smith <>
PR target/18459
* defaults.h (TARGET_USE_JCR_SECTION): New macro.
* doc/tm.texi (TARGET_USE_JCR_SECTION): Document it.
* config/i386/cygming.h (TARGET_USE_JCR_SECTION): Override
2004-12-13 Uros Bizjak <>
PR target/14941
PR target/18503
* config/i386/ (sse_movss, sse2_movsd, sse2_movhpd):
Fix wrong vec_merge selector bitmask.
2004-12-12 Richard Henderson <>
PR rtl-opt/17186
* reg-stack.c (move_nan_for_stack_reg): New.
(subst_stack_regs_pat): Use it.
(move_for_stack_reg): Handle source register not live with a nan.
2004-12-12 Richard Henderson <>
* config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatch
errors across operations.
2004-12-12 Di-an Jan <>
* doc/passes.texi (Pass Manager): Correct list of source files.
2004-12-12 Richard Henderson <>
* expr.c (emit_move_change_mode): New.
(emit_move_via_alt_mode): Use it.
2004-12-12 Nathanael Nerode <>
John David Anglin <>
PR middle-end/17564
* dojump.c (do_compare_and_jump): Only canonicalize function pointers
in a comparison if both sides are function pointers.
2004-12-12 Richard Henderson <>
PR target/18932
* config/i386/ (all splits and peepholes): Use flags_reg_operand
and compare_operator to propagate the input CC mode to the output.
* config/i386/ (compare_operator): New.
2004-12-12 Andrew Pinski <>
PR tree-opt/18040
* expr.c (get_inner_reference): Remove NON_LVALUE_EXPR, NOP_EXPR,
(handled_component_p): Likewise.
2004-12-12 Kazu Hirata <>
* reg-stack.c (convert_regs_2): Free stack.
* tree-ssa-dom.c (thread_across_edge, dom_opt_finalize_block): Fix
comment typos.
2004-12-12 Daniel Berlin <>
* tree-ssa-loop-ch.c (copy_loop_headers): Loop can be null.
* tree-ssa-loop-im.c (determine_lsm): tree_root may not have a real
inner loop.
2004-12-12 Diego Novillo <>
* tree-gimple.c (get_base_address): Update documentation.
2004-12-12 Kazu Hirata <>
* lcm.c (optimize_mode_switching): Free ptr even when mode_set
2004-12-12 Roger Sayle <>
* reg-stack.c (change_stack): Avoid placing the new top-of-stack in
its correct location during popping if we need to permute the stack
afterwards. Attempt to preserve the original stack ordering.
2004-12-12 Kazu Hirata <>
* lcm.c (optimize_mode_switching): Free insert and delete in
the "for" loop.
2004-12-11 David Edelsohn <>
Ulrich Weigand <>
PR target/18641
* config/rs6000/darwin.h (PREFERRED_RELOAD_CLASS): Reload all
constants into all register classes intersecting with FLOAT_REGS
via memory.
* config/rs6000/rs6000.h (PREFERRED_RELOAD_CLASS): Same.
* config/rs6000/ (movdi_internal32): Ignore FPRs when
choosing register preferences.
(movdi_internal64): Same.
2004-12-11 Kazu Hirata <>
* tree-into-ssa.c (rewrite_ssa_into_ssa): Free SSA_NAME_AUX
before we release an SSA_NAME.
2004-12-11 Roger Sayle <>
PR middle-end/18921
* fold-const.c (fold_unwidened_comparison): Use omit_one_operand
instead of constant_boolean_node as arg0 may have side-effects.
2004-12-10 John David Anglin <>
* pa-host.c (pa_gt_pch_use_address): Use lseek and read to copy PCH
file to anonymous private map.
2004-12-10 Roger Sayle <>
PR target/18002
PR middle-end/18424
* dojump.c (do_jump): When attempting to reverse the effects of
fold_single_bit_test, we need to STRIP_NOPS and narrowing type
conversions, and handle BIT_XOR_EXPR that's used to invert the
sense of the single bit test.
2004-12-10 Devang Patel <>
PR 18732
* gcc.c (main): Do not break out of loop when error is reported while
processing one source file.
2004-12-10 Diego Novillo <>
* tree-into-ssa.c (REWRITE_THIS_STMT): Define.
(mark_def_sites): Clear REWRITE_THIS_STMT for statements that
don't need any operands rewritten.
(rewrite_stmt): Ignore statements that don't need to be
(rewrite_operand): Validate that an existing SSA_NAME is
identical to the current reaching definition of the operand.
2004-12-10 Diego Novillo <>
* tree-dfa.c (mark_call_clobbered_vars_to_rename): New function.
* tree-vectorizer.c (vectorizable_load): Call it.
* tree-flow.h (mark_call_clobbered_vars_to_rename): Declare.
* tree-sra.c (mark_all_v_defs): Also mark VUSEs for renaming.
2004-12-10 Kazu Hirata <>
* regmove.c (combine_stack_adjustments_for_block): Free
memlist if it hasn't been freed.
2004-12-10 Ziemowit Laski <>
* c-typeck.c (lookup_field): Check if a TYPE_LANG_SPECIFIC
pointer field is set before dereferencing it.
2004-12-10 Andrew Pinski <>
PR middle-end/18903
* tree-cfg.c (remove_bb): Put the moved label at the beginning
of the basic block.
2004-12-10 Kazu Hirata <>
* tree-data-ref.c (free_data_refs): Free each data_reference
* tree-ssa-dom.c (thread_across_edge): Speed up by avoiding a
call to is_gimple_min_invariant if we know the result.
2004-12-10 Jeff Law <>
* tree-ssa-alias.c (setup_pointers_and_addressables): Remove
redundant test of v_ann->mem_tag_kind.
* tree-ssa-operands.c (get_indirect_ref_operands): Remove
redundant conditional clearing opf_kill_def.
2004-12-10 Richard Sandiford <>
* config/frv/frv-modes.def: Fix comment typos.
(CC_NZ): Define new mode.
* config/frv/frv-protos.h (frv_select_cc_mode): Declare.
(condexec_intop_cmp_operator): Delete.
* config/frv/frv.c (comparison_string): New function.
(frv_print_operand): Use it to handle 'c' and 'C'.
(relational_operator): Redefine in terms of integer_relational_operator
and float_relational_operator.
(signed_relational_operator, unsigned_relational_operator): Delete.
(integer_relational_operator): New predicate, combining the above.
Check the mode of the first operand but leave to check the rest.
(float_relational_operator): Just check the mode of the first operand
and leave to check the rest.
(intop_compare_operator): Assume the result is compared with zero
in mode CC_NZmode. Allow PLUS and MINUS. Leave to check
the operand predicates.
(condexec_intop_cmp_operator): Delete.
(frv_ifcvt_modify_tests, frv_ifcvt_modify_multiple_tests)
(frv_hard_regno_mode_ok): Handle CC_NZmode.
(frv_select_cc_mode): New function.
* config/frv/frv.h (SELECT_CC_MODE): Use frv_select_cc_mode.
(PREDICATE_CODES): Replace entries for signed_relational_operand and
unsigned_relational_operator with one for integer_relational_operator.
Delete entry for condexec_intop_cmp_operator.
* config/frv/ (movcc_nz, *internal_movcc_nz, reload_incc_nz)
(reload_outcc_nz, *cmpsi_cc_nz, *cond_exec_cmpsi_cc_nz): New patterns.
(*combo_intop_compare2, *combo_intop_compare4): Delete.
(*combo_intop_compare1): Change mode to CC_NZ.
(*combo_intop_compare2): Likewise. Renamed from *combo_intop_compare3.
(branch_{un,}signed_true, branch_{un,}signed_false)
(*scc_{un,}signed, *scc_neg1_{un,}signed, *ck_{un,}signed)
(*movqicc_internal1_{un,}signed, *movqicc_internal2_{un,}signed)
(*movhicc_internal1_{un,}signed, *movhicc_internal2_{un,}signed)
(*movsicc_internal1_{un,}signed, *movsicc_internal2_{un,}signed)
(*movsfcc_has_fprs_{un,}signed, *movsfcc_no_fprs_{un,}signed)
(*return_{unsigned_,}true, *return_{unsigned_,}false): Merge these
pattern pairs. Use integer_relational_operator. Remove mode from
2004-12-10 Mark Dettinger <>
* config/s390/s390.c (struct processor_costs): New fields ml,
sqdbr, sqebr.
(s390_rtx_costs): Added the missing handling of multiply & add,
square root, and umulsidi.
2004-12-10 Kazu Hirata <>
* expmed.c (synth_mult): Initialize new_limit.latency before
making a recursive call.
2004-12-10 Nick Clifton <>
* config/mn10300/mn10300.c (legitimate_address_p): Reject address
whose index is itself the sum of two other parts.
2004-12-10 Alan Modra <>
* config/t-slibgcc-sld (SHLIB_LINK): Correct symlink.
2004-12-10 Uros Bizjak <>
* config/i386/ (*cmpfp_sf): Change type attribute to "multi".
2004-12-09 Richard Henderson <>
PR c/18282
* attribs.c (decl_attributes): Use relayout_decl.
* c-common.c (handle_mode_attribute): Copy all relevant type
parameters from the new underlying integral type.
2004-12-09 Richard Henderson <>
* c-common.c (shorten_compare): Don't special-case min/maxval
for C enumerations.
2004-12-09 Richard Sandiford <>
* simplify-rtx.c (simplify_subreg): In the CONCAT case, check whether
the request subreg is entirely contained in the requested component.
(simplify_gen_subreg): Return null for CONCATs that are rejected
by simplify_subreg.
* expmed.c (store_bit_field): Create a temporary when changing the
value to an integer mode.
2004-12-09 David Edelsohn <>
* real.c (ibm_extended): Correct comment.
2004-12-09 Stan Shebs <>
* config/rs6000/darwin-asm.h: New file, 32/64-bit assembly macros
formerly in darwin-tramp.asm.
* config/rs6000/darwin-tramp.asm: Include darwin-asm.h.
* config/rs6000/darwin-fpsave.asm: Use 32/64-bit macros.
* config/rs6000/t-darwin: Add dependencies.
2004-12-09 Richard Henderson <>
PR target/17025
* config/i386/ (testqi_1_maybe_si, andqi_2_maybe_si): New.
(test_qi_1, andqi_2): Do not promote to simode.
2004-12-09 Andrew Pinski <>
PR tree-opt/18904
* tree-chrec.c (chrec_convert): Use fold_convert
instead of convert.
2004-12-09 Matt Rice <>
PR preprocessor/18102
* c-incpath.c (remove_duplicates): Check for construct
2004-12-09 Dorit Naishlos <>
* genopinit.c (vec_realign_store_optab): Initialization removed.
* optabs.c (optab_for_tree_code): REALIGN_STORE_EXPR case removed.
* optabs.h (optab_index): OTI_vec_realign_store Removed.
(vec_realign_store_optab): Removed.
* target.h (builtin_mask_for_store): Removed.
* tree.def (REALIGN_STORE_EXPR): Removed.
* config/rs6000/rs6000.c (rs6000_builtin_mask_for_store): Removed.
(altivec_builtin_mask_for_store): Removed.
(altivec_init_builtins): Removed initialization of
2004-12-09 Nathan Sidwell <>
* doc/c-tree.texi (CONSTRUCTOR): Mention RANGE_EXPRs.
* tree.def (SET_TYPE): Remove.
(CONSTRUCTOR): Update description.
* builtins.c (type_to_class) Remove SET_TYPE case.
* dbxout.c (dbxout_type): Likewise.
* dwarf2out.c (is_base_type): Likewise.
(gen_set_type_die): Remove.
(gen_type_die): Remove SET_TYPE case.
* expr.c (count_type_elements): Likewise.
(mostly_zeroes_p): Likewise.
(store_constructor): Likewise.
* print_tree.c (print_node): Likewise.
* stor-layout.c (layout_type): Likewise.
* tree-browser.c (browse_tree): Likewise.
* tree-inline.c (remap_type): Likewise.
* tree-pretty-print.c (dump_generic_node): Likewise.
* tree.c (type_contains_plaeholder_1, type_hash_eq,
variably_modified_type_p, initializer_zerop): Likewise.
* tree.h (SET_OR_ARRAY_CHECK): Remove.
* typeclass.h (enum type_class): Remove set_type_class.
* varasm.c (const_hash_1): Remove SET_TYPE case.
(compare_constant, copy_constant, output_constant): Likewise.
* config/i386/i386.c (classify_argument): Likewise.
* config/ia64/ia64.c (hfa_element_mode): Likewise.
* config/sparc/sparc.c (sparc_type_code): Likewise.
PR c++/16681
* tree-inline.c (estimate_num_insns_1): Add RANGE_EXPR case.
2004-12-08 Richard Henderson <>
* config/i386/ Use FLAGS_REG everywhere.
2004-12-08 Eric Christopher <>
* config/mips/mips.c (mips_scalar_mode_supported_p): Rewrite
to avoid call to default function.
2004-12-08 Zack Weinberg <>
PR 17982
* varasm.c (pending_assemble_externals): New static.
(assemble_external_real): Meat of assemble_external split out
to this new function.
(process_pending_assemble_externals): New function.
(assemble_external): Use gcc_assert. If flag_unit_at_a_time
is true and the basic test passes, merely cons the decl onto
the pending list to be handled later.
* tree.h: Declare process_pending_assemble_externals.
* cgraphunit.c (cgraph_optimize): Call it.
* config/h8300/h8300.h: Do not define ASM_OUTPUT_EXTERNAL.
2004-12-08 Kazu Hirata <>
* cfgloopmanip.c (create_preheader): Speed up by "unrolling"
and simplifying FOR_EACH_EDGE.
2004-12-08 Richard Sandiford <>
* config/frv/frv.c (frv_sort_insn_group): Always initialize
2004-12-08 Nathan Sidwell <>
PR c++/18672
* gimplify.c (canonicalize_addr_expr): Cope with array of
incomplete type.
(gimplify_conversion): Remove redundant checks.
* doc/trouble.texi (Non-bugs): Clarify empty loop removal.
2004-12-08 Uros Bizjak <>
* config/i386/i386.c (output_387_binary_op,
ix86_prepare_fp_compare_args): Fix is_sse condition.
2004-12-07 Uros Bizjak <>
* config/i386/i386-protos.h (ix86_split_fp_branch): New rtx
* config/i386/i386.c (output_fp_compare): Fix is_sse condition.
Use EFLAGS_P only when fcomi insn should be used. Fix handling
of eflags_p variable. Change alt table accordingly. For non-fcomi
compare insn always use trailing fnstsw insn. Fix intmode
calculation for ficom insn.
(ix86_split_fp_branch): Add "rtx pushed" as new parameter. Call
ix86_free_from_memory when "pushed" is specified.
(ix86_expand_branch): Change call to ix86_split_fp_branch.
* config/i386/ (*cmpfp_0_sf, *cmpfp_0_df, *cmpfp_0_xf):
Change eflags_p parameter in call to output_fp_compare.
(*cmpfp_2_sf, *cmpfp_2_df, *cmpfp_2_xf): Remove.
(*cmpfp_2_sf_1, *cmpfp_2_df_1, *cmpfp_2_xf_1): Rename to
*cmpfp_2_sf, *cmpfp_2_df, *cmpfp_2_xf. Change eflags_p
parameter in call to output_fp_compare.
(*cmpfp_2_u): Remove.
(*cmpfp_2_u_1): Rename to *cmpfp_2_u. Change eflags_p parameter
in call to output_fp_compare.
(*ficom_1): Remove insn definition and corresponding define_split.
(*cmpfp_si): New insn definition.
(*fp_jcc_8): New insn definition. Add new splitters for
"memory_operand" and "register_operand".
(define_split): Add new parameter in call to ix86_split_fp_branch.
config/i386/ (float_operator): New predicate.
2004-12-08 Kazu Hirata <>
* c-common.c (verify_tree): Don't check code length if we know
we are handling tcc_unary.
* print_tree.c (print_node): Remove code to handle RTL
appearing as a part of a tree node.
* tree-gimple.c (recalculate_side_effects): Rename fro as len.
* tree.c (build1_stat): Don't check TREE_CODE_LENGTH.
(PROCESS_ARG): Don't refer to fro.
(build2_stat, build3_stat, build4_stat): Don't compute fro.
2004-12-07 Roger Sayle <>
PR middle-end/18293
* expmed.c (EXACT_POWER_OF_2_OR_ZERO_P): Move definition earlier.
(expand_mult): Special case powers of two to avoid synth_mult.
* loop.c (product_cheap_p): Handle case where expand_mult does
require/generate any instructions (i.e. multiplication by zero).
2004-12-07 Richard Henderson <>
* tree-pretty-print.c (dump_array_domain): Split out from
dump_generic_node; fix off-by-one error on zero-based array bounds.
(dump_generic_node): Use it.
(print_declaration): Likewise.
2004-12-08 Richard Guenther <>
* doc/invoke.texi: Adjust default values for
large-function-growth and inline-unit-growth to match
params.def. Clarify used algorithm.
2004-12-07 David Mosberger <>
PR target/18443
* config/ia64/ia64.c (ia64_assemble_integer): Add support for
emitting unaligned pointer-sized integers.
2004-12-07 Steven Bosscher <>
PR c/18867
* c-typeck.c (c_start_case): Set orig_type to error_mark_node
when the type of the controlling expression is not a valid type.
2004-12-07 Steven Bosscher <>
PR tree-optimization/17340
* tree-ssa-pre.c (compute_antic): Fix comment.
(compute_avail): Do not recurse, instead do a DFS using a stack
and a loop.
(execute_pre): Adjust.
2004-12-07 Ziemowit Laski <>
* c-tree.h (struct lang_type): Rename 'objc_protocols' field
to 'objc_info'.
2004-12-07 Eric Christopher <>
PR target/16317
* config/netbsd.h (NO_IMPLICIT_EXTERN_C): Define.
2004-12-07 Eric Christopher <>
* config/mips/mips-protos.h (mips_valid_pointer_mode): Move
* config/mips/mips.c: ... here. Make static.
2004-12-07 Eric Christopher <>
PR target/18442
* config/mips/mips.c (mips_vector_mode_supported_p): New function.
2004-12-07 Kazu Hirata <>
* c-common.c, expr.c, fold-const.c, print-tree.c,
tree-gimple.c, tree-inline.c, tree-pretty-print.c,
tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c: Replace uses of
first_rtl_op with TREE_CODE_LENGTH.
* tree.c (first_rtl_op): Remove.
Replace uses of first_rtl_op with TREE_CODE_LENGTH.
* tree.h: Remove the prototype for first_rtl_op.
2004-12-07 David Edelsohn <>
* config/rs6000/t-aix43, config/rs6000/t-aix52 (SHLIB_LINK):
Revert 2004-12-01 change.
2004-12-06 Ziemowit Laski <>
* c-tree.h (struct lang_type): Add 'objc_protocols' field.
2004-12-06 DJ Delorie <>
* reload.c (find_valid_class): Fix logic to test inner mode as well.
(push_reload): Pass inner mode.
2004-12-06 Eric Christopher <>
* doc/tm.texi (TARGET_VALID_POINTER_MODE): Document.
2004-12-06 Aldy Hernandez <>
* config/rs6000/sysv4.h: Define RELOCATABLE_NEEDS_FIXUP to 1.
2004-12-06 Zdenek Dvorak <>
Kazu Hirata <>
PR tree-optimization/18601
* tree-cfg.c (thread_jumps, thread_jumps_from_bb): Removed.
(tree_forwarder_block_p): Do not consider blocks that are its own
successors forwarders.
(cleanup_forwarder_blocks, remove_forwarder_block): New functions.
(cleanup_tree_cfg): Use cleanup_forwarder_blocks instead of
* tree-flow.h (bb_ann_d): Remove forwardable.
2004-12-06 Kazu Hirata <>
* expr.c (expand_expr_real_1): Remove an "if" whose condition
is always false.
2004-12-06 Roger Sayle <>
* c-gimplify.c (gimplify_c_loop): Improve initial implementations
for loops whose conditions are known at compile-time.
* gimplify.c (append_to_statement_list_1): Remove side_effects
parameter, this function should never be called if its false.
(append_to_statement_list): Only call append_to_statement_list_1
if t is non-NULL tree with side-effects.
(append_to_statement_list_force): Likewise, if t is not NULL.
2004-12-06 J"orn Rennecke <>
* bt-load.c (btr_def_s): New member own_end;
(add_btr_to_live_range): Add second parameter. Changed caller.
(clear_btr_from_live_range): Clear btrs_live_at_end bit
for the register its definition basic block if own_end is set.
(augment_live_range): Also take btrs_live_at_end into account.
(combine_btr_defs): Don't bother with
other_def->other_btr_uses_after_use if it pertains to a different
(move_btr_def): Set def->other_btr_uses_before_def after
calling combine_btr_defs."
* bt-load.c (augment_live_range): New argument full_range.
Changed all callers.
* bt-load.c (move_tr_def): Set other_tr_uses_before_def
taking new btr assignment into account.
2004-12-05 Daniel Berlin <>
* tree-ssa-alias.c (create_global_var): Use void_type_node,
not size_type_node.
2004-12-05 Kazu Hirata <>
* expr.c (expand_expr_real_1): Abort on COND_EXPR of
2004-12-05 Richard Henderson <>
PR target/18841
* config/alpha/ (UNSPECV_SETJMPR_ER): New.
(builtin_setjmp_receiver_er_sl_1): Use it.
(builtin_setjmp_receiver_er_1): Likewise.
(builtin_setjmp_receiver_er, exception_receiver_er): Remove.
(builtin_setjmp_receiver): Don't split for explicit relocs until
after reload.
(exception_receiver): Likewise.
2004-12-05 Andrew Pinski <>
* (vis_hide): Add the prototype for the test.
2004-12-05 Roger Sayle <>
* c-typeck.c (c_finish_loop): Improve initial implementations
for loops whose conditions are known at compile-time.
2004-12-05 Kazu Hirata <>
* builtins.c: Fix comment typos.
2004-12-04 John David Anglin <>
PR middle-end/18730
* emit-rtl.c (get_first_nonnote_insn, get_last_nonnote_insn): When
the first/last insn is a sequence, return the first/last insn of the
PR bootstrap/18804
* (vis_hide): Use implementation instead of declaration
for test function.
2004-12-04 Richard Henderson <>
* config/alpha/alpha.c (alpha_expand_unaligned_load): Don't forget to
use ofs in BWX two byte special case.
(alpha_expand_unaligned_store): Likewise.
2004-12-04 Kazu Hirata <>
* gcse.c (gcse_main): Add a comment.
2004-12-04 Andrew Pinski <>
PR middle-end/17909
* builtins.c (fold_builtin_next_arg): Export and return true
when there is a warning or an error.
(expand_builtin_va_start): When fold_builtin_next_arg returns true,
return const0_rtx.
(expand_builtin): Likewise.
* gimplify.c (gimplify_call_expr): Error out if there is not
enough arguments to va_start. Call fold_builtin_next_arg also
on the second argument.
* tree.h (fold_builtin_next_arg): Prototype.
2004-12-04 Alan Modra <>
* Build shared libgcc and shared libunwind in gcc/.
Don't subst shlib_dir for SHLIB_LINK, SHLIBUNWIND_LINK,
* config/i386/t-nwld (SHLIB_NAME): Use shlib_base_name in place of
shlib_dir and shlib_so_name.
* config/mips/t-slibgcc-irix (SHLIB_NAME): Likewise.
* config/t-libunwind-elf (SHLIB_NAME): Likewise.
* config/t-slibgcc-darwin (SHLIB_NAME): Likewise.
* config/t-slibgcc-elf-ver (SHLIB_NAME): Likewise.
* config/t-slibgcc-sld (SHLIB_NAME): Likewise.
(SHLIB_LINK): Don't use shlib_dir when creating symlink.
2004-12-03 Roger Sayle <>
* doc/tm.texi (TARGET_DELEGITIMIZE_ADDRESS): Document target hook.
2004-12-03 Richard Henderson <>
* alias.c (component_uses_parent_alias_set): Rename from
can_address_p. Return bool. Reverse the sense of the result.
Reinstate the check for alias set zero.
(get_alias_set): Update to match.
* alias.h (component_uses_parent_alias_set): Likewise.
* emit-rtl.c (set_mem_attributes_minus_bitpos): Likewise.
* expr.c (expand_assignment): Likewise.
* expr.h: Remove commented out prototypes that were moved to alias.h.
2004-12-03 Richard Henderson <>
* doc/tm.texi (TARGET_BUILD_BUILTIN_VA_LIST): New.
2004-12-04 Alan Modra <>
PR middle end/18718
* sched-rgn.c (schedule_region): Don't assume REG_SAVE_NOTEs are
in pairs.
* sched-ebb.c (schedule_ebb): Likewise.
2004-12-03 Andreas Schwab <>
* (HOSTHOOKS_DEF_H): Define.
(ggc-common.o): Depend on $(HOSTHOOKS_DEF_H).
(host-default.o): Likewise.
2004-12-03 Eric Christopher <>
* config/stormy16/ (pushqi, popqi, pushhi,
pophi): Add number of arguments to name so that the
pattern is recognized as a named pattern.
2004-12-03 Janis Johnson <>
* doc/extend.texi (AltiVec Builtins): Fix info about signedness.
2004-12-03 Andreas Tobler <>
* config/rs6000/rs6000.c (rs6000_override_options): Protect
darwin_one_byte_bool with #if.
2004-12-03 Paolo Bonzini <>
* doc/tm.texi (Misc): Document TARGET_FOLD_BUILTIN.
2004-12-03 H.J. Lu <>
* Put back the default set of EXTRA_MULTILIB_PART.
2004-12-03 Richard Sandiford <>
* Move TL_AC_GCC_VERSION into initialization section.
Set libstdcxx_incdir directly.
* configure: Regenerate.
2004-12-03 Kazu Hirata <>
* tree-ssa-dom.c (record_equivalences_from_phis): Remove an
"if" whose condition is always true.
* cfgrtl.c (rtl_verify_flow_info_1): Use JUMP_P instead of
2004-12-02 Stan Shebs <>
* config/rs6000/rs6000.c (rs6000_override_options): Make 64-bit
Darwin default to one-byte bools.
2004-12-02 Richard Henderson <>
PR 18774
* simplify-rtx.c (simplify_immed_subreg): Fail complex modes.
2004-12-03 Ben Elliston <>
* doc/cfg.texi (Edges): Update. Document the edge_iterator data
type and its methods.
2004-12-02 Richard Henderson <>
* expr.c (write_complex_part): Use simplify_gen_subreg when the
submode is at least as large as a word.
(read_complex_part): Likewise.
2004-12-02 H.J. Lu <>
PR bootstrap/18532
* Build one set of EXTRA_MULTILIB_PARTS for
multilib at a time. Don't build the default set. Don't add
EXTRA_MULTILIB_PARTS to shared libunwind nor libgcc. Remove
filter for shared libunwind and libgcc.
2004-12-02 Roger Sayle <>
PR target/18759
* config/i386/i386.c (override_options): If -fomit-frame-pointer has
already been specified, ignore the -momit-leaf-frame-pointer option.
2004-12-02 H.J. Lu <>
* varasm.c (make_decl_rtl): Add the missing `;'.
2004-12-02 Andrew Pinski <>
* tree.c (is_attribute_p): Split out to ..
(is_attribute_with_length_p): Here. Use IDENTIFIER_LENGTH instead
of strlen and compare the string lengths before calling strcmp.
(lookup_attribute): Call is_attribute_with_length_p instead of
2004-12-02 Devang Patel <>
* config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Add -gfull and -gused.
* config/rs6000/darwin.h (CC1_SPEC): Do not handle -gfull and -gused.
* config/i386/darwin.h (CC1_SPEC): Same.
2004-12-02 Richard Henderson <>
* optabs.c (lowpart_subreg_maybe_copy): New.
(expand_unop, expand_abs_nojump): Use it.
2004-12-02 J"orn Rennecke <>
* (extv, extzv): Add pattern predicate.
2004-12-02 Kazu Hirata <>
* tree-cfg.c (phi_alternatives_equal): Check that PHI_ARG_DEF
is not null.
* tree-cfg.c (phi_alternatives_equal): Check that PHI_ARG_DEF
is not null.
* tree-cfg.c (thread_jumps): Reduce the size of WORKLIST.
2004-12-02 Jeff Law <>
* tree-eh.c: Revert yesterday's change.
2004-12-02 Andrew Pinski <>
* varasm.c (decode_reg_name): Revert change to check for zero
length strings.
(make_decl_rtl): Make sure that we call decode_reg_name only
when needed.
2004-12-02 Dorit Naishlos <>
PR tree-opt/18716
* tree-vectorizer.c (slpeel_make_loop_iterate_ntimes): Properly set
then and else labels.
2004-12-02 Andreas Schwab <>
* (WERROR_FLAGS): Renamed from WERROR.
(STRICT2_WARN): Use $(WERROR_FLAGS) instead of $(WERROR).
* config/i386/x-mingw32: Set WERROR_FLAGS instead of WERROR.
2004-12-02 Richard Sandiford <>
* Use TL_AC_GCC_VERSION to set gcc_version. Remove
now-redundant AC_SUBSTs.
* aclocal.m4: Include ../config/gcc-version.m4.
* configure: Regenerate.
2004-12-02 Alan Modra <>
* config/rs6000/rs6000.c (rs6000_assemble_integer): Put back the
2004-12-01 Roger Sayle <>
PR target/9908
* config/i386/ (*call_value_1, *sibcall_value_1): Correct
Intel assembler syntax by using %A1 instead of %*%1.
2004-12-01 Richard Henderson <>
* expr.c (expand_assignment): Handle CONCAT both as a final
destination and as a middle point.
2004-12-01 Jeff Law <>
* tree-eh.c (save_eptr, save_filt): Now file scoped statics.
(honor_protect_cleanup_actions): Only create save_eptr and
save_filt if they do not already exist.
(lower_eh_constructs): Wipe all knowledge of save_eptr and
save_filt before returning.
2004-12-02 Kazu Hirata <>
* tree-phinodes.c (remove_phi_arg_num): Fix a comment.
2004-12-02 Alan Modra <>
PR target/16952
* config/rs6000/rs6000.c (rs6000_assemble_integer): Replace
* config/rs6000/linux.h (RELOCATABLE_NEEDS_FIXUP): Define in terms
of target_flags_explicit.
* config/rs6000/linux64.h (RELOCATABLE_NEEDS_FIXUP): Ditto for biarch
case. Define as 0 for non-biarch.
2004-12-01 Zack Weinberg <>
* config/rs6000/t-aix43, config/rs6000/t-aix52 (SHLIB_LINK):
Change temporary file tag from a prefix to an infix.
2004-12-02 Andreas Schwab <>
* gcc.c (struct option_map): Add entry for "--pass-exit-codes".
2004-12-01 Andrew Pinski <>
PR tree-opt/18763
PR tree-opt/18746
* tree-ssa-alias.c (init_alias_info): Get statement operands for all
the statements if aliases_computed_p is true.
2004-12-01 Mark Mitchell <>
* (WERROR): New variable.
(STRICT2_WARN): Use it.
* config/i386/x-mingw32 (WERROR): Add -Wno-format.
2004-12-01 Richard Henderson <>
* expr.c (get_inner_reference): Fix thinko in REAL/IMAGPART_EXPR
2004-12-01 Diego Novillo <>
PR tree-optimization/18291
* tree-ssa-copy.c (merge_alias_info): Fix merging of
flow-sensitive alias information. If the new pointer has no
name tag, copy it from the original pointer. Otherwise, make
sure that the pointed-to sets have a common intersection.
2004-12-01 Richard Henderson <>
PR rtl-opt/15289
* emit-rtl.c (gen_complex_constant_part): Remove.
(gen_realpart, gen_imagpart): Remove.
* rtl.h (gen_realpart, gen_imagpart): Remove.
* expmed.c (extract_bit_field): Remove CONCAT hack catering to
* expr.c (write_complex_part, read_complex_part): New.
(emit_move_via_alt_mode, emit_move_via_integer, emit_move_resolve_push,
emit_move_complex_push, emit_move_complex, emit_move_ccmode,
emit_move_multi_word): Split out from ...
(emit_move_insn_1): ... here.
(expand_expr_real_1) <COMPLEX_EXPR>: Use write_complex_part.
<REALPART_EXPR, IMAGPART_EXPR>: Use read_complex_part.
* function.c (assign_parm_setup_reg): Hard-code transformations
instead of using gen_realpart/gen_imagpart.
* expr.c (optimize_bitfield_assignment_op): Split out from ...
(expand_assignment): ... here. Use handled_component_p to gate
get_inner_reference code. Simplify MEM handling. Special case
CONCAT destinations.
* expmed.c (store_bit_field): Use simplify_gen_subreg instead
of gen_rtx_SUBREG directly.
2004-12-01 David Edelsohn <>
Nathan Sidwell <>
PR target/17107
* config/rs6000/ (sge): Enable for non-TARGET_POWER.
(sgt): Same.
(sle): Same.
(slt): Same.
2004-12-01 Nathan Sidwell <>
PR middle-end/18667
* params.c (set_param_value): Add range check.
* params.def: Add min and max values. Reformat long strings.
* params.h (struct param_info): Add min and max fields.
(enum compiler_param): Adjust DEFPARAM.
* toplev.c (lang_independent_params): Likewise.
2004-12-01 Alan Modra <>
PR target/12817
* config/rs6000/rs6000.c (rs6000_emit_prologue): Use r0 for vrsave.
2004-12-01 Joseph S. Myers <>
* doc/standards.texi: Update for C99 TC2.
2004-11-30 Jeff Law <>
* sbitmap.c (sbitmap_any_common_bits): New function.
* sbitmap.h (sbitmap_any_common_bits): Prototype.
* modulo-sched.c (sms_schedule_by_order): Use sbitmap_any_common_bits
No longer allocate/free "psp", "pss" sbitmaps.
* tree-ssa-alias.c (compute_flow_insensitive_aliasing): Similarly for
the "res" sbitmap.
(group_aliases): Similarly.
2004-11-30 Nathan Sidwell <>
* tree-vectorizer.c (vect_analyze_data_refs): Reformat and avoid
uninitialized variable.
2004-11-30 Eric Christopher <>
* fold-const.c (fold_widened_comparison): Make sure that we're
passing an INTEGER_TYPE to int_fits_type_p.
(fold): Clean up comment.
2004-11-30 Zack Weinberg <>
* Correct calculation of libgcc_s_soname and
libunwind_soname. Use $out, not $outS, in commands for
no-shared-library case. Move EXTRA_MULTILIB_PARTS rules above
library build rules, make $libunwind_so and $libgcc_s_so
depend on them in the normal fashion, and filter those objects
out of @shlib_objs@.
2004-11-30 Janis Johnson <>
* config/rs6000/altivec.h (vec_step_help): Support const vector types.
2004-11-30 Andrew Pinski <>
PR tree-opt/18298
* tree-optimize.c (init_tree_optimization_passes): Add a may_alias
pass right after fold builtins.
2004-11-30 Andreas Krebbel <>
* config/s390/s390-modes.def: Added cc modes documentation.
* config/s390/s390.c: (s390_tm_ccmode, s390_select_ccmode,
s390_expand_addcc): Added cc mode comments.
* config/s390/ Removed old cc mode documentation.
2004-11-30 Mark Dettinger <>
* config/s390/s390.c (struct processor_costs): New data type.
(s390_cost, z900_cost, z990_cost): New global variables.
(override_options): Initialize s390_cost.
(s390_rtx_costs): Reimplement.
2004-11-29 Daniel Berlin <>
Fix PR tree-optimization/18673
* tree-ssa-pre.c: Remove splay-tree.h include.
(bitmap_value_replace_in_set): Fix to add if it does not exist.
(find_or_generate_expression): Remove now-wrong condition.
(create_expression_by_pieces): Fix condition and comment reason
for it.
(insert_aux): Fix condition and comment reasons for it.
Factor insertion code from here.
(insert_into_preds_of_block): To here. Fix conditions in factored
function and comment reasons for them.
2004-11-30 Ira Rosen <>
PR tree-opt/18607
* tree-vectorizer.c (vect_analyze_data_refs): Use temporary
variable for data_reference when looking for memtag.
2004-11-30 Jakub Jelinek <>
* c-opts.c (check_deps_environment_vars): If spec != NULL, set
2004-11-30 Dorit Naishlos <>
* tree-vectorizer.c (vect_gen_niters_for_prolog_loop): Use
tree_low_cst instead of TREE_INT_CST_LOW.
2004-11-30 Dorit Naishlos <>
PR target/18173
* tree-vectorizer.c (vect_can_force_dr_alignment_p): Return false for
decls that are assembled before vectorization takes place.
(vect_compute_data_ref_alignment): Set DECL_USER_ALIGN to 1.
2004-11-30 Ulrich Weigand <>
* passes.c (rest_of_handle_old_regalloc): Delete unreachable blocks
if local_alloc modified jumps.
2004-11-30 Alan Modra <>
* varasm.c (default_encode_section_info): Don't set SYMBOL_FLAG_SMALL
on TLS symbols.
* config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Remove TLS
2004-11-30 Zack Weinberg <>
* gthr-gnat.c, gthr-gnat.h, gthr.h, libgcc2.h, unwind-dw2-fde.h
* unwind.h: Surround all visibility pragmas with #ifndef HIDE_EXPORTS.
* Drastic restructure for comprehensibility.
Remove the old hidden-directive hack.
Eliminate support for .txt files in LIB2ADD etc (never used).
Eliminate support for assembly source files in LIB2ADDEH* and
LIBUNWIND (also never used).
Build up dependency lists for libraries incrementally.
If we have SHLIB_LINK, compile each file twice, once for the
static and once for the shared library; also probe for
-fvisibility=hidden in the generated If found,
pass that and -DHIDE_EXPORTS to the compilation of every C
source file going into the static library. If found, generate
hidden-directive lists for every assembly source file going
into the static library, but incorporate them with -include
instead of ld -r.
Write comments into generated to facilitate debugging.
* Pass ASM_HIDDEN_OP to mklibgcc.
* config/t-slibgcc-darwin: Define ASM_HIDDEN_OP.
* config/darwin.h (REAL_LIBGCC_SPEC): Put -lgcc back in
-Zdynamiclib case.
2004-11-29 Richard Henderson <>
* expr.c (get_inner_reference): Handle REAL/IMAGPART_EXPR.
(handled_component_p): Likewise.
* alias.c (can_address_p): Reformat and simplify. Handle
REAL/IMAGPART_EXPR. Do not disable addressability based on
alias set zero.
* fold-const.c (build_fold_addr_expr_with_type): Remove duplicate
* gimplify.c (gimplify_compound_lval): Likewise.
* tree-cfg.c (verify_expr): Likewise.
* tree-gimple.c (is_gimple_addressable, get_base_address): Likewise.
* tree-nested.c (build_addr, convert_nonlocal_reference): Likewise.
(convert_local_reference): Likewise.
* tree-ssa-loop-ivopts.c (prepare_decl_rtl): Likewise.
2004-11-30 Alan Modra <>
* expr.c (emit_group_load_1): Don't die on const_int orig_src.
2004-11-29 John David Anglin <>
PR pch/14940
* config/pa/pa-host.c, config/pa/x-hpux, config/pa/x-linux: New files.
* (hppa*-*-hpux*, hppa*-*-linux): Define out_host_hook_obj
and host_xmake_file using new host configuration files.
2004-11-29 Roger Sayle <>
* reg-stack.c (change_stack): Improve algorithm used to pop regs
off the stack to maximize ffreep usage and reduce fxch count.
2004-11-30 James A. Morrison <>
PR middle-end/18596
* c-decl.c (grokdeclarator): Reset DECL_INTIAL to error_mark_node
on errors.
2004-11-30 Richard Kenner <>
* expr.c (expand_expr_real_1, case NOP_EXPR): Properly handle
REDUCE_BIT_FIELD by applying it to result, not input, of conversion.
2004-11-30 Ben Elliston <>
* (REGS_H): Depend on $(BASIC_BLOCK_H).
2004-11-29 Andrew Pinski <>
PR c/18479
* c-common.c (handle_visibility_attribute): When the type decl
is really a identifier node, warn about being ignored and return.
2004-11-29 Richard Henderson <>
* tree-cfg.c (tree_node_can_be_shared): Fix typo'd error_mark_node.
2004-11-29 Steven Bosscher <>
* cfgcleanup.c (outgoing_edges_match, try_crossjump_to_edge):
Remove CASE_DROPS_THROUGH checks, it is never defined.
* cfglyout.c (fixup_reorder_chain): Likewise.
* cfgrtl.c (rtl_verify_flow_info): Likewise.
* stmt.c (expand_case): Likewise.
* cfgbuild.c (make_edges): Likewise. Also remove force_fallthru,
it is now always 0.
* system.h (CASE_DROPS_THROUGH): Poison.
* doc/md.texi (casesi): Remove documentation of CASE_DROPS_THROUGH.
* doc/tm.texi (casesi): Remove documentation of CASE_DROPS_THROUGH.
* config/v850/v850.h: Remove commented out CASE_DROPS_THROUGH.
2004-11-29 Andrew Pinski <>
PR middle-end/18725
* tree-cfg.c (tree_node_can_be_shared): Error_mark_node can be
shared always.
2004-11-29 Diego Novillo <>
PR tree-optimization/18712
* tree-into-ssa.c (insert_phi_nodes_for): Pass argument
WORK_STACK by reference.
Call VEC_safe_push instead of VEC_quick_push.
Update all users.
2004-11-29 Daniel Jacobowitz <>
PR c/7544
* (c-lang.o): Update dependencies.
* c-lang.c: Include "c-pragma.h".
(finish_file): Call maybe_apply_pending_pragma_weaks.
* c-pragma.c (maybe_apply_pending_pragma_weaks): New function.
* c-pragma.h (maybe_apply_pending_pragma_weaks): New prototype.
2004-11-29 Richard Henderson <>
PR target/17224
* config/ia64/ (sdata_symbolic_operand): Deny offsets
outside the referenced object.
2004-11-29 Kazu Hirata <>
* tree-if-conv.c (replace_phi_with_cond_modify_expr): Use
* tree-ssa-live.c: Likewise.
* tree-ssa-loop-manip.c: Likewise.
* tree-ssa.c: Likewise.
* cfgrtl.c (cfg_layout_redirect_edge_and_branch): Speed up by
simplifying edge manipulation.
* cfgrtl.c (rtl_tidy_fallthru_edge): Speed up by using
* tree-cfg.c (tree_redirect_edge_and_branch): Call find_edge
only when needed.
* cfg.c (flow_obstack): Remove.
(flow_firstobj): Likewise.
(init_flow): Remove all uses of flow_obstack.
2004-11-29 Alan Modra <>
* varasm.c (default_elf_select_section_1): Only pass DECL_P decl
to named_section.
2004-11-29 Nathan Sidwell <>
* opts.c (decode_options): Do not set max-inline-insns-rtl.
(common_handle_option): Likewise.
* params.def (PARAM_MAX_INLINE_INSNS_RTL): Remove.
* params.h (MAX_INLINE_INSNS_RTL): Remove.
* doc/invoke.texi (max-inline-insns-rtl): Remove.
2004-11-29 Alan Modra <>
PR target/9571
* varasm.c (default_elf_select_section_1): Pass decl to named_section.
2004-11-28 Andrew Pinski <>
PR middle-end/18164
* gimplify.c (gimplify_asm_expr): If the length of an output operand
is zero, do not process it, just let it go through.
2004-11-28 Richard Kenner <>
Diego Novillo <>
PR/18662, also backported from tree-cleanup-branch.
* tree-ssa-ccp.c (substitute_and_fold): If replaced anything,
always call maybe_clean_eh_stmt and modify_stmt.
2004-11-28 Richard Kenner <>
* tree-ssa-operands.c (build_ssa_operands, case MODIFY_EXPR):
Ignore a VIEW_CONVERT_EXPR on LHS when deciding if must or may def.
* tree-ssa-ccp.c (visit_assignment): If LHS is a VIEW_CONVERT_EXPR,
add an inverse VIEW_CONVERT_EXPR to const_val.
* tree-nested.c (check_for_nested_with_variably_modified): New.
(create_nesting_tree): Call it.
* tree-ssa-alias.c (compute_points_to_and_addr_escapes): Remove
special code for assigning to non-pointer.
(is_escape_site): If RHS is a conversion between pointer and integer
types, this is an escape site.
* gcse.c (insert_store): Error if try to insert store on abnormal edge.
(store_motion): Don't move store if any edge we'd want to move it
to is abnormal.
* expr.c (expand_expr_real_1, case ARRAY_REF): Properly fold with
non-zero lower bound.
* expr.c (categorize_ctor_elements_1, case STRING_CST): New case.
2004-11-28 Matt Kraai <>
PR diagnostic/17594
* opts.c (find_opt): Require that the input match a switch exactly
or that the switch take a joined option to be interpreted as a
match for another language.
2004-11-28 Andrew Pinski <>
* timevar.def (TV_TREE_REDPHI): New timevar.
* tree-ssa.c (pass_redundant_phi): Use TV_TREE_REDPHI for the tv id.
2004-11-28 Nathanael Nerode <>
PR preprocessor/17651
* c-opts.c (sanitize_cpp_opts): Make flag_no_output imply
* c-ppoutput.c (pp_file_change): Remove now-redundant check of
2004-11-28 Theodore A. Roth <>
* config/avr/avr.c (avr_handle_fndecl_attribute): Generate a
warning if the function name does not begin with "__vector" and the
function has either the 'signal' or 'interrupt' attribute.
2004-11-28 Theodore A. Roth <>
* config/avr/avr.c (avr_mcu_types): Add entries for atmega48,
atmega88, atmega168, attiny13, attiny2313, at90can128, atmega165,
atmega325, atmega3250, atmega645 and atmega6450.
* config/avr/avr.h (LINK_SPEC): Ditto.
(LIB_SPEC): Ditto.
* config/avr/t-avr (MULTILIB_MATCHES): Ditto.
2004-11-28 Nathanael Nerode <>
PR preprocessor/17610
* testsuite/gcc.dg/cpp/empty-include.c: New testcase.
2004-11-28 Jeff Law <>
* tree-ssa-alias.c (count_calls_and_maybe_create_global_var): New.
(pass_maybe_create_global_var): New.
* tree-pass.h (pass_maybe_create_global_var): Declare.
* tree-optimize.c (init_tree_optimization_passes): Link in
2004-11-28 Richard Kenner <>
* tree-inline.c (inline_forbidden_p_1, case RECORD_TYPE): Add comment.
2004-11-28 Ulrich Weigand <>
PR rtl-optimization/18420
* simplify-rtx.c (simplify_gen_subreg): Revert 2004-10-28 change.
2004-11-28 Steven Bosscher <>
John David Anglin <>
* config/vax/vax.h (CASE_DROPS_THROUGH): Don't define.
* config/vax/ (casesi): Emit a test-and-branch to make sure
that the case is in range, to make sure the casesi insn is always
in range and never falls through.
(casesi1): Add comment to explain why casesi never falls through.
Remove the unnamed special case casesi pattern.
2004-11-28 Hans-Peter Nilsson <>
PR target/18331
* config/mmix/ ("*movdicc_real_reversible"): Rename from
"*movdicc_real". Only match reversible comparisons.
("*movdicc_real_nonreversible"): New pattern, split from
"*movdicc_real". Match only nonreversible comparisons. Exclude
reversed alternatives.
("*movdfcc_real_reversible", "*movdfcc_real_nonreversible"):
2004-11-27 Richard Henderson <>
* config/ia64/ Move all define_predicate's ...
* config/ia64/ ... here. New file.
2004-11-27 Per Bothner <>
PR bootstrap/18142
Re-applied following, with two modifications: add a URL for the
fixed cctools; only exit if $build = $target.
2004-10-18 Kelley Cook <>
* (powerpc-*-darwin*): Require assembler to support
.machine directive.
* configure: Regenerate.
2004-11-28 David Edelsohn <>
PR target/16800
* config/rs6000/rs6000.c (rs6000_rtx_costs): Improve accuracy of
EQ, GTU, and LTU costs. Add costs for GT, LT, and UNORDERED.
Distinguish between SImode and DImode CONST_INT.
2004-11-28 Andreas Fischer <>
Alan Modra <>
PR target/16343
* config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Disallow
functions, strings and thread-local vars.
2004-11-28 Alan Modra <>
* config/rs6000/rs6000.h (WORLD_SAVE_P): Define.
* config/rs6000/darwin.h (WORLD_SAVE_P): Define.
* config/rs6000/rs6000.c (compute_save_world_info): Use WORLD_SAVE_P
to allow non-darwin ABIs to optimize away code.
(rs6000_emit_prologue, rs6000_emit_epilogue): Likewise.
2004-11-27 Kazu Hirata <>
* tree.c (operand_equal_for_phi_arg_p): New.
* tree.h: Add a prototype for operand_equal_for_phi_arg_p.
* tree-cfg.c, tree-ssa-dom.c, tree-ssa-phiopt.c, tree-ssa.c:
Replace operand_equal_p with operand_for_phi_arg_p
* bb-reorder.c (find_traces_1_round): Speed up by using
* fold-const.c, config/i386/linux64.h: Fix comment typos.
2004-11-27 John David Anglin <>
PR pch/14940
* config/host-linux.c (TRY_EMPTY_VM_SPACE): Revert 2004-11-22 change.
2004-11-27 Kazu Hirata <>
* config/i386/linux.h: Fix a comment typo.
* doc/extend.texi: Fix a typo.
2004-11-27 Jeff Law <>
* tree-cfg.c (cleanup_tree_cfg): Also return true if blocks
are merged.
2004-11-27 Jakub Jelinek <>
* config/i386/linux64.h (REG_NAME): Define.
2004-11-27 Jakub Jelinek <>
* fold-const.c (extract_muldiv_1) <case ABS_EXPR>: If ctype is
unsigned and type signed, build ABS_EXPR with signed_type (ctype)
and only afterwards convert to ctype.
2004-11-27 Richard Sandiford <>
* config/mips/mips-protos.h (function_arg_boundary): Declare.
* config/mips/mips.h (PARM_BOUNDARY): Simplify definition.
(FUNCTION_ARG_BOUNDARY): Use new function_arg_boundary function.
* config/mips/mips.c (function_arg_boundary): New function.
Impose a maximum alignment of STACK_BOUNDARY.
2004-11-27 Jakub Jelinek <>
PR rtl-optimization/17825
* combine.c (subst): Ignore STRICT_LOW_PART no matter if REG_P (new)
or not.
2004-11-27 Alan Modra <>
PR target/12769
* config/rs6000/rs6000.c (init_cumulative_args): Set call_cookie
from rs6000_default_long_calls for libcalls.
2004-11-26 Richard Kenner <>
* expmed.c (extract_bit_field): When extracting from non-integer mode,
force a SUBREG into a register because we may be taking a further
SUBREG of it.
2004-11-27 Di-an Jan <>
* doc/contrib.texi (Tim Josling): Remove nesting quotation marks.
2004-11-26 Robert Millan <>
Changes for k*bsd-gnu support.
* config/i386/linux.h: Define REG_NAME to allow overriding of
register names in sc structure.
* config/i386/linux-unwind.h: Refer to sc->REG_NAME(reg) instead
of sc->reg.
* config.gcc: Detect x86_64-k*bsd-gnu systems.
2004-11-26 Jeff Law <>
* tree-ssa.c (verify_flow_sensitive_alias_info): Don't
retrieve annotations or pointer info before it's necessary.
Reorder tests for early continue of the loop. Manually CSE
2004-11-26 Eric Botcazou <>
* target.h (struct gcc_target): New field 'dwarf_handle_frame_unspec'.
* target_def.h (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define to 0.
* dwarf2out.c (dwarf2out_frame_debug_expr): Allow REG->REG move
to a fixed reg if the source is the Return Address register.
Implement new Rule 15.
* doc/tm.texi (Frame Layout): Document TARGET_DWARF_HANDLE_FRAME_UNSPEC.
* config/sparc/sparc.c (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define to
(gen_save_register_window): New function.
(emit_stack_pointer_increment): Rename into gen_stack_pointer_inc.
(emit_stack_pointer_decrement): Rename into gen_stack_pointer_dec.
(expand_prologue): Adjust calls to emit_stack_pointer_{in,de}crement.
Set RTX_FRAME_RELATED_P on the appropriate insns and members of insns.
(sparc_asm_function_prologue): Do not emit call frame debugging info.
(emit_and_preserve): Adjust calls to emit_stack_pointer_{in,de}crement.
(sparc_expand_epilogue): Likewise.
(sparc_dwarf_handle_frame_unspec): New function.
* config/sparc/ (save_register_window): Remove.
(save_register_windowdi): Rewrite modelled on the callframe debug info.
(save_register_windowsi): Likewise.
2004-11-26 Alexandre Oliva <>
* config/frv/frv-protos.h: Guard ifcvt functions declarations with
2004-11-26 Alexandre Oliva <>
* config/frv/frv.c (frv_ifcvt_modify_insn): Don't leave alone
scratch insns that set a register live at the join point.
2004-11-26 Kazu Hirata <>
* cse.c, tree-ssa-operands.c: Fix comment typos.
* tree-cfg.c (tree_split_edge): Speed up by using find_edge.
2004-11-26 James A. Morrison <>
PR target/18510
* doc/extend.texi (SPARC VIS Built-in Functions): New section.
2004-11-26 Kazu Hirata <>
* cfgrtl.c (try_redirect_by_replacing_jump): Speed up the
check that tests if all edges go to the same destination.
* bitmap.c (bitmap_find_bit): Speed up by traversing from
head->first if that seems profitable.
2004-11-25 Jeff Law <>
* timevar.def (TV_TREE_LOOP_INIT, TV_TREE_LOOP_FINI): New timevars.
* tree-ssa-loop.c (pass_loop_init): Use TV_TREE_LOOP_INIT.
(pass_loop_done): Use TV_TREE_LOOP_FINI.
2004-11-26 Alan Modra <>
PR rtl-optimization/16356
* config/rs6000/ (floatdisf2_internal2): Rewrite with
separate output register and one less jump. Enable for powerpc64.
(floatdisf2): Adjust for above.
2004-11-25 Bob Wilson <>
* config/xtensa/xtensa.h (STARTFILE_SPEC): Add crt0.
2004-11-25 Andrew Pinski <>
PR middle-end/17957
* tree-complex.c (vector_inner_type): New variable moved from
(vector_last_type): Likewise.
(vector_last_nunits): Likewise.
(build_word_mode_vector_type): Use the new variables.
* (tree-complex.o): Add gt-tree-complex.h $(GGC_H).
(GTFILES): Add tree-complex.c.
(gt-tree-complex.h): New rule, add it to the rest of the gt-* rules.
2004-11-25 Bob Wilson <>
* config/xtensa/xtensa.h (TARGET_CPU_CPP_BUILTINS): Define
2004-11-25 Richard Henderson <>
* dwarf2out.c (dwarf2out_stack_adjust): Add after_p argument. Save
args_size adjustments for calls even with cfa as stack pointer.
Search calls for stack adjustments after the insn is issued.
(dwarf2out_frame_debug): Add after_p argument; pass it on.
* dwarf2out.h (dwarf2out_frame_debug): Update to match.
* final.c (final_start_function, final_scan_insn): Likewise.
2004-11-25 Richard Henderson <>
PR c++/6764
* reload1.c (set_initial_eh_label_offset): New.
(set_initial_label_offsets): Use it.
2004-11-25 Kaz Kojima <>
* config/sh/sh.c (sh_output_mi_thunk): Initialize bitmap obstacks
before calling life_analysis and release them after.
2004-11-25 Kazu Hirata <>
* tree-ssa-forwprop.c (substitute_single_use_vars): Remove
duplicate code.
2004-11-25 Andrew Pinski <>
* bitmap.h (BITMAP_XMALLOC): Use BITMAP_ALLOC and not
2004-11-25 Andrew Pinski <>
parts of PR rtl-opt/18463, rtl-opt/17647
* cse.c (canon_for_address): New function.
(find_best_addr): Call canon_for_address before getting the
address's cost when checking if we should take that address.
2004-11-25 Kazu Hirata <>
* tree-phinodes.c (add_phi_arg): Take "tree" instead of
"tree *" as the first argument.
* tree-flow.h: Update the prototype of add_phi_arg.
* lambda-code.c, tree-cfg.c, tree-into-ssa.c,
tree-ssa-loop-ivopts.c, tree-ssa-loop-manip.c, tree-ssa-pre.c,
tree-ssa-threadupdate.c, tree-ssa.c, tree-tailcall.c,
tree-vectorizer.c: Update all call sites of add_phi_arg.
2004-11-25 Nathan Sidwell <>
* bitmap.c (bitmap_malloc_alloc, bitmap_malloc_free): Remove.
* bitmap.h (bitmap_malloc_alloc, bitmap_malloc_free): Remove.
2004-11-25 Andrew MacLeod <>
PR tree-optimization/18587
* tree-flow-inline.h (mark_call_clobbered, mark_non_addressable): Flag
call clobbered caches as invalid.
* tree-ssa-operands.c (ssa_call_clobbered_cache_valid): New. Flag
indicating whether the call clobbered operand cache is valid.
(ssa_ro_call_cache_valid): New. Flag indicating whether the
pure/const call operand cache is valid.
(clobbered_v_may_defs, clobbered_vuses, ro_call_vuses): New. Cached
list of operands for cached call virtual operands.
(clobbered_aliased_loads, clobbered_aliased_stores,
ro_call_aliased_load): New. flags caching whether alias bits are
to be set in call stmt's.
(fini_ssa_operands): Remove call operand caches if present.
(get_expr_operands, get_asm_expr_operands,
get_indirect_ref_operands): Pass stmt annotation to add_stmt_operand.
(get_call_expr_operands): Add call clobbered variables first.
(add_stmt_operand): Take stmt annotation rather than stmt as a param.
(add_call_clobber_ops, add_call_read_ops): Use the call operand cache
if it is valid, otherise fill the cache.
* tree-ssa-operands.h (ssa_clobbered_cache_valid): Declare extern.
* tree-flow.h (struct var_ann_d): Add in_vuse_list and
in_v_may_def_list bits.
* tree-ssa-operands.c (cleanup_v_may_defs): New. Clear the
in_list bits for the v_may_def elements and empty the operand
build array
(finalize_ssa_vuses): Use cleanup_v_may_defs and remove redundant
VUSES by checking the in_v_may_def_list bit.
(append_v_may_def, append_vuse): Use the in_list bit rather than
scanning the array for duplicates.
2004-11-25 Ulrich Weigand <>
* config/s390/s390.c (s390_short_displacement): UNSPEC_GOTNTPOFF
displacements are not short.
2004-11-25 Ulrich Weigand <>
* config/s390/s390.c (legitimize_pic_address): Use s390_load_address
to load addresses.
2004-11-25 Mark Mitchell <>
PR c++/18001
* c-common.h (lvalue_use): Move here from c-ctypeck.c.
(lvalue_or_else): Declare.
* c-common.c (lvalue_or_else): Move here from c-typeck.c.
* c-typeck.c (lvalue_use): Remove.
(lvalue_or_else): Remove.
PR c++/18556
* toplev.c (check_global_declarations): Set DECL_IGNORED_P on
unemitted variables with static storage duration.
2004-11-25 Gerald Pfeifer <>
* tree-cfg.c (tree_verify_flow_info): Do not terminate error()
message with \n.
2004-11-25 Nathan Sidwell <>
* config/rs6000/ (VIshort): New mode macro.
(altivec_vaddubs, altivec_vadduhs, altivec_vadduws): Replace
with ...
(altivec_vaddu<VI_char>s): ... this.
(altivec_vaddsbs, altivec_vaddshs, altivec_vaddsws): Replace
with ...
(altivec_vadds<VI_char>s): ... this.
(altivec_vsububs, altivec_vsubuhs, altivec_vsubuws): Replace
with ...
(altivec_vsubu<VI_char>s): ... this.
(altivec_vsubsbs, altivec_vsubshs, altivec_vsubsws): Replace
with ...
(altivec_vsubs<VI_char>s): ... this.
(altivec_vavgub, altivec_vavguh, altivec_vavguw): Replace
with ...
(altivec_vavgu<VI_char>): ... this.
(altivec_vavgsb, altivec_vavgsh, altivec_vavgsw): Replace
with ...
(altivec_vavgs<VI_char>): ... this.
(altivec_vmsumubm, altivec_vmsumuhm): Replace with ...
(altivec_vmsumu<VI_char>m): ... this.
(altivec_vmsummbm, altivec_vmsummhm): Replace
with ...
(altivec_vmsumm<VI_char>m): ... this.
(altivec_vandc): Remove.
(*andc<mode>3): Renamed to ...
(andc<mode>3): ... here. Swap operand 1 and 2 numbering.
(altivec_vrlb, altivec_vrlh, altivec_vrlw): Replace
with ...
(altivec_vrl<VI_char>): ... this.
(altivec_vslb, altivec_vslh, altivec_vslw): Replace
with ...
(altivec_vsl<VI_char>): ... this.
(altivec_vsrb, altivec_vsrh, altivec_vsrw): Replace
with ...
(altivec_vsr<VI_char>): ... this.
(altivec_vsrab, altivec_vsrah, altivec_vsraw): Replace
with ...
(altivec_vsra<VI_char>): ... this.
(altivec_vsum4sbs, altivec_vsum4shs): Replace with ...
(altivec_vsum4s<VI_char>s): ... this.
(altivec_vperm_4si, altivec_vperm_8hi, altivec_vperm_16qi): Replace
with ...
(altivec_vperm_<mode>): ... this.
(altivec_vsel_4sf): Rename to ...
(altivec_vsel_v4sf): ... here.
(altivec_vsel_4si, altivec_vsel_8hi, altivec_vsel_16qi): Replace
with ...
(altivec_vsel_<mode>): ... this.
(altivec_vsldoi_4si, altivec_vsldoi_8hi,
altivec_vsldoi_16qi): Rename to ...
(altivec_vsldoi_v4si, altivec_vsldoi_v8hi,
altivec_vsldoi_v16qi): ... here.
(altivec_vsldoi_4sf): Rename to ...
(altivec_vsldoi_v4sf): ... here.
(altivec_predicate_v4si, altivec_predicate_v8hi,
altivec_predicate_v16qi): Replace with ...
(altivec_predicate_<mode>): ... this.
(altivec_lvebx, altivec_lvehx, altivec_lvewx): Replace
with ...
(altivec_lve<VI_char>x): ... this.
(altivec_stvebx, altivec_stvehx, altivec_stvewx): Replace
with ...
(altivec_stve<VI_char>x): ... this.
(absv16qi2, absv8hi2, absv4si2): Replace
with ...
(abs<mode>2): ... this.
(altivec_abss_v16qi, altivec_abss_v8hi, altivec_abss_v4si): Replace
with ...
(altivec_abss_<mode>): ... this.
(vec_realign_load_v16qi, vec_realign_load_v8hi,
vec_realign_load_v4si): Replace with ...
(vec_realign_load_<mode>): ... this.
* config/rs6000/rs6000.c (bdesc_3arg, bdesc_2arg): Update tweaked
insn names.
(rs6000_expand_ternop_builtin): Likewise.
2004-11-25 Andrew Haley <>
* gcc.c (process_command): Don't supply -v to linker.
2004-11-25 Joseph S. Myers <>
* config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Use %qs
instead of `%s' in diagnostic.
2004-11-25 Nathan Sidwell <>
* basic-block.h (OBSTACK_ALLOC_REG_SET): Adjust.
(FREE_REG_SET): Adjust.
* bitmap.c (bitmap_obstack_free): Cope with NULL bitmap.
* bitmap.h (BITMAP_OBSTACK_ALLOC): Rename to ...
(BITMAP_ALLOC): ... here.
(BITMAP_OBSTACK_FREE): Rename to ...
(BITMAP_FREE): Don't check for NULL bitmap here.
* tree-ssa-pre.c (value_insert_into_set_bitmap,
bitmap_set_new): Use new names.
* bt-load.c (migrate_btr_defs): Remove unneeded NULL check.
* df.c (df_free): Likewise.
* ra-build.c (ra_build_free, ra_build_free_all): Likewise.
* tree-ssa-loop-ivopts.c (set_use_iv_cost): Likewise.
* basic-block.h (OBSTACK_ALLOC_REG_SET): Rename to ...
(ALLOC_REG_SET): ... here.
(FREE_REG_SET): Adjust.
* bb-reorder.c (fix_crossing_conditional_branches): Adjust.
* cfglayout.c (cfg_layout_duplicate_bb): Adjust.
* cfgrtl.c (rtl_split_block, rtl_split_edge,
safe_insert_insn_on_edge, cfg_layout_split_edge): Adjust.
* flow.c (update_life_info, calculate_global_regs_live,
allocate_bb_life_data, init_propagate_block_info): Adjust.
* global.c (build_insn_chain): Adjust.
* ifcvt.c (dead_or_predicable): Adjust.
* loop-iv.c (simplify_using_initial_values): Adjust.
* recog.c (peephole2_optimize): Adjust.
* sched-deps.c (init_deps_global): Adjust.
2004-11-25 Ralf Corsepius <>
* config.gcc (avr-*-rtems*): Fix typo.
2004-11-25 J"orn Rennecke <>
* sh.c (sh_output_mi_thunk): Do not call regset_release_memory.
2004-11-24 Jeff Law <>
* tree-ssa-alias.c (compute_flow_insensitive_aliasing): Reduce
the number of queries to random elements in the ai->written_vars
2004-11-24 Roger Sayle <>
* config/i386/i386.c (override_options): Disable x87 fancy math
intrinsics if -mfpmath= doesn't include 387 (default on x86_64).
2004-11-24 Roger Sayle <>
* Tweak test for HAVE_DECL_LDGETNAME to avoid a
system header conflict on AIX 5.2.
* configure: Regenerate.
2004-11-24 Kazu Hirata <>
* tree-outof-ssa.c (coalesce_abnormal_edges): Use e->dest_idx
instead of calling phi_arg_from_edge.
* tree-phinodes.c (remove_phi_args): Replace phi_arg_from_edge
with e->dest_idx.
2004-11-24 Ben Elliston <>
* config/i386/i386.h (ASM_OUTPUT_DWARF_ADDR_CONST): Remove.
* config/i386/i386.c (i386_dwarf_output_addr_const): Likewise.
* config/i386/i386-protos.h (i386_dwarf_output_addr_const):
2004-11-24 Richard Kenner <>
* tree-sra.c (sra_walk_modify_expr): Handle RHS first, then LHS.
* tree-inline.c (copy_body_r): Explicitly copy a constant if the
type will be remapped.
2004-11-24 Steven Bosscher <>
* c-opts.c (c_common_post_options): Don't clear
* dojump.c (clear_pending_stack_adjust): Remove check on
flag_inline_functions, it's always true.
* config/alpha/ (movdi_er_maybe_g): Remove splitter
that can never trigger.
* config/c4x/c4x.h (TARGET_CPU_CPP_BUILTINS): Don't look at
flag_inline_trees, now that flag_inline_functions is never
* config/pdp11/pdp11.h (OPTIMIZATION_OPTIONS): Don't set
flag_inline_functions at optimization levels greater than
or equal to 3. This is already done by default.
2004-11-24 Kazu Hirata <>
* tree-outof-ssa.c (eliminate_build): Use g->e->dest_idx
instead to find the PHI argument. Do not take I as an
(eliminate_phi): Adjust the call to eliminate_build. Do not
take I as an argument.
(rewrite_trees): Adjust the call to eliminate_phi.
2004-11-24 Richard Sandiford <>
* optabs.h (force_expand_binop): Declare.
* optabs.c (force_expand_binop): Export.
* stmt.c (shift_return_value): Delete.
(expand_return): Don't call it.
* expr.h (shift_return_value): Declare.
* calls.c (shift_returned_value): Delete in favor of...
(shift_return_value): ...this new function. Leave the caller to check
for non-BLKmode values passed in the msb of a register. Take said mode
and a shift direction as argument. Operate on the hard function value,
not a pseudo.
(expand_call): Adjust accordingly.
* function.c (expand_function_start): If a non-BLKmode return value
is padded at the last significant end of the return register, use the
return value's natural mode for the DECL_RESULT, not the mode of the
padded register.
(expand_function_end): Shift the same sort of return values left by
the appropriate amount.
2004-11-24 Matt Austern <>
* recog.c (recog_memoized_1): Remove.
* recog.h (recog_memoized_1): Remove declaration.
(recog_memoized): Change from macro to inline function.
2004-11-24 Devang Patel <>
* gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add isysroot.
* config/darwin-c.c (darwin_register_frameworks): Use sysroot.
2004-11-24 Devang Patel <>
* gcc.c (process_command): Supply -v to linker.
2004-11-24 David Edelsohn <>
Paolo Bonzini <>
* config/rs6000/rs6000.c (rs6000_return_in_memory): Allow Altivec
vector modes without ALTIVEC_ABI. Use GCC vector instead of
synthetic vector.
(rs6000_pass_by_reference): Split conditional into pieces. Use
GCC vector instead of synthetic vector.
2004-11-24 Aldy Hernandez <>
* tree.c (recompute_tree_invarant_for_addr_expr): The address of a
thread-local variable is invariant.
2004-11-24 Richard Kenner <>
* tree-pretty-print.c (dump_generic_node, case POINTER_TYPE):
(print_declaration): Print array dimensions like dump_generic_node.
* fold-const.c (operand_equal_p): Remove kludge allowing ARG0 and
ARG1 to be null; instead define OP_SAME and OP_SAME_NULL and use them.
2004-11-24 Nathan Sidwell <>
* bitmap.c (INLINE): Do not define.
(bitmap_elem_to_freelist, bitmap_element_free,
bitmap_element_allocate, bitmap_clear, bitmap_element_zerop,
bitmap_element_link, bitmap_find_bit): Use inline keyword/macro.
2004-11-24 Kazu Hirata <>
* tree-ssa-dom.c (cprop_into_successor_phis): Remove code to
find the index of a PHI argument. Use e->dest_idx instead.
Replace hint with index.
* tree-ssa-dom.c (cprop_into_successor_phis): Replace index
with indx.
2004-11-24 Diego Novillo <>
* tree-ssa-alias.c (merge_pointed_to_info): Fix comment
regarding PT_MALLOC.
2004-11-24 Joseph Myers <>
* config/i386/i386.c (optimization_options): Use
* config/i386/sol2-10.h (SUBTARGET_OPTIMIZATION_OPTIONS): Define.
2004-11-24 Mark Mitchell <>
* config/i386/sol2.h (X86_FILE_START_VERSION_DIRECTIVE):
Define to false.
2004-11-24 Joseph Myers <>
Use amd64 instead of 64.
2004-11-24 Mark Mitchell <>
Joseph Myers <>
* crtstuff.c (IN_LIBGCC2): Define it.
* defaults.h (EH_TABLES_CAN_BE_READ_ONLY): New macro.
* dwarf2out.c (named_section_eh_frame_section): Check
* except.c (default_exception_section): Likewise.
* config/i386/sol2.h (EH_TABLES_CAN_BE_READ_ONLY): Define.
* doc/tm.texi (EH_TABLES_CAN_BE_READ_ONLY): Document.
2004-11-24 Kazu Hirata <>
* tree-ssa-pre.c (phi_translate): Use find_edge to find the
index of a PHI argument.
* tree-ssa-loop-manip.c (lv_adjust_loop_header_phi): Use
find_edge to find the index of a PHI argument.
2004-11-24 Steven Bosscher <>
* expr.c (expand_expr_real_1): Remove cases for EXIT_BLOCK_EXPR
* gimplify.c (gimplify_labeled_block_expr): Remove.
(gimplify_exit_block_expr): Remove.
(gimplify_expr): Don't call them.
* tree-inline.c (copy_body_r): Don't handle EXIT_BLOCK_EXPR
(estimate_num_insns_1): Likewise.
(walk_tree): Likewise.
* tree-pretty-print.c (dump_generic_node): Don't handle
* tree.def (EXIT_BLOCK_EXPR): Moved to java-tree.def.
* tree.h (LABELED_BLOCK_LABEL): Moved to java-tree.h.
2004-11-24 Steven Bosscher <>
* cfgrtl.c (rtl_delete_block): Fix comment.
* emit-rtl.c (remove_unnecessary_notes): Die if we see BLOCK_BEG
or BLOCK_END insn notes.
* jump.c (squeeze_notes): Likewise.
* haifa-sched.c (reemit_notes): Don't "re-emit" EH_REGION_BEG and
EH_REGION_END notes, we never have them to begin with.
* sched-deps.c (sched_analyze_insn): When updating loop notes,
verify that we have indeed only recorded loop notes.
(sched_analyze): Die if we see EH_REGION_BEG or EH_REGION_END notes.
Only record loop notes.
* cfgexpand.c (tree_expand_cfg): Fix comment.
* passes.c (rest_of_compilation): Don't do a second call to
convert_from_eh_region_ranges from here, it's already called
from cfgexpand.c.
* except.c (resolve_fixup_regions): Remove.
(remove_fixup_regions): Remove.
(convert_from_eh_region_ranges_1): Remove.
(convert_from_eh_region_ranges): Remove the case where EH is
not already lowered at the tree level. We always lower there.
2004-11-24 Paolo Bonzini <>
PR c++/16882
* tree.c (make_vector_type): Move qualifiers to the vector type,
use the inner type's main variant and build a main variant for
the vector type if necessary.
(type_hash_eq): Check a vector type's TYPE_VECTOR_SUBPARTS.
2004-11-24 Eric Botcazou <>
* target.h (late_rtl_prologue_epilogue): Remove.
* passes.c (rest_of_handle_prologue_epilogue): Remove and move
remaining bits to...
(rest_of_compilation): Remove call to rest_of_handle_prologue_epilogue.
2004-11-23 Mark Mitchell <>
* hwint.h (HOST_LONG_LONG_FORMAT): New macro. Use it throughout.
* config/i386/xm-mingw32.h (HOST_LONG_LONG_FORMAT): Define.
* doc/hostconfig.texi (HOST_LONG_LONG_FORMAT): Document.
2004-11-24 Daniel Jacobowitz <>
* config/i386/i386.c (override_options): Move
2004-11-23 Richard Henderson <>
* rtl.h (validate_subreg): Declare.
* emit-rtl.c (validate_subreg): New.
(gen_rtx_SUBREG): Use it.
* simplify-rtx.c (simplify_subreg): Likewise.
(simplify_gen_subreg): Likewise. Remove duplicate asserts.
* expr.c (emit_move_insn_1): Tidy complex move code. Use memory
fallback whenever gen_realpart/gen_imagpart would not be able to
create SUBREGs.
2004-11-23 Richard Henderson <>
* expmed.c (extract_bit_field): Use simplify_gen_subreg instead of
hard-coding avoiding calls to gen_rtx_SUBREG. Split complex return
modes to CONCAT.
2004-11-23 Diego Novillo <>
PR tree-optimization/18618
* tree-into-ssa.c (DEF_VEC_MALLOC_P(basic_block)): Declare.
(insert_phi_nodes_for): Change third argument to VEC(basic_block).
* tree-ssa-dom.c (avail_exprs_stack): Change type to VEC(tree_on_heap).
Update all users.
(stmts_to_rescan): Likewise.
(const_and_copies_stack): Likewise.
(nonzero_vars_stack): Likewise.
(vrp_variables_stack): Likewise.
2004-11-23 Richard Henderson <>
* cse.c (record_jump_cond_subreg): New.
(record_jump_cond): Use it instead of gen_lowpart.
2004-11-23 Daniel Jacobowitz <>
Joseph Myers <>
* config/sol2-c.c (solaris_register_pragmas): Use
* config/sol2.h (HANDLE_PRAGMA_PACK_WITH_EXPANSION): Define.
* c-pragma.c (c_register_pragma): Update call to
(c_register_pragma_with_expansion): New function.
* c-pragma.h (c_register_pragma_with_expansion): New prototype.
* doc/extend.texi (Solaris Pragmas): Mention macro expansion for
#pragma align.
* doc/tm.texi (c_register_pragma_with_expansion,
2004-11-23 Richard Henderson <>
* combine.c (gen_lowpart_for_combine): Factor out mode of x as well
as mode sizes into local temporaries. Unify failure path.
2004-11-23 Richard Henderson <>
* emit-rtl.c, rtl.h (subreg_hard_regno): Remove.
* caller-save.c (mark_set_regs): Use subreg_regno instead.
* final.c (alter_subreg): Likewise.
* local-alloc.c (reg_is_born): Likewise.
2004-11-23 Richard Henderson <>
* simplify-rtx.c (simplify_subreg): Use subreg_regno_offset directly
instead of using a SUBREG temporary.
2004-11-23 Kazu Hirata <>
* tree-cfg.c (tree_forwarder_block_p): Speed up by reordering
two checks.
2004-11-23 Zack Weinberg <>
* function.h (struct function): Remove calls_longjmp.
(current_function_calls_longjmp): Delete.
* tree.h (ECF_LONGJMP): Delete.
(ECF_LIBCALL_BLOCK): Everybody slide down one.
* builtins.c (expand_builtin_longjmp): Don't set
* calls.c (special_function_p): Mark longjmp and siglongjmp
(emit_call_1, expand_call, emit_library_call_value_1):
Don't check for ECF_LONGJMP.
* tree-cfg.c (make_exit_edges, is_ctrl_altering_stmt)
(need_fake_edge_p): Likewise.
* config/avr/avr.h, config/ip2k/ip2k.h: Don't define NON_SAVING_SETJMP.
* system.h: Poison NON_SAVING_SETJMP.
* function.c (use_register_for_decl)
* gcse.c (compute_hash_table_work, compute_store_table)
* postreload-gcse.c (record_opr_changes)
* reload.c (find_equiv_reg)
* reload1.c (reload)
* config/i386/i386.c (ix86_can_use_return_insn_p):
Remove code conditional on NON_SAVING_SETJMP.
* doc/tm.texi: Delete documentation of NON_SAVING_SETJMP.
* config/i386/sysv3.h: Delete file.
* config/i386/i386.c (ix86_svr3_asm_out_constructor): Delete.
2004-11-23 Dorit Naishlos <>
* tree-vectorizer.c (vect_analyze_operations): Don't vectorize if
the vectorization factor is greater than the iteration count.
(vect_gen_niters_for_prolog_loop): No need to calculate min if the
iteration count is known.
(vect_build_symbol_bound): Removed. Its functionality moved to
(vect_generate_tmps_on_preheader): Moved content of
vect_build_symbol_bound here instead of calling it. Changed some
variables names.
(vect_build_loop_niters): We don't expect a new_bb to be generated -
use gcc_assert.
(vect_gen_niters_for_prolog_loop): Likewise.
(vect_gen_niters_for_prolog_loo): Likewise.
(slpeel_make_loop_iterate_ntimes): Use buildN instead of build.
(slpeel_add_loop_guard): Likewise.
(slpeel_tree_peel_loop_to_edge): Likewise.
(vect_do_peeling_for_alignment): Likewise.
(vect_get_first_index): Missing space.
2004-11-23 Ulrich Weigand <>
* config/s390/ ("*iordi3"): Mark commutative.
("*iorsi3_zarch", "*iorsi3_esa"): Likewise.
2004-11-23 Kazu Hirata <>
* tree-phinode.c (resize_phi_node): Abort when LEN is strictly
greater than PHI_ARG_CAPACITY.
(reserve_phi_args_for_new_edge): Initialize the new PHI
argument to NULL_TREE. Increment PHI_NUM_ARGS.
(add_phi_arg): Add a PHI argument to the slot given by
(remove_phi_arg_num): Do not write to PHI_ARG_EDGE.
* tree-flow-inline (phi_arg_from_edge): Return E->dest_idx.
* tree-ssa.c (ssa_redirect_edge): Check for a missing PHI
argument by looking at PHI_ARG_DEF.
(verify_phi_args): Check for a missing PHI argument. Remove
the check for duplicate PHI arguments.
* tree.h (PHI_ARG_EDGE): Redefine in terms of EDGE_PRED.
(phi_arg_d): Remove e.
* tree-cfg.c (tree_try_redirect_by_replacing_jump): Speed up
by restricting to the case with two outgoing edges.
2004-11-23 Andreas Krebbel <>
* config/s390/s390.c (s390_backchain_string): Removed.
(s390_return_addr_rtx, s390_back_chain_rtx, s390_frame_info)
(s390_emit_prologue, s390_va_start, s390_gimplify_va_arg):
TARGET_KERNEL_BACKCHAIN to reflect the new options.
* config/s390/s390.h (MASK_BACKCHAIN, MASK_PACKED_STACK): New macros.
(TARGET_BACKCHAIN): Former triple state option change to a target flag.
(TARGET_SWITCHES): New switches added.
(TARGET_OPTIONS): "backchain", "no-backchain" and "kernel-backchain"
* config/s390/ ("allocate_stack", "restore_stack_block")
("save_stack_nonlocal", "restore_stack_nonlocal"): Modified to reflect
the change in target switch semantics.
* config/s390/tpf.h (TARGET_DEFAULT_BACKCHAIN): Removed.
* doc/invoke.texi: Added documentation for the new/changed options.
2004-11-23 Uros Bizjak <>
PR rtl-optimization/18614
* simplify-rtx.c (simplify_binary_operation): Do not
simplify inner elements of constant arguments of
2004-11-23 Eric Botcazou <>
* gthr-solaris.h (__gthread_recursive_mutex_init_function): Use
0 instead of NULL.
2004-11-23 Kazu Hirata <>
* tree-phinode.c (make_phi_node): Use a new variable,
capacity, to receive the return value of ideal_phi_node_len.
2004-11-23 Eric Botcazou <>
* gthr-solaris.h (__gthread_recursive_mutex_t): New type.
(__gthread_key_create): Properly cast -1.
(__gthread_recursive_mutex_init_function): New function.
(__gthread_recursive_mutex_lock): Rewrite.
(__gthread_recursive_mutex_trylock): Likewise.
(__gthread_recursive_mutex_unlock): Likewise.
2004-11-23 Ralf Corsepius <>
* config/c4x/t-rtems: New.
* config.gcc: Reflect having added c4x/t-rtems.
2004-11-23 Dorit Naishlos <>
PR tree-opt/18403
PR tree-opt/18505
* tree-vectorizer.c (vect_create_data_ref_ptr): Use
lang_hooks.types.type_for_size instead of integer_type_node for the
type of ptr_update.
2004-11-23 Ralf Corsepius <>
* config.gcc (h8300-*-rtems*): Use h8300/t-rtems.
2004-11-23 Ralf Corsepius <>
* config/arm/t-rtems: New.
* config.gcc: Reflect having added arm/t-rtems.
2004-11-23 Kazu Hirata <>
* tree-cfg.c (tree_execute_on_growing_pred): New.
(tree_cfg_hooks): Add tree_execute_on_growing_pred.
* tree-flow.h: Add a prototype for
* tree-phinodes.c (reserve_phi_args_for_new_edge): New.
(add_phi_arg): Don't resize a PHI array.
2004-11-23 Ralf Corsepius <>
* config.gcc: Add avr-*-rtems*.
* config/avr/t-rtems: New.
* config/avr/rtems.h: New.
2004-11-22 Daniel Berlin <>
* df.c (dataflow_set_a_op_b): Remove reslt parameter, since it's
always the same as op1. Use bitmap_ior_into and bitmap_and_into.
Add comment to function.
2004-11-22 John David Anglin <>
PR pch/14940
* config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __hppa__.
PR rtl-optimization/14838
* emit-rtl.c (get_first_nonnote_insn): Don't assume first insn is a
(get_last_nonnote_insn): Don't assume last insn is a note.
2004-11-22 Roger Sayle <>
* fold-const.c (nondestructive_fold_binary_to_constant): Rename
to fold_binary_to_constant.
(nondestructive_fold_unary_to_constant): Likewise, rename to
(fold_relational_hi_lo): Update call to fold_binary_to_constant.
* tree.h (nondestructive_fold_binary_to_constant): Update prototype.
(nondestructive_fold_unary_to_constant): Likewise.
* tree-ssa-ccp.c (ccp_fold): Update calls to fold_unary_to_constant
and fold_binary_to_constant.
* tree-ssa-loop-niter.c (EXEC_BINARY, EXEC_UNARY): Delete macros.
(inverse, number_of_iterations_cond): Replace uses of EXEC_BINARY
and EXEC_UNARY with calls to fold_*nary_to_constant.
* tree-ssa-loop-ivopts.c (EXEC_BINARY, EXEC_UNARY): Delete macros.
(idx_find_step): Replace uses of EXEC_BINARY with calls to
2004-11-22 Nick Clifton <>
* sbitmap.c (sbitmap_union_of_preds): Remove redundant
initialisation of 'e'.
2004-11-22 Roger Sayle <>
* config/i386/i386.h (TARGET_USE_FANCY_MATH_387): New macro.
* config/i386/i386.c (override_options): Set MASK_NO_FANCY_MATH_387
automatically for targets without TARGET_80387.
* config/i386/ (sqrtsf2, sqrtsf2_1, sqrtsf2_i387, sqrtdf2,
sqrtdf2_1, sqrtdf2_i387, *sqrtextendsfdf2, sqrtxf2,
*sqrtextenddfxf2, *sqrtextendsfxf2, fpremxf4, fmodsf3, fmoddf3,
fmodxf3, fprem1xf4, dremsf3, dremdf3, dremxf3, *sindf2, *sinsf2,
*sinextendsfdf2, *sinxf2, *cosdf2, *cossf2, *cosextendsfdf2,
*cosxf2, sincosdf3, sincossf3, *sincosextendsfdf3, sincosxf3,
*tandf3_1, tandf2, *tansf3_1, tansf2, *tanxf3_1, tanxf2,
atan2df3_1, atan2df3, atandf2, atan2sf3_1, atan2sf3, atansf2,
atan2xf3_1, atan2xf3, atanxf2, asindf2, asinsf2, asinxf2,
acosdf2, acossf2, acosxf2, fyl2x_xf3, logsf2, logdf2, logxf2,
log10sf2, log10df2, log10xf2, log2sf2, log2df2, log2xf2,
fyl2xp1_xf3, log1psf2, log1pdf2, log1pxf2, *fxtractxf3, logbsf2,
logbdf2, logbxf2, ilogbsi2, *f2xm1xf2, *fscalexf4, expsf2,
expdf2, expxf2, exp10sf2, exp10df2, exp10xf2, exp2sf2, exp2df2,
exp2xf2, expm1df2, expm1sf2, expm1xf2, frndintxf2, rintdf2,
rintsf2, rintxf2, frndintxf2_floor, floordf2, floorsf2,
floorxf2, frndintxf2_ceil, ceildf2, ceilsf2, ceilxf2,
frndintxf2_trunc, btruncdf2, btruncsf2, btruncxf2,
frndintxf2_mask_pm, nearbyintdf2, nearbyintsf2, nearbyintxf2):
Simplify conditionals using TARGET_USE_FANCY_MATH_387.
2004-11-22 Dale Johannesen <>
* config/darwin.h (JUMP_TABLES_IN_TEXT_SECTION): Conditionalize
properly and comment.
2004-11-22 James A. Morrison <
* config/sparc/sparc.c: Include insn-codes.h and langhooks.h.
(sparc_init_builtins): New function.
(sparc_init_vis_builtins): Create builtin functions for VIS
(sparc_expand_builtin): Expand builtin functions for VIS instructions.
(TARGET_INIT_BUILTINS): Define to sparc_init_builtins.
(TARGET_EXPAND_BUILTIN): Define to sparc_expand_builtin.
(def_builtin): New macro for creating builtin functions.
* config/sparc/ (P): New mode macro for pointer types.
(fpack16_vis, fpackfix_vis, fpack32_vis, fexpand_vis, fpmerge_vis,
fmul8x16_vis, fmul8x16au_vis, fmul8x16al_vis, fmul8sux16_vis,
fmul8ulx16_vis, fmuld8sux16_vis, fmuld8ulx16_vis, pdist_vis,
faligndata<V64:mode>_vis, alignaddr<P:mode>_vis): New patterns.
2004-11-22 Devang Patel <>
* tree-if-conv.c (clean_predicate_lists): Clean all basic blocks.
2004-11-22 Devang Patel <>
* tree-if-conv.c (if_convertable_phi_p): Rename to ...
(if_convertible_phi_p): ... new name.
(if_convertable_modify_expr_p): Rename to ...
(if_convertible_modify_expr_p): ... new name.
(if_convertable_stmt_p): Rename to ...
(if_convertible_stmt_p): ... new name.
(if_convertable_bb_p): Rename to ...
(if_convertible_bb_p): ... new name.
(if_convertable_loop_p): Rename to ...
(if_convertible_loop_p): ... new name.
2004-11-22 Eric Botcazou <>
PR target/18444
* (threading): Accept 'posix95'.
* configure: Regenerate.
* config.gcc (i[34567]86-*-solaris2*): On Solaris up to 2.6,
include sol26.h and default to posix95 threads if have_pthread_h.
(sparc-*-solaris2*): Likewise.
* gthr.h: Include gthr-posix95.h if _PTHREADS95 is defined.
* gthr-posix95.h: New file.
* config/sol26.h: New file.
* doc/install.texi (--enable-threads): Document 'posix95'.
2004-11-23 Ben Elliston <>
* pointer-set.h (pointer_set_contains): Remove.
* pointer-set.c (pointer_set_contains): Likewise.
2004-11-22 Dale Johannesen <>
* calls.c (expand_call): Do not call preserve_temp_slots.
2004-11-22 Kazu Hirata <>
* tree-flow.h: Remove the prototype for remove_phi_arg.
Add a prototype for remove_phi_args.
* tree-phinodes.c (remove_phi_arg): Remove.
(remove_phi_args): New.
* tree-ssa.c (ssa_remove_edge): Call remove_phi_args instead
of remove_phi_arg.
* cfg.c (unchecked_make_edge): Call execute_on_growing_pred
after making an edge.
(remove_edge): Call execute_on_shrinking_pred before removing
an edge.
(redirect_edge_succ): Call execute_on_growing_pred and
* cfghooks.c (execute_on_growing_pred): New.
(execute_on_shrinking_pred): Likewise.
* cfghooks.h (cfg_hooks): Add execute_on_growing_pred and
Add prototypes for execute_on_growing_pred and
* cfgrtl.c (rtl_cfg_hooks): Add NULL hooks to
execute_on_growing_pred and execute_on_shrinking_pred.
(cfg_layout_rtl_cfg_hook): Likewise.
* tree-cfg.c (tree_cfg_hooks): Likewise.
* tree-cfg.c (tree_execute_on_shrinking_pred): New.
(tree_cfg_hooks): Use it.
* tree-ssa.c (ssa_remove_edge): Don't call remove_phi_args.
(ssa_redirect_edge): Don't call remove_phi_arg_num.
* tree-phinodes.c (remove_phi_arg_num): Make it static.
* tree-flow.h: Remove the corresponding prototype.
* tree-ssa.c (ssa_remove_edge): Remove.
* tree-flow.h: Remove the corresponding prototype.
* tree-cfg.c: Replace ssa_remove_edge with remove_edge.
* basic-block.h: Likewise.
* tree-if-conv.c: Likewise.
* tree-ssa-threadupdate.c: Likewise.
2004-11-23 Ben Elliston <>
* doc/cfg.texi (Maintaining the CFG): Use @ftable instead of
@table to list the BSI methods. Use individual @findex directives
instead of one with a comma-separated list of index entries.
2004-11-22 Zdenek Dvorak <>
PR tree-optimization/18529
* fold-const.c (fold_to_nonsharp_ineq_using_bound): New function.
(simple_operand_p): Use STRIP_NOPS. Consider SSA names simple.
(fold): Call fold_to_nonsharp_ineq_using_bound.
* tree-ssa-loop-niter.c (simplify_replace_tree): New function.
(number_of_iterations_cond): Fold the expressions before futher
(tree_simplify_using_condition): Handle case when cond or expr is
an EQ_EXPR specially.
2004-11-22 Daniel Berlin <>
* tree-ssa.c (verify_ssa): SSA_OP_ALL_USES should be
SSA_OP_ALL_USES | SSA_OP_ALL_KILLS for verification purposes.
2004-11-22 David Edelsohn <>
Fariborz Jahanian <>
* config/rs6000/rs6000.c (rs6000_return_in_memory): Test
(function_arg_boundary): Align 8 to 16 byte vectors like SPE.
Align 16 byte and larger vectors like Altivec.
(function_arg_advance): Pass any 16 byte vector like Altivec vector.
(function_arg): Same.
(rs6000_pass_by_references): Test TARGET_ALTIVEC_ABI.
2004-11-22 Andrew Pinski <>
PR tree-opt/18572
* tree-sra.c (scalarize_init): Unshare the rhs before gimplifying
2004-11-22 Richard Henderson <>
* function.c (assign_parm_setup_block): Revert 11-13 change to
forcably re-mode a (possibly BLKmode) hard register.
2004-11-22 Eric Botcazou <>
* config/sparc/sparc.c (mem_min_alignment): Check MEM_ALIGN.
2004-11-22 David Edelsohn <>
* config/rs6000/ Remove delay between dispatch and issue
associated with dispatch group slots 3 and 4.
* config/rs6000/ Same.
2004-11-21 Jeff Law <>
* cfg.c (cached_make_edge): Use find_edge rather than an inlined
* cfgbuild.c (make_edges): Likewise.
* cfghooks.c (can_duplicate_block_p): Likewise.
* cfgloop.c (loop_latch_edge): Likewise.
* cfgloopmanip.c (force_single_succ_latches): Likewise.
* cfgrtl.c (rtl_flow_call_edges_add): Likewise.
* predict.c (predict_loops, propagate_freq): Likewise.
* tracer.c (tail_duplicate): Likewise.
* tree-cfg.c (disband_implicit_edges): Likewise.
(tree_forwarder_block_p, tree_flow_call_edges_add): Likewise.
2004-11-22 Nick Clifton <>
* sbitmap.c (sbitmap_union_of_preds): Remove redundant
initialisation of 'e'.
2004-11-22 Kazu Hirata <>
PR rtl-optimization/18599
* regrename.c (copyprop_hardreg_forward): Speed up by putting
BB_VISITED flags on basic blocks as we process them.
2004-11-22 Nathan Sidwell <>
PR target/18531
* config/rs6000/ (VI_char): New mode attribute.
(addv16qi3, addv8hi3, addv4ai3): Replace with ...
(add<mode>3): ... this.
(subv16qi3, subv8hi3, subv4ai3): Replace with ...
(sub<mode>3): ... this.
(smaxv16qi3, smaxv8hi3, smaxv4ai3): Replace with ...
(smax<mode>3): ... this.
(sminv16qi3, sminv8hi3, sminv4ai3): Replace with ...
(smin<mode>3): ... this.
(umaxv16qi3, umaxv8hi3, umaxv4ai3): Replace with ...
(umax<mode>3): ... this.
(uminv16qi3, uminv8hi3, uminv4ai3): Replace with ...
(umin<mode>3): ... this.
(andv16qi3, andv8hi3, andv4ai3): Replace with ...
(and<mode>3): ... this.
(iorv16qi3, iorv8hi3, iorv4ai3): Replace with ...
(ior<mode>3): ... this.
(xorv16qi3, xorv8hi3, xorv4ai3): Replace with ...
(xor<mode>3): ... this.
(andv16qi3, andv8hi3, andv4ai3): Replace with ...
(and<mode>3): ... this.
(iorv16qi3, iorv8hi3, iorv4ai3): Replace with ...
(ior<mode>3): ... this.
(altivec_vnor): Replace with ...
(altivec_nor<mode>): ... this.
(one_cmplv16qi2, one_cmplv8hi2, one_complv4ai2): Replace with ...
(one_cmpl<mode>2): ... this.
(altivec_vandc): New expander.
(*andc<mode>3): New insn.
* config/rs6000/rs6000.c (bdesc_2arg): Adjust for new insn names.
2004-11-22 Dorit Naishlos <>
PR tree-opt/18536
* tree-vectorizer.c (make_loop_iterate_ntimes): Use type of niters when
creating iv instead of integer_type.
(vect_build_loop_niters): Remove redundant code.
(vect_transform_loop_bound): Removed (duplicates functionality of
(vect_gen_niters_for_prolog_loop): Add documentation. Call
lang_hooks.types.type_for_size to create a type of the required size.
Use that type instead of integer_type. Remove redundant code.
(vect_update_niters_after_peeling): Use type of niters instead of
(vect_transform_loop): Unify handling of known and unknown loop bound
cases. Call make_loop_iterate_ntimes instead of
2004-11-22 Andrew Pinski <>
PR target/18217
* config/rs6000/t-darwin (LIB2FUNCS_EXTRA): Move darwin-fallback.c to
(LIB2ADDEH): Here.
2004-11-22 Dorit Naishlos <>
PR tree-opt/18544
* tree-vectorizer.c (vect_analyze_data_refs): Fail if memtag not found.
2004-11-22 Kazuhiro Inaoka <>
* config.gcc: Use t-slibgcc-elf to build on
* config/m32r/t-linux (SHLIB_MAPFILES): Override to use
* config/m32r/libgcc-glibc.ver: Add New file.
2004-11-22 Nathan Sidwell <>
* bitmap.h (struct bitmap_obstack): New obstack type.
(struct bitmap_head_def): Replace using_obstack with obstack
(bitmap_default_obstack): New.
(bitmap_initialize): Make inline, does not do allocation.
(bitmap_release_memory): Remove.
(bitmap_obstack_initialize, bitmap_obstack_release): Declare.
(bitmap_obstack_alloc, bitmap_malloc_alloc, bitmap_gc_alloc,
bitmap_obstack_free, bitmap_malloc_free): Declare.
(BITMAP_FREE): Replace with ...
* bitmap.c (bitmap_obstack, bitmap_obstack_init, bitmap_free: Remove.
(bitmap_default_obstack): New.
(bitmap_elem_to_freelist): Adjust.
(bitmap_element_allocate): Adjust. Break initialization into ...
(bitmap_obstack_initialize): ... here.
(bitmap_release_memory): Replace with ...
(bitmap_obstack_release): ... this.
(bitmap_obstack_alloc, bitmap_malloc_alloc, bitmap_gc_alloc,
bitmap_obstack_free, bitmap_malloc_free): New.
(bitmap_ior_and_compl, bitmap_ior_and_compl_into): Use
(bitmap_initialize): Move to bitmap.h.
* gengtype.c (open_base_files): Add obstack.h to ifiles.
* (BASIC_BLOCK_H, REGS_H): Add obstack.h.
* basic-block.h (INIT_REG_SET): Allocate from reg_obstack.
(flow_obstack): Do not declare.
(reg_obstack): Declare.
* regs.h: Include obstack.h.
* tree-optimize.c (tree_rest_of_compilation): Initialize and
release bitmap obstack here.
* bb-reorder.c: #include regs, not basic-block.
(fix_crossing_conditional_branches): Allocate regsets from
* bt-load.c: Do not inlude bitmap.h, sbitmap.h, basic-block.h or
* caller-save.c: Include regs.h earlier.
* cfg.c: Do not include basic-block.h or obstack.h.
(reg_obstack): Define.
* cfganal.c: Include obstack.h
* cfgcleanyp.c: Do not include basic-block.h. Include regs.h
* cfglayout.c: Do not include obstack.h.
(flow_obstack): Remove declaration.
(cfg_layout_duplicate_bb): Use reg_obstack.
* cfgloop.c, cfgloopanal.c, cfgloopmanip.c: Include obstack.h.
* cfgrtl.c (rtl_split_block): Use reg_obstack.
(force_nonfallthru_and_redirect, rtl_split_edge): Likewise.
(safe_insert_insn_on_edge): Use OBSTACK_ALLOC_REG_SET, adjust.
(cfg_layout_split_edge): Use reg_obstack.
* cse.c: Include regs.h earlier.
* ddg.c: Do not include basic-block.h.
* dominance.c: Inlude obstack.h.
* flow.c (update_life_info): Use OBSTACK_ALLOC_REG_SET, adjust.
(calculate_global_regs_live): Likewise.
(allocate_bb_life_data): Use reg_obstack.
(init_propagate_block_info): Use OBSTACK_ALLOC_REGSET.
* global.c: Do not include basic-block.h.
(build_insn_chain): Use OBSTACK_ALLOC_REG_SET, adjust.
* graph.c: Include obstack.h.
* haifa-sched.c: Do not include basic-block.h.
* ifcvt.c: Use OBSTACK_ALLOC_REG_SET, adjust.
* local-alloc.c: Do not include basic-block.h.
* loop-init.c, loop-invariant.c: Include obstack.h.
* loop-iv.c: Likewise.
(simplify_using_initial_values): Use OBSTACK_ALLOC_REG_SET,
* loop-unroll.c, loop-unswitch.c: Inlude obstack.h.
* modulo-sched.c: Do not include basic-block.h.
* passes.c (rest_of_handle_final): Do not call
* ra-debug.c: Include regs.h earlier. Do not include
* recog.c (peephole2_optimize): Use OBSTACK_ALLOC_REG_SET, adjust.
* regclass.c (init_reg_sets): Do not call INIT_ONCE_REG_SET.
(allocate_reg_info): Do not call MAX_REGNO_REG_SET.
(regset_release_memory): Remove.
* resource.c: Do not include basic-block.h.
* rtlanal.c: Do not include basic-block.h.
* sbitmap.c: Include obstack.h.
* sched-deps.c: Do not include basic-block.h.
(reg_pending_sets_head, reg_pending_clobbers_head,
reg_pending_uses_head): Remove.
(init_deps_global): Use OBSTACK_ALLOC_REG_SET.
* sched-ebb.c: Do not include basic-block.h.
* sched-rgn.c: Likewise.
* tree-if-conv.c (get_loop_body_in_if_conv_order): Use
* tree-outof-ssa.c (perform_edge_inserts): Use BITMAP_XFREE.
* tree-sra.c (decide_instantiations): Adjust bitmap
* tree-ssa-dce.c: Include obstack.h.
* tree-ssa-pre.c (grand_bitmap_obstack): Make a bitmap_obstack.
(value_insert_into_set_bitmap): Remove useless bitmap_clear.
(bitmap_set_new): Likewise.
(init_pre): Initialize bitmap obstack.
(fini_pre): Release bitmap obstack.