blob: e76781bbd9d64855cd48a830f8cd84a4acfdf90d [file] [log] [blame]
2007-12-31 John David Anglin <>
PR driver/33772
* collect2.c (SHLIB_SUFFIX): Define if not defined.
(write_c_file_stat): Use SHLIB_SUFFIX.
* som.h (SHLIB_SUFFIX): Define.
* doc/tm.texi (SHLIB_SUFFIX): Document.
2007-12-29 Uros Bizjak <>
* config/i386/ ("*divv4sf3"): Rename to "sse_divv4sf3".
("*sse_rsqrtv4sf2"): Export.
("*sse_sqrtv4sf2"): Ditto.
* config/i386/i386.c (enum ix86_builtins) [IX86_BUILTIN_RSQRTPS_NR,
IX86_BUILTIN_SQRTPS_NR]: New constants.
(struct builtin_description) [IX86_BUILTIN_DIVPS]: Use
[IX86_BUILTIN_SQRTPS]: Use CODE_FOR_sse_sqrtv4sf2.
(ix86_init_mmx_sse_builtins): Initialize __builtin_ia32_rsqrtps_nr and
(ix86_builtin_vectorized_function): Convert BUILT_IN_SQRTF to
(ix86_builtin_reciprocal): Convert IX86_BUILTIN_SQRTPS_NR to
2007-12-27 Brian Dessent <>
* doc/invoke.texi (Optimize Options): Add missing opindex for
2007-12-27 Dorit Nuzman <>
PR tree-optimization/34591
* tree-vect-trasnform.c (vect_estimate_min_profitable_iters): Skip
stmts (including reduction stmts) that are not live.
2007-12-27 Jakub Jelinek <>
PR target/34281
* config/arm/arm.c (arm_setup_incoming_varargs): If last named
argument needs double word alignment and cum->nregs is odd, account
for the inserted padding.
PR debug/34535
* tree-mudflap.c (mf_make_builtin): Make decl artificial
and don't emit debug info for it.
2007-12-26 Anatoly Sokolov <>
* config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Move AT90USB82
and AT90USB162 devices from 'avr5' to 'avr35' architecture.
(ASM_SPEC): Add 'avr35' architecture.
* config/avr/avr.c (avr_mcu_types): Move AT90USB82 and AT90USB162
devices from 'avr5' to 'avr35' architecture.
(avr_arch_types): Add "avr23" entries.
(avr_arch): Add 'ARCH_AVR35'.
* config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add 'avr35'.
(MULTILIB_MATCHES): Move AT90USB82 and AT90USB162 devices from 'avr5'
to 'avr35' architecture.
2007-12-22 David Daney <>
* doc/install.texi (disable-libgcj-bc): Document new option.
2007-12-21 John David Anglin <>
* config/pa/pa.c (hppa_legitimize_address): Use INT14_OK_STRICT in
mask selection.
PR target/34525
* pa.c (legitimize_pic_address): Emit insn to load function label
forced to memory.
2007-12-21 Andrew Pinski <>
Rask Ingemann Lambertsen <>
PR target/8835
* config/mcore/mcore.c (mcore_function_value): Call promote_mode
instead of PROMOTE_MODE.
2007-12-21 Sebastian Pop <>
* lambda-code.c (lambda_loopnest_to_gcc_loopnest): Fix typo.
2007-12-21 Sebastian Pop <>
* tree-data-ref.c (signed_type_for_types): New.
(affine_fn_op): Use signed_type_for_types and signed_type_for instead
of long_integer_type_node.
(analyze_ziv_subscript): Same.
(analyze_siv_subscript_cst_affine): Same.
(analyze_miv_subscript): Same.
(omega_setup_subscript): Same.
2007-12-21 Richard Sandiford <>
* config/mips/mips.c (mips_emit_loadgp): Replace gen_* calls with
separate gen_*_si and gen_*_di calls. Pass pic_offset_table_rtx
as the first argument.
* config/mips/ (loadgp_newabi, loadgp_absolute)
(loadgp_rtp): Rename to...
(loadgp_newabi_<mode>, loadgp_absolute<mode>, loadgp_rtp<mode>):
...these. Add modes to all operands. Add the target register
as an operand. Combine loadgp_rtp<mode> with its splitter.
2007-12-20 Bob Wilson <>
* config/xtensa/ (fix_return_addr): Remove.
* config/xtensa/xtensa-protos.h (xtensa_initialize_trampoline): New.
(xtensa_trampoline_template): New.
* config/xtensa/xtensa.c (MIN_FRAME_SIZE): Moved here from xtensa.h.
(xtensa_return_addr): Expand to standard Xtensa insns instead of
fix_return_addr. Get high bits from a local label.
(xtensa_trampoline_template): New function with code moved from
TRAMPOLINE_TEMPLATE in xtensa.h. Use L32R instead of CALL0 except
when using CONST16 or absolute-mode literals.
(xtensa_initialize_trampoline): New function with code moved from
INITIALIZE_TRAMPOLINE in xtensa.h. Use different offsets depending
on which trampoline version is used.
* config/xtensa/lib2funcs.S (TRAMPOLINE_SIZE): Add comment.
* config/xtensa/xtensa.h (TARGET_ABSOLUTE_LITERALS): Define.
(MIN_FRAME_SIZE): Moved to xtensa.c.
(TRAMPOLINE_TEMPLATE): Use xtensa_trampoline_template.
(TRAMPOLINE_SIZE): Two versions of the trampoline have different sizes.
(INITIALIZE_TRAMPOLINE): Use xtensa_initialize_trampoline.
* config/xtensa/ieee754-df.S (XCHAL_NO_MUL): Define.
(__muldf3): Use CALL12 instead of CALL0 to invoke .Lmul_mulsi3
helper when not using the CALL0 ABI. Change .Lmul_mulsi3 to match.
* config/xtensa/lib1funcs.asm (__umulsidi3): Likewise.
* config/xtensa/ieee754-sf.S (__mulsf3): Likewise.
2007-12-20 Jakub Jelinek <>
PR c++/34459
* tree-ssa-dse.c (dse_optimize_stmt): Don't eliminate store if
USE_STMT not only stores into the same object as STMT, but might
read it too.
2007-12-19 Sebastian Pop <>
PR tree-optimization/34413
* tree-data-ref.c (affine_fn_op, analyze_ziv_subscript,
analyze_siv_subscript_cst_affine, analyze_miv_subscript,
omega_setup_subscript): Use long_integer_type_node instead of
2007-12-19 John David Anglin <>
PR target/34525
* pa.c (legitimize_pic_address): Force function labels into memory.
2007-12-19 Zdenek Dvorak <>
* omp-low.c (build_omp_regions_1): Recognition of combined parallels
moved ...
(expand_omp): ... here.
2007-12-19 Zdenek Dvorak <>
PR tree-optimization/34355
* tree-parloops.c (take_address_of): Handle expresions
instead of just variables.
(eliminate_local_variables_1): Force whole invariant
address to ssa name.
2007-12-19 Alexander Monakov <>
Revital Eres <>
* modulo-sched.c (generate_reg_moves): Insert the reg-moves
right before the notes which precedes the insn, if they exists.
(loop_canon_p): Add dump info.
(sms_schedule): Likewise.
2007-12-19 Richard Sandiford <>
* tree.h (set_decl_incoming_rtl): Add a by_reference_p parameter.
* emit-rtl.c (set_decl_incoming_rtl): Likewise. Don't set the
rtl's register attributes when the parameter is true.
* function.c (assign_parms_unsplit_complex, assign_parms)
(expand_function_start): Update calls to set_decl_incoming_rtl.
2007-12-19 Richard Sandiford <>
* rtl.def (SUBREG): Update comments.
* rtl.h (reg_attrs): Be explicit about the type of offset used.
(set_reg_attrs_from_mem): Rename to...
(set_reg_attrs_from_value): ...this.
(adjust_reg_mode, byte_lowpart_offset): Declare.
* emit-rtl.c (byte_lowpart_offset): New function.
(update_reg_offset): Remove special offset handling for big-endian
(gen_rtx_REG_offset, gen_reg_rtx_offset): Explicitly say that the
offset parameter is added to REG_OFFSET.
(adjust_reg_mode): New function.
(set_reg_attrs_for_mem): Rename to...
(set_reg_attrs_for_value): ...this and generalize to all values.
If the register is a lowpart of the value, adjust the offset
(set_reg_attrs_for_parm): Update after the above renaming.
(set_reg_attrs_for_decl_rtl): New function, split out from
set_decl_incoming_rtl. Set the offset of plain REGs to the
offset of the REG's mode from the decl's. Assert that all
subregs are lowparts and handle their inner registers in the
same way as plain REGs.
(set_decl_rtl, set_incoming_decl_rtl): Use reg_attrs_for_decl_rtl.
(subreg_lowpart_offset): Explicitly say that the returned offset
* combine.c (do_SUBST_MODE, try_combine, undo_all): Use adjust_reg_mode
instead of PUT_MODE.
* final.c (alter_subreg): Fix/update argument to gen_rtx_REG_offset.
* config/ia64/ia64.c (ia64_expand_load_address): Likewise.
* regclass.c (reg_scan_mark_refs): Use set_reg_attrs_from_value.
* reload.c (find_reloads_subreg_address): Call set_mem_offset
when offseting a MEM.
* var-tracking.c (offset_valid_for_tracked_p): Delete.
(mode_for_reg_attrs): Replace with...
(track_loc_p): ...this new function. Return the mode and offset
to the caller, checking that the latter is valid. If the rtx is
a paradoxical lowpart of the decl, use the decl's mode instead.
Do the same when storing to a register that contains the entire decl.
(var_lowpart): Use byte_lowpart_offset rather than
subreg_lowpart_offset when adjusting the offset attribute.
(count_uses, add_uses, add_stores): Use track_reg_p instead of
offset_valid_for_tracked_p and mode_for_reg_attrs. Generate
lowparts for MEMs as well as REGs.
(vt_add_function_parameters): When obtaining the information from
the decl_rtl, adjust the offset to match incoming. Use track_loc_p
and var_lowpart.
2007-12-18 Sebastian Pop <>
PR tree-optimization/34123
* lambda-code.c (can_duplicate_iv): New.
(cannot_convert_modify_to_perfect_nest): New.
(cannot_convert_bb_to_perfect_nest): New.
(can_convert_to_perfect_nest): Split up.
2007-12-18 David Daney <>
* config/mips/ (clear_hazard): Use PRINT_OPERAND punctuation
instead of .set push and .set pop.
2007-12-18 Rask Ingemann Lambertsen <>
PR target/33474
* config/bfin/bfin.c (bfin_adjust_cost): Dig into PARALLELs to find
the SET.
2007-12-18 Razya Ladelsky <>
* tree-parloops.c (reduiction_info): Change documentation of
reduction_initial field.
(initialize_reductions): Remove creation of reduction_initial variable.
(create_loads_for_reductions): don't join reduction_initial to
the loaded value.
2007-12-18 Kaz Kylheku <>
PR rtl-optimization/34456
* resource.c (mark_set_resources): Use regs_invalidated_by_call
rather than call_used_regs and global_regs.
2007-12-18 Jakub Jelinek <>
PR rtl-optimization/34490
* simplify-rtx.c (simplify_const_relational_operation): If !sign,
don't reduce mmin/mmax using num_sign_bit_copies.
2007-12-17 Kaveh R. Ghazi <>
* doc/install.texi: Change recommended MPFR from 2.2.1 -> 2.3.0.
2007-12-17 Andreas Schwab <>
* doc/invoke.texi (Warning Options): Use @itemx.
2007-12-17 Dorit Nuzman <>
* tree-vectorizer.h (verbosity_levels): Add new verbosity level
* tree-vect-transform.c (vect_estimate_min_profitable_iters): Change
verbosity level to REPORT_COST.
(vect_model_reduction_cost): Likewise.
(vect_model_induction_cost): Likewise.
(vect_model_simple_cost): likewise.
(vect_model_store_cost): likewise.
(vect_model_load_cost): likewise.
(conservative_cost_threshold): Likewise. Remove print.
2007-12-17 Rask Ingemann Lambertsen <>
* doc/tm.texi (TARGET_SECONDARY_RELOAD): Fix typos.
2007-12-17 Jakub Jelinek <>
PR c/34506
* c-parser.c (c_parser_omp_all_clauses): Accept optional comma
in between clauses.
2007-12-17 Dorit Nuzman <>
PR tree-optimization/34445
* tree-vect-trasnform.c (vect_estimate_min_profitable_iters): Skip
stmts (including live stmts) that are not relevant.
2007-12-17 Jack Howarth <>
PR target/34025
* config/i386/t-crtpc: Add $(MULTILIB_CFLAGS).
* config/i386/t-crtfm: Likewise.
2007-12-17 Uros Bizjak <>
* config/i386/i386.h (WIDEST_HARDWARE_FP_SIZE): Define.
2007-12-16 Uros Bizjak <>
* tree-vect-transform.c (conservative_cost_threshold): Add missing
space to "not vectorized" message.
2007-12-16 Richard Sandiford <>
PR rtl-optimization/34415
* df.h (DF_LR_IN, DF_LR_OUT): Update comments.
* resource.c (mark_target_live_regs): Use DF_LR_IN rather than
df_get_live_in. Don't handle pseudos.
2007-12-16 Jakub Jelinek <>
PR bootstrap/34003
* c-decl.c (merge_decls): Copy RTL from olddecl to newdecl.
* config/pa/pa.c (pa_encode_section_info): If !first, preserve
2007-12-15 Alexandre Oliva <>
* tree.c (type_hash_add): Fix whitespace.
2007-12-15 Hans-Peter Nilsson <>
Add CRIS v32 support. Fix -mcc-init.
* config.gcc: Make crisv32-* have cpu_type cris. Handle
crisv32-*-elf and crisv32-*-none like cris-*-elf and cris-*-none
but without multilibs and with target_cpu_default=32.
(crisv32-*-linux*): Handle as cris-*-linux*. Set
target_cpu_default to 32 and 10 accordingly.
* config/cris/cris.c (ASSERT_PLT_UNSPEC): Remove unused macro.
(cris_movem_load_rest_p, cris_store_multiple_op_p): Remove FIXME.
Change regno_dir and regno only if !TARGET_V32.
(cris_conditional_register_usage): If TARGET_V32, set
reg_alloc_order as per REG_ALLOC_ORDER_V32 and make
CRIS_ACR_REGNUM non-fixed.
(cris_print_base): Add gcc_assert for post_inc on CRIS_ACR_REGNUM.
(cris_print_operand) <case 'Z', case 'u'>: New cases.
<case REG of case 'H'>: Allow for CRIS_SRP_REGNUM.
(cris_reload_address_legitimized): Always return false for TARGET_V32.
(cris_register_move_cost): New function, guts from
REGISTER_MOVE_COST adjusted for CRIS v32.
(cris_normal_notice_update_cc): New function split out from...
(cris_notice_update_cc): Set cc_status.flags CC_REVERSED for
TARGET_CCINIT. Call cris_normal_notice_update_cc for CC_REV,
CC_NOOV32 and CC_NORMAL, but set cc_status.flags CC_NO_OVERFLOW
for CC_NOOV32 and TARGET_V32.
(cris_simple_epilogue): Always return false for TARGET_V32 if
cris_return_address_on_stack yields true.
(cris_cc0_user_requires_cmp): New function.
(cris_valid_pic_const): Add argument ANY_OPERAND. All callers
(cris_asm_output_case_end): New function, guts from
ASM_OUTPUT_CASE_END adjusted for CRIS v32.
(cris_override_options): Adjust for CRIS v32. Mask out
(cris_asm_output_mi_thunk, cris_expand_epilogue)
(cris_gen_movem_load, cris_emit_movem_store)
(cris_expand_pic_call_address, cris_asm_output_symbol_ref)
(cris_asm_output_label_ref, cris_output_addr_const_extra): Adjust
for CRIS v32.
(cris_split_movdx): Copy re-used MEM.
* config/cris/t-elfmulti: Add multilib v32 for -march=v32.
* config/cris/
("cris_general_operand_or_pic_source"): New predicate.
("cris_general_operand_or_plt_symbol"): Replace by...
("cris_nonmemory_operand_or_callable_symbol"): New predicate.
* config/cris/linux.h: Sanity-check TARGET_CPU_DEFAULT for
presence and contents.
v32, 0 otherwise.
* config/cris/cris.h: Sanity-check TARGET_CPU_DEFAULT for contents.
(CRIS_CC1_SUBTARGET_SPEC): Change default tuning to use
(ASM_SPEC): Add sanity-check erroring out when both -march= and
-mcpu= are specified. Pass on either as --march=v32.
(CRIS_ASM_SUBTARGET_SPEC): When neither -march= or -mcpu= are
specified, pass on CRIS_DEFAULT_ASM_ARCH_OPTION.
(CRIS_CPU_V32): New macro.
TARGET_DEFAULT definition after new TARGET_CPU_DEFAULT definition.
Define v32-adjusted TARGET_DEFAULT.
(TARGET_V32): New macro.
(REG_ALLOC_ORDER_V32): New macro.
(HARD_REGNO_MODE_OK): Do not allow larger-than-register-size modes
(enum reg_class): New classes ACR_REGS, SPEC_ACR_REGS, GENNONACR_REGS
(REG_CLASS_NAMES, REG_CLASS_CONTENTS): Adjust for new classes.
(EXTRA_CONSTRAINT): New constraint 'U'.
SIMPLE_ADDRESS_P. Make one chained if-else, finishing as
non-match after BASE_OR_AUTOINCR_P for TARGET_V32.
(REGISTER_MOVE_COST): Just call the new function
(enum cris_pic_symbol_type): Rename cris_gotrel_symbol to
cris_rel_symbol. All users changed.
(REGISTER_NAMES): Replace "pc" with "acr".
(ASM_OUTPUT_REG_PUSH): Change to v32-compatible sequence.
(ASM_OUTPUT_REG_POP): Change to v32-compatible syntax.
(ASM_OUTPUT_CASE_END): Just call the new function
* gcc/config/cris/ Group related constants together, with
comments local.
(CRIS_UNSPEC_CASESI): New constants.
(CRIS_UNSPEC_PLT): Remove constant.
(CRIS_ACR_REGNUM): New constant.
("slottable"): New attr alternatives "has_return_slot" and
("cc"): New attr alternatives "noov32" and "rev".
((eq_attr "slottable" "has_call_slot"))
((eq_attr "slottable" "has_return_slot")): New define_delays.
("movdi", "movsi"): Adjust operands for CRIS v32.
("tstdi", "cmpdi", "adddi3", "subdi3", "uminsi3")
("indirect_jump"): Ditto. Make define_expand.
("*tstdi_non_v32", "*tstdi_v32", "*tst<mode>_cmp")
("*tst<mode>_non_cmp", "*cmpdi_non_v32", "*cmpdi_v32")
("*movdi_v32", "*adddi3_non_v32", "*adddi3_v32")
("*addsi3_non_v32", "*addsi3_v32", "*addhi3_non_v32")
("*addhi3_v32", "*addqi3_non_v32", "*addqi3_v32")
("*subdi3_non_v32", "*subdi3_v32", "*subsi3_non_v32")
("*subsi3_v32", "*sub<mode>3_nonv32", "*sub<mode>3_v32")
("*andqi3_non_v32", "*andqi3_v32", "*iorsi3_non_v32")
("*iorsi3_v32", "*iorhi3_non_v32", "*iorhi3_v32")
("*iorqi3_non_v32", "*iorqi3_v32", "*uminsi3_non_v32")
("*uminsi3_v32", "*indirect_jump_non_v32", "*indirect_jump_v32")
("*expanded_call_v32", "*expanded_call_value_v32"): New patterns,
for the corresponding standard name.
("tst<mode>"): Limit to BW and make define_expand.
("tstsi"): Make separate insn, adjusting for CRIS v32.
("*cmp_swapext<mode>"): Adjust for v32. Specify "rev" for attr "cc".
("cmpsi", "cmp<mode>"): Remove special cases for zero. Specify
attr "cc".
("*btst"): Don't match for TARGET_CCINIT. Replace test of
register with compatible "cmpq 0". Specify attr "cc".
("*movdi_insn_non_v32"): New pattern, replacing "*movdi_insn" and
(define_split for DI move): Match CRIS v32 only.
("*movsi_got_load", "*movsi_internal", "*addi"): Adjust for CRIS v32.
("load_multiple", "store_multiple", "*addsbw_v32", "*addubw_v32")
("*adds<mode>_v32", "*addu<mode>_v32", "*bound<mode>_v32")
("*casesi_jump_v32", "*expanded_andsi_v32", "*expanded_andhi_v32")
("*extop<mode>si_v32", "*extopqihi_v32", "*andhi_lowpart_v32")
("*andqi_lowpart_v32", "cris_casesi_v32"): New patterns.
("add<mode>3"): Make addsi3, addhi3 and addqi3 define_expand.
("sub<mode>3"): Ditto subsi3, subhi3 and subqi3.
("ior<mode>3"): Ditto iorsi3, iorhi3 and iorqi3.
("*extopqihi_non_v32"): Replace "*extopqihi".
("*extop<mode>si_non_v32"): Replace "*extop<mode>si".
("*addxqihi_swap_non_v32"): Rename from "*extopqihi_swap", make
non-v32 only.
("*extop<mode>si_swap_non_v32"): Ditto "*extop<mode>si_swap".
("*expanded_andsi_non_v32"): Ditto "*expanded_andsi".
("*expanded_andhi_non_v32"): Ditto "*expanded_andhi".
("*andhi_lowpart_non_v32"): Ditto "*andhi_lowpart".
("*andqi_lowpart_non_v32"): Ditto "*andqi_lowpart".
("*expanded_call_non_v32"): Ditto "*expanded_call". Change from
"cris_general_operand_or_plt_symbol" to "general_operand".
("*expanded_call_value_non_v32") Ditto "*expanded_call_value".
("*casesi_adds_w", "mstep_shift", "mstep_mul")
("*expanded_call_side", "*expanded_call_value_side")
(op-extend-split, op-extend-split-rx=rz, op-extend-split-swapped)
(op-extend-split-swapped-rx=rz, op-extend, op-split-rx=rz)
(op-split-swapped, op-split-swapped-rx=rz): Make non-v32 only.
("dstep_mul", "xorsi3", "one_cmplsi2", "<shlr>si3")
("*expanded_<shlr><mode>", "*<shlr><mode>_lowpart", "ashl<mode>3")
("*ashl<mode>_lowpart", "abssi2", "clzsi2", "bswapsi2")
("cris_swap_bits"): Specify "noov32" for attr "cc".
("<su>mulsi3_highpart"): Ditto. Correct operand 0 to register_operand.
("andqi3"): Make define_expand.
("*return_expanded"): For attr "slottable", change from "has_slot"
to "has_return_slot".
("cris_casesi_non_v32"): New pattern, old contents of "casesi".
("casesi"): Divert into "cris_casesi_v32" and "cris_casesi_non_v32".
(moversideqi, movemsideqi, mover2side): Require
(gotplt-to-plt, gotplt-to-plt-side): Change from CRIS_UNSPEC_PLT
* config/cris/cris-protos.h (cris_register_move_cost)
(cris_cc0_user_requires_cmp, cris_asm_output_case_end): Declare.
2007-12-15 Alexandre Oliva <>
PR debug/7081
* dwarf2out.c (dwarf_tag_name): Synchronize with dwarf2.h.
(is_type_die): Cover interface types.
(class_or_namespace_scope_p): Cover interface and class types.
(record_type_tag): New.
(gen_inlined_structure_type_die): Use it.
(gen_struct_or_union_type_die): Likewise.
(prune_unused_types_walk): Cover interface types.
* langhooks.h (classify_record): New enum.
(classify_record): New member in struct langhooks_for_types.
* langhooks-def.h (LANG_HOOKS_CLASSIFY_RECORD): New.
2007-12-15 Alexandre Oliva <>
* dwarf2out.c (reference_to_unused): Don't emit strings in
initializers just because of debug information.
* tree.h (TREE_ASM_WRITTEN): Document use for STRING_CSTs.
2007-12-15 Sebastian Pop <>
* tree-scalar-evolution.c (number_of_iterations_for_all_loops): Replace
print_loop_ir with print_loops.
* tree-flow.h (dot_cfg, debug_loops, debug_loop, debug_loop_num,
print_loops, print_loops_bb): Declare.
* tree-cfg.c (print_loops_bb): New.
(print_loop): Print header, latch, bounds, estimation of iterations.
(print_loop_and_siblings): New.
(print_loop_ir): Renamed print_loops.
(debug_loop_ir): Renamed debug_loops.
(debug_loop, debug_loop_num): New.
2007-12-15 Bernhard Fischer <>
* tree-flow-inline.h.c (next_readonly_imm_use): Fix typo in comment.
2007-12-15 Bernhard Fischer <>
* toplev.c (process_options): Fix typo in warning.
2007-12-14 Jakub Jelinek <>
PR target/29978
* config/i386/i386.c (ix86_expand_branch): Optimize LE/LEU/GT/GTU
DImode comparisons against constant with all 1's in the lower word.
2007-12-14 Uros Bizjak <>
* config/i386/ (sse4_2_pcmpestr): Use reg_not_xmm0_operand
constraint for operand 2. Use nonimm_not_xmm0_operand constraint
for operand 4. Update arguments in the call to
(sse_4_2_pcmpestr_cconly): Renumber insn operands and update insn
template accordingly.
(sse4_2_pcmpistr): Use reg_not_xmm0_operand constraint for operand2.
Use nonimm_not_xmm0_operand constraint for operand 3. Update
arguments in the call to gen_sse4_2_pcmpistr_cconly.
(sse_4_2_pcmpistr_cconly): Renumber insn operands and update insn
template accordingly.
2007-12-14 Richard Guenther <>
PR middle-end/34462
* tree-ssa-operands.h (create_ssa_artificial_load_stmt): Add
parameter to say whether to unlink immediate uses.
* tree-ssa-operands.c (create_ssa_artificial_load_stmt): Do not
mark the artificial stmt as modified. Unlink immediate uses
only if requested.
* tree-ssa-dom.c (record_equivalences_from_stmt): Update caller.
* tree-ssa-pre.c (insert_fake_stores): Likewise.
2007-12-13 Eric Botcazou <>
PR middle-end/33088
* gimplify.c (gimplify_modify_expr_complex_part): Add note to comment.
* tree-complex.c (init_dont_simulate_again): Return true if there are
uninitialized loads generated by gimplify_modify_expr_complex_part.
* tree-gimple.c (is_gimple_reg_type): Return false for complex types
if not optimizing.
* tree-ssa.c (ssa_undefined_value_p): New predicate extracted from...
(warn_uninit): Use ssa_undefined_value_p.
* tree-ssa-pre.c (is_undefined_value): Delete.
(phi_translate_1): Use ssa_undefined_value_p.
(add_to_exp_gen): Likewise.
(make_values_for_stmt): Likewise.
* tree-flow.h (ssa_undefined_value_p): Declare.
2007-12-13 Andrew Pinski <>
David Daney <>
PR bootstrap/34144
* system.h: Make -Wuninitialized non-fatal if ASSERT_CHECKING
is disabled.
2007-12-13 Jakub Jelinek <>
PR rtl-optimization/32636
* df-scan.c (df_get_entry_block_def_set): Set struct_value_rtx
regno in entry_block_defs even if HAVE_prologue && epilogue_completed.
2007-12-13 Uros Bizjak <>
Richard Guenther <>
PR target/34435
* config/i386/emmintrin.h (_mm_shuffle_pd, _mm_extract_epi16,
_mm_insert_epi16, _mm_shufflehi_epi16, _mm_shufflelo_epi16,
_mm_shuffle_epi32): Cast non-constant input values to either __m64,
__m128, __m128i or __m128d in a macro version of the intrinsic.
Cast constant input values to int.
* config/i386/ammintrin.h (_mm_extracti_si64, _mm_inserti_si64): Ditto.
* config/i386/bmmintrin.h (_mm_roti_epi8, _mm_roti_epi16,
_mm_roti_epi32, _mm_roti_epi64): Ditto.
* config/i386/smmintrin.h (_mm_blend_epi16, _mm_blend_ps, _mm_blend_pd,
_mm_dp_ps, _mm_dp_pd, _mm_insert_ps, _mm_extract_ps, _mm_insert_epi8,
_mm_insert_epi32, _mm_insert_epi64, _mm_extract_epi8, mm_extract_epi32,
_mm_extract_epi64, _mm_mpsadbw_epu8, _mm_cmpistrm, _mm_cmpistri,
_mm_cmpestrm, _mm_cmpestri, _mm_cmpistra, _mm_cmpistrc, _mm_cmpistro,
_mm_cmpistrs, _mm_cmpistrz, _mm_cmpestra, _mm_cmpestrc, _mm_cmpestro,
_mm_cmpestrs, _mm_cmpestrz): Ditto.
* config/i386/tmmintrin.h (_mm_alignr_epi8, _mm_alignr_pi8): Ditto.
* config/i386/xmmintrin.h (_mm_shuffle_ps, _mm_extract_pi16, _m_pextrw,
_mm_insert_pi16, _m_pinsrw, _mm_shuffle_pi16, _m_pshufw): Ditto.
* config/i386/mmintrin-common.h (_mm_round_pd, _mm_round_sd,
_mm_round_ps, _mm_round_ss): Ditto.
2007-12-13 Richard Guenther <>
PR tree-optimization/34450
* params.def (PARAM_SCCVN_MAX_SCC_SIZE): New param.
* invoke.texi (sccvn-max-scc-size): Document.
* (tree-ssa-sccvn.o): Add $(PARAMS_H) dependency.
* tree-ssa-sccvn.h (run_scc_vn): Return true on success, false
on error.
* tree-ssa-sccvn.c (params.h): Include.
(DFS): Return true if all went well, return false as soon as
a SCC exceeds the size of PARAM_SCCVN_MAX_SCC_SIZE.
(run_scc_vn): Return true if all went well, return false if
we aborted during DFS.
* tree-ssa-pre.c (execute_pre): Check if SCCVN finished
successfully, otherwise bail out.
2007-12-13 Olga Golovanevsky <>
* ipa-struct-reorg.c (is_candidate): Print information to dump
file when the type is initialized.
(get_stmt_accesses): Likewise when a structure has bitfields
or field access is too complicate.
(safe_cond_expr_check): Likewise for unsafe condition expressions.
(exclude_cold_structs): Likewise for cold structures.
(collect_structures): Suppress redundant print when there are
no structures to transform.
(do_reorg): Print to dump file a number of structures that
will be transformed.
(dump_new_types): Print a number of new types to replace
an original structure type.
2007-12-13 Olga Golovanevsky <>
* doc/invoke.texi (Optimiza Options): Document new -fipa-struct-reorg
option and struct-reorg-cold-struct-ratio parameter.
2007-12-13 Torbjorn Granlund <>
* config/i386/i386.c (ix86_rtx_costs) [MULT]: Check op0 for
ZERO_EXTEND when computing costs for widening multiplication.
2007-12-13 Richard Earnshaw <>
PR target/30192
* config/arm/ieee754-df.S (floatundidf): Fix for wrong sp value on
exit when using hard FPA.
* config/arm/ieee754-df.S (floatdidf): Likewise.
2007-12-12 Jakub Jelinek <>
PR bootstrap/30589
* doc/install.texi: Document that for MinGW only runtime 3.12 and
later is supported.
2007-12-12 David Edelsohn <>
* config/rs6000/rs6000.c (is_mem_ref): Ignore STACK_TIE.
2007-12-12 Aldy Hernandez <>
PR tree-optimization/32901
* gimplify.c (gimplify_modify_expr_rhs): Handle the case when we
are assigning from a constant constructor.
Fix wrapping in function comment.
2007-12-12 Andreas Krebbel <>
* config/s390/s390.c (s390_O_constraint_str): Limit the range
for 'On' to -4G+1..-1.
* config/s390/ Adjust comment accordingly.
2007-12-11 Nathan Sidwell <>
* config/rs6000/rs6000.c (rs6000_emit_prologue): Use frame_reg_rtx
for SPE saves.
2007-12-11 Kai Tietz <>
* config/i386/cygming.h (DWARF2_UNWIND_INFO): Handle 64-bit
target same as 32-bit.
2007-12-10 Jakub Jelinek <>
PR tree-optimization/34371
* tree-vectorizer.h (struct _loop_vec_info): Add num_iters_unchanged
(LOOP_VINFO_NITERS_UNCHANGED): Define to num_iters_unchanged field.
* tree-vectorizer.c (set_prologue_iterations,
slpeel_tree_peel_loop_to_edge): Call unshare_expr on
2007-12-10 Eric Botcazou <>
PR target/34403
* config/i386/i386.c (ix86_expand_movmem): Punt if the count is large.
(ix86_expand_setmem): Likewise.
2007-12-10 Kenneth Zadeck <>
PR rtl-optimization/34302
* auto-inc-dec.c (attempt_change): Change place where move is
2007-12-10 Jakub Jelinek <>
* dwarf2out.c (gen_array_type_die, gen_descr_array_type_die): For
Fortran multi-dimensional arrays use DW_AT_ordering
2007-12-10 Paolo Bonzini <>
PR target/32086
* config/i386/i386.c (override_options): Enable -fvect-cost-model.
2007-12-10 Uros Bizjak <>
* config/i386/i386.c (ix86_function_regparm): Do not check global_regs
array, registers that are members of global_regs are also members of
fixed_regs array. Use REGPARM_MAX to check that no regparm hard
register is taken by a fixed register variable. Check up to and
including DI_REG when adjusting regparm value due to fixed regs usage.
(rep_prefix_usable): Check fixed_regs array, not global_regs array for
available hard registers.
(ix86_expand_strlen): Ditto.
* config/i386/ (strmov): Ditto.
(cmpstrnsi): Ditto.
2007-12-10 Kaz Kojima <>
* genopinit.c: Include tm_p.h in generated file.
* config/arm/ (vec_set<mode>_internal): Use INTVAL
to extract the integer from operands[2].
(vec_setv2di_internal): Likewise.
* config/arm/arm.c (arm_size_return_regs): Make return type unsigned.
(arm_init_neon_builtins): Move code after declarations.
2007-12-10 Hans-Peter Nilsson <>
* reload.c (find_reloads_address_1): To properly mark as an
autoincdec, pass X for non-NULL OUT in call to push_reload for
autoincdec which can't be trivially used as an address.
2007-12-10 Pranav Bhandarkar <>
Hans-Peter Nilsson <>
* caller-save.c (insert_one_insn): If inserting before a call_insn
then the registers containing the arguments of the call are
live_throughout in the new insn.
2007-12-09 John David Anglin <>
PR middle-end/32889
PR target/34091
* Consolidate HImode and QImode move patterns into one pattern
each, eliminating floating-point alternatives.
* pa-protos.h (pa_cannot_change_mode_class, pa_modes_tieable_p):
Declare functions.
* pa-64.h (SECONDARY_MEMORY_NEEDED): Define here.
* pa.c (pa_secondary_reload): Use an intermediate general register
for copies to/from floating-point register classes. Simplify code
SHIFT_REGS class. Provide additional comments.
(pa_cannot_change_mode_class, pa_modes_tieable_p): New functions.
* pa.h (MODES_TIEABLE_P): Use pa_modes_tieable_p.
(INT14_OK_STRICT): Define.
(MODE_OK_FOR_SCALED_INDEXING_P): Allow SFmode and DFmode when using
soft float.
SFmode and DFmode.
Align DImode offsets when generating 64-bit code.
* pa32-regs.h (VALID_FP_MODE_P): Remove QImode and HImode.
* pa64-regs.h (VALID_FP_MODE_P): Remove QImode and HImode.
(CANNOT_CHANGE_MODE_CLASS): Define using pa_cannot_change_mode_class.
2007-12-09 Jakub Jelinek <>
PR fortran/22244
* langhooks-def.h (LANG_HOOKS_GET_ARRAY_DESCR_INFO): Define.
* langhooks.h (struct array_descr_info): Forward declaration.
(struct lang_hooks_for_types): Add get_array_descr_info field.
* dwarf2.h (DW_AT_bit_stride, DW_AT_byte_stride): New.
(DW_AT_stride_size, DW_AT_stride): Keep around for Dwarf2
* dwarf2out.h (struct array_descr_info): New type.
* dwarf2out.c (dwarf_attr_name): Rename DW_AT_stride to
DW_AT_byte_stride and DW_AT_stride_size to DW_AT_bit_size.
(descr_info_loc, add_descr_info_field, gen_descr_array_type_die):
New functions.
(gen_type_die_with_usage): Call lang_hooks.types.get_array_descr_info
and gen_descr_array_type_die.
2007-12-08 Richard Guenther <>
PR tree-optimization/34391
* tree-vect-transform.c (vect_setup_realignment): Mark new
symbols for renaming.
2007-12-07 Bob Wilson <>
* config/xtensa/xtensa.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
2007-12-07 Richard Guenther <>
PR middle-end/34382
* opts.c (common_handle_option): Handle OPT_fforce_addr.
2007-12-07 Aldy Hernandez <>
* m32c.h (LEGITIMIZE_ADDRESS): Use WIN instead of win.
2007-12-07 Samuel Tardieu <>
PR ada/29157
* doc/install.texi: Explain how to check for a clean environment when
building GNAT.
2007-12-07 Richard Guenther <>
* tree-profile.c (gcov_type_tmp_var): New global variable.
(tree_gen_edge_profiler): Use a single shared variable decl per
function for edge counter incrementing.
(tree_profiling): Re-set the shared variable.
2007-12-06 Bob Wilson <>
* config/xtensa/xtensa.c (xtensa_va_start): Add prototype.
2007-12-06 Tom Tromey <>
PR c/29172
* c-opts.c (c_common_parse_file): Call cpp_clear_file_cache.
2007-12-06 Richard Sandiford <>
* config/mips/mips.c (mips_function_ok_for_sibcall): Check
targetm.binds_local_p as well as DECL_EXTERNAL.
2007-12-06 Harsha Jagasia <>
* tree-vectorizer.c (slpeel_add_loop_guard): Gimplify the condition.
(set_prologue_iterations): New. Set the prologue iterations to total
number of scalar iterations if the cost model check indicates that
scalar code should be generated.
(slpeel_tree_peel_loop_to_edge): Add a new parameter and code for
generating the cost condition for epilog. Call
set_prologue_iterations to generate cost condition for prolog.
(new_loop_vec_info): Initialize LOOP_VINFO_NITERS_UNCHANGED.
* tree-vectorizer.h (LOOP_VINFO_NITERS_UNCHANGED): New.
(slpeel_tree_peel_loop_to_edge): Update declaration.
(set_prologue_iterations): New declaration.
* tree-vect-analyze.c (vect_analyze_loop_form): Update
* tree-vect-transform.c
(vect_estimate_min_profitable_iters): Add new parameter and
code to check if run time cost model test is needed.
Remove code that adds builtin vectorization cost to scalar
outside cost for the run time cost model test. If run time
cost model test is needed add the appropriate guard cost to
the scalar outside cost. The guard cost depends on whether
the guard is generated at versioning or at prolog generation
or at epilog generation. Change cost model equation to include
scalar outside cost.
(conservative_cost_threshold): New. Return the less conservative
profitability threshold between the cost model threshold and the
user defined vectorization threshold.
(vect_do_peeling_for_loop_bound): Call conservative_cost_threshold.
(vect_do_peeling_for_alignment): Same.
(vect_loop_versioning): Same.
(vect_create_cond_for_align_checks): ANDs the cost model condition
with the alignment condition.
(vect_transform_loop): Call loop versioning only when there is a
misalignment or an aliasing problem.
2007-12-06 Jakub Jelinek <>
PR middle-end/20983
* tree-ssa-ccp.c (optimize_stdarg_builtin): New function.
(execute_fold_all_builtins): Call it for BUILT_IN_VA_START,
* target.h (struct ggc_target): Add expand_builtin_va_start hook.
* target-def.h (TARGET_EXPAND_BUILTIN_VA_START): Define.
* builtins.c (expand_builtin_va_start): Use
targetm.expand_builtin_va_start hook instead of
* alpha/alpha.c (alpha_va_start): Made static.
(override_options): Clear targetm.expand_builtin_va_start if
* alpha/unicosmk.h (EXPAND_BUILTIN_VA_START): Remove.
* alpha/alpha.h (EXPAND_BUILTIN_VA_START): Remove.
* alpha/alpha-protos.h (alpha_va_start): Remove prototype.
* xtensa/xtensa.h (EXPAND_BUILTIN_VA_START): Remove.
* xtensa/xtensa.c (TARGET_EXPAND_BUILTIN_VA_START): Define.
(xtensa_va_start): Made static.
* xtensa/xtensa-protos.h (xtensa_va_start): Remove prototype.
* pa/pa-protos.h (hppa_va_start): Remove prototype.
* pa/pa.h (EXPAND_BUILTIN_VA_START): Remove.
* pa/pa.c (hppa_va_start): Made static, add prototype.
* frv/frv.c (frv_expand_builtin_va_start): Made static, add prototype.
* frv/frv-protos.h (frv_expand_builtin_va_start): Remove prototype.
* frv/frv.h (EXPAND_BUILTIN_VA_START): Remove.
* i386/i386.c (override_options): Clear
targetm.expand_builtin_va_start if -m32 or 64-bit MS ABI.
(ix86_va_start): Made static.
* i386/i386.h (EXPAND_BUILTIN_VA_START): Remove.
* i386/i386-protos.h (ix86_va_start, ix86_va_arg): Remove prototypes.
* iq2000/iq2000-protos.h (iq2000_va_start): Remove prototype.
* iq2000/iq2000.h (EXPAND_BUILTIN_VA_START): Remove.
* iq2000/iq2000.c (iq2000_va_start): Made static, add prototype.
* rs6000/rs6000-protos.h (rs6000_va_start): Remove prototype.
* rs6000/rs6000.c (rs6000_va_start): Made static, add prototype.
(rs6000_override_options): Clear targetm.expand_builtin_va_start if
* rs6000/rs6000.h (EXPAND_BUILTIN_VA_START): Remove.
* spu/spu.c (spu_va_start): Made static, add prototype.
* spu/spu.h (EXPAND_BUILTIN_VA_START): Remove.
* spu/spu-protos.h spu_va_start): Remove prototype.
* stormy16/stormy16.h (EXPAND_BUILTIN_VA_START): Remove.
* stormy16/stormy16-protos.h (xstormy16_expand_builtin_va_start):
Remove prototype.
* stormy16/stormy16.c (xstormy16_expand_builtin_va_start): Made static.
* s390/s390-protos.h (s390_va_start): Remove prototype.
* s390/s390.c (s390_va_start): Made static.
* s390/s390.h (EXPAND_BUILTIN_VA_START): Remove.
* mn10300/mn10300.h (EXPAND_BUILTIN_VA_START): Remove.
* mn10300/mn10300-protos.h (mn10300_va_start): Remove prototype.
* mn10300/mn10300.c (mn10300_va_start): Made static, add prototype.
* arc/arc.c (arc_va_start): Made static, add prototype.
* arc/arc.h (EXPAND_BUILTIN_VA_START): Remove.
* arc/arc-protos.h (arc_va_start): Remove prototype.
* mt/mt-protos.h (mt_va_start): Remove prototype.
* sparc/sparc.c (sparc_va_start): Made static, add prototype.
* sparc/sparc-protos.h (sparc_va_start): Remove prototype.
* sparc/sparc.h (EXPAND_BUILTIN_VA_START): Remove.
* sh/sh.c (sh_va_start): Made static, add prototype.
* sh/sh-protos.h (sh_va_start): Remove prototype.
* sh/sh.h (EXPAND_BUILTIN_VA_START): Remove.
* mips/mips-protos.h (mips_va_start): Remove prototype.
* mips/mips.h (EXPAND_BUILTIN_VA_START): Remove.
* mips/mips.c (mips_va_start): Made static.
2007-12-06 Uros Bizjak <>
* tree-ssa-loop.c (gate_tree_parallelize_loops): Return true when
"flag_tree_parallelize_loops > 1".
2007-12-06 Zdenek Dvorak <>
Dorit Nuzman <>
Jakub Jelinek <>
PR tree-optimization/34005
* tree-gimple.c (is_gimple_formal_tmp_rhs): Add a case for COND_EXPR.
* gimplify.c (gimplify_ctx): Add a new member allow_rhs_cond_expr.
(gimplify_pure_cond_expr): New function.
(generic_expr_could_trap_p): New function.
(gimplify_cond_expr): Call gimplify_pure_cond_expr.
(force_gimple_operand): Initialize new field allow_rhs_cond_expr.
2007-12-06 Andreas Krebbel <>
* config/s390/s390.c (s390_emit_stack_tie): New function.
(s390_emit_prologue): Emit a stack tie when writing to the
f8-f15 stack slots.
* config/s390/ ("stack_tie"): New insn definition.
2007-12-06 Ben Elliston <>
* SERVICE: Remove.
* doc/sourcebuild.texi (Miscellaneous Docs): Remove SERVICE item.
2007-12-05 Jakub Jelinek <>
PR middle-end/34337
* fold-const.c (fold_binary) <case BIT_IOR_EXPR>: Don't minimize
number of bits set in C1 if a mode mask for some mode can be used
2007-12-05 Bernhard Fischer <>
* varasm.c (merge_weak, weak_finish, assemble_alias): Commentary typo
2007-12-05 Richard Guenther <>
PR tree-optimization/34138
* tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
Do not forward propagate addresses if that changes volatileness of
the pointed-to type.
2007-12-05 Uros Bizjak <>
PR target/34312
* config/i386/i386.c (ix86_function_regparm): Also check for fixed
registers when checking that regparm registers are available.
Lower regparm value due to fixed registers usage in addition to
global regs usage.
2007-12-05 Bernhard Fischer <>
* sparseset.c: Include config.h and system.h before sparseset.h.
* sparseset.h: Remove inclusion of system.h.
2007-12-05 Jakub Jelinek <>
Richard Sandiford <>
* optabs.c (init_insn_codes): New function.
(new_optab): Delete.
(init_optab, init_optabv): Don't call new_optab.
(init_convert_optab): Don't clear the insn codes.
(init_optabs): Call init_insn_codes.
2007-12-04 Jakub Jelinek <>
* omp-low.c (optimize_omp_library_calls): New function.
(expand_omp_parallel): Call it if optimizing.
PR middle-end/34134
* stmt.c (expand_stack_restore): Call expand_normal on var to get
rtx for it instead of assuming it will be a VAR_DECL.
2007-12-04 Manuel Lopez-Ibanez <>
* c-parser (c_parser_statement_after_labels): Move error from here...
(c_parser_label): ... to here. Check that the declaration is not
actually just another label.
2007-12-04 Richard Guenther <>
PR middle-end/34334
PR middle-end/34222
* tree-ssa-operands.c (get_addr_dereference_operands): If we
fall back to using the SMTs aliases, make sure to add virtual
operands for the SMT itself.
(create_ssa_artificial_load_stmt): Fix typo. Make sure to also
clear the loaded and stored symbols bitmaps.
2007-12-04 Ben Elliston <>
* config/spu/spu.h (ASM_FORMAT_PRIVATE_NAME): Remove; use default.
2007-12-04 Ben Elliston <>
* doc/tm.texi (Exception Handling): Mention unwind-dw2-xtensa.c.
2007-12-03 Steven Bosscher <>
PR middle-end/33713
* doc/invoke.texi: Remove -fforce-addr documentation.
* expr.c (emit_move_insn): Remove use of flag_force_addr.
(expand_expr_real_1): Same.
(do_tablejump): Same.
Call memory_address instead of memory_address_noforce.
* expr.h (memory_address_noforce): Remove prototype.
* explow.c (memory_address): Remove support for flag_force_addr.
(validize_mem): Same.
(memory_address_noforce): Remove.
* common.opt: Add dummy documentation for -fforce-addr.
* combine.c (can_combine_p): Remove -fforce-addr comment.
* config/cris/cris.h (OPTIMIZATION_OPTIONS): Remove set of
* config/m68k/m68k.h (PIC_CASE_VECTOR_ADDRESS): Remove comment
relating to memory_address_noforce.
* testsuite/gcc.c-torture/compile/20050802-1.c: Remove.
* testsuite/gcc.c-torture/compile/20011113-1.c: Remove.
2007-12-03 Jakub Jelinek <>
* omp-low.c (lookup_decl_in_outer_ctx): Allow calling this
with !ctx->is_nested.
(maybe_lookup_decl_in_outer_ctx): Look up in outer contexts
even if !ctx->is_nested.
(lower_copyprivate_clauses, lower_send_clauses,
lower_send_shared_vars): Call lookup_decl_in_outer_ctx
PR middle-end/29749
* fold-const.c (fold_binary) <case BIT_AND_EXPR>: Optimize
(X << C1) & C2 into (X << C1) & (C2 | ((1 << C1) - 1))
and (X >> C1) & C2 into (X >> C1) & (C2 | ~((type) -1 >> C1)).
(fold_binary) <case LSHIFT_EXPR, case RSHIFT_EXPR>: Optimize
(X & C2) << C1 into (X << C1) & (C2 << C1) and
(X & C2) >> C1 into (X >> C1) & (C2 >> C1) if that allows further
PR tree-optimization/33453
* tree-data-ref.c (split_constant_offset): Use POINTER_PLUS_EXPR
for pointer addition.
* tree-parloops.c (canonicalize_loop_ivs): Likewise.
(separate_decls_in_loop_name): Copy DECL_GIMPLE_REG_P from var to
2007-12-03 Bernd Schmidt <>
* config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __FDPIC__ as
2007-12-03 Razya Ladelsky <>
* doc/invoke.texi (fipa-cp, fipa-matrix-reorg): Add documentation.
2007-12-03 Jakub Jelinek <>
PR middle-end/34317
* opts.c (common_handle_option): Handle OPT_ftree_store_copy_prop.
* common.opt (ftree-store-copy-prop): Use the same help text as for
other nop switches.
2007-12-02 Ayal Zaks <>
Revital Eres <>
* modulo-sched.c (calculate_must_precede_follow,
try_scheduling_node_in_cycle): New functions.
(sms_schedule_by_order): Call the new functions.
(ps_insn_find_column): Use must_follow and must_precede only if
they are not NULL.
(ps_insn_advance_column): Likewise.
2007-12-02 Ayal Zaks <>
Revital Eres <>
* modulo-sched.c (get_sched_window): Fix the direction of the
scheduling window and add dump info.
2007-12-02 Samuel Tardieu <>
* config/sh/ (cmpgeusi_t): Fix condition.
2007-11-30 Jan Hubicka <>
* ggc-common.c (dump_ggc_loc_statistics): Reset ggc_force_collect flag.
2007-11-30 Seongbae Park <>
PR rtl-optimization/34171
* cfgrtl.c (update_bb_for_insn_chain): New function,
refactored from update_bb_for_insn.
(update_bb_for_insn): Call update_bb_for_insn.
(rtl_merge_blocks, try_redirect_by_replacing_jump):
Replace a loop with update_bb_for_insn_chain call.
(cfg_layout_merge_blocks): Add a call to
update_bb_for_insn_chain. Replace the for loop
with a call to update_bb_for_insn_chain.
2007-11-30 Ben Elliston <>
* config/vax/vax.h (ASM_FORMAT_PRIVATE_NAME): Remove. Use default.
2007-11-29 Zdenek Dvorak <>
PR tree-optimization/34244
* tree-vrp.c (adjust_range_with_scev): Clear scev cache.
(record_numbers_of_iterations): New function.
(execute_vrp): Cache the numbers of iterations of loops.
* tree-scalar-evolution.c (scev_reset_except_niters): New function.
(scev_reset): Use scev_reset_except_niters.
* tree-scalar-evolution.h (scev_reset_except_niters): Declare.
2007-11-29 Jan Hubicka <>
Jakub Jelinek <>
PR tree-optimization/33434
* tree-inline.c (setup_one_parameter): If the value passed to
a parameter is never used, don't set it up.
2007-11-29 Jakub Jelinek <>
PR target/32130
* config/rs6000/eabi-cn.asm (__DTOR_END__): Make it weak.
* config/rs6000/sol-cn.asm (__DTOR_END__): Likewise.
2007-11-29 Andris Pavenis <>
* Use separate vpath lines for each path.
2007-11-29 Ben Elliston <>
* SERVICE: Update URL.
2007-11-28 Jakub Jelinek <>
PR tree-optimization/34140
* tree-if-conv.c (if_convertible_phi_p): Fail if BB other than
loop->header has virtual phi nodes.
2007-11-28 Richard Sandiford <>
PR target/32406
* builtins.c (expand_builtin_nonlocal_goto): Also emit a use
of GP register, if valid and fixed.
2007-06-21 David Daney <>
PR target/32406
* config/mips/ (define_constants): Rename UNSPEC_EH_RECEIVER
(exception_receiver): Renamed to ...
(nonlocal_goto_receiver): ... this.
2007-11-27 H.J. Lu <>
Joey Ye <>
PR target/34001
* config/i386/i386.c (function_arg_32): Don't pass aggregate
arguments in ECX/EDX for fastcall.
2007-11-28 Rask Ingemann Lambertsen <>
* config/i386/linux.h (CRT_GET_RFIB_DATA): Add Intel syntax inline
asm to macro.
* config/i386/sco5.h (CRT_GET_RFIB_DATA): Likewise.
* config/i386/sysv4.h (CRT_GET_RFIB_DATA): Likewise.
2007-11-28 Ben Elliston <>
* config/rs6000/aix64.opt (maix64): Add Negative(maix32).
(maix32): Add Negative(maix64).
2007-11-27 Jakub Jelinek <>
PR tree-optimization/34016
* tree-ssa-loop.c (pass_linear_transform): Add
TODO_update_ssa_only_virtuals to todo_flags_finish.
2007-11-27 Eric B. Weddington <>
* config/avr/avr.c (avr_mcu_types): Add atmega32hvb.
* config/avr/avr.h (LINK_SPEC): Likewise.
* config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2007-11-27 Jakub Jelinek <>
PR target/34225
* config/rs6000/rs6000.c (adjacent_mem_locations): Don't assume
MEM_SIZE is set on all MEMs.
2007-11-27 Andreas Krebbel <>
* config/s390/s390.opt (mhard-float): Add the option to be
overridden. That was missing in my last patch.
2007-11-27 Richard Guenther <>
PR tree-optimization/34241
* tree-ssa-forwprop.c (forward_propagate_addr_expr): Make sure
to only delete real conversion chains.
2007-11-27 Andreas Krebbel <>
* config/s390/s390.opt (m31, m64, mesa, mzarch, msoft-float,
mhard-float, mlong-double-64, mlong-double-128): Add the
option to be overridden.
2007-11-27 Richard Guenther <>
* builtins.c (fold_builtin_1): Verify the argument types
(fold_builtin_n): Verify the number of arguments to variadic
built-in functions.
2007-11-27 Bernd Schmidt <>
* config/bfin/elf.h (SUBTARGET_DRIVER_SELF_SPECS): New macro.
* doc/invoke.texi (Blackfin Options): Document the effects.
2007-11-27 Ben Elliston <>
* config/rs6000/sysv4.opt (m32): Add Negative(m64).
(m64): Add Negative(m32).
* config/rs6000/darwin.opt (m32): Add Negative(m64).
(m64): Add Negative(m32).
2007-11-26 Eric Botcazou <>
* tree-ssa-propagate.c (set_rhs) <GIMPLE_MODIFY_STMT>: Fix typo.
2007-11-26 Michael Meissner <>
PR target/34077
* config/i386/i386.c (ix86_expand_movmem): If the copy size is a
constant, avoid calling emit_cmp_and_jump_insns. Use counter_mode
to get the mode for loading a pseudo register with a count rather
than duplicating code.
2007-11-25 Eric B. Weddington <>
* config/avr/avr.c (avr_mcu_types): Add atmega1284p.
* config/avr/avr.h (LINK_SPEC): Likewise.
* config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2007-11-26 Manuel Lopez-Ibanez <>
* c-common.c (conversion_warning): Use get_unwidened instead of
2007-11-26 Manuel Lopez-Ibanez <>
PR c/23722
* c-parser.c (struct c_parser): New bit in_if_block.
(c_parser_compound_statement_nostart): Handle unexpected 'else'
(c_parser_statement_after_labels): Set in_if_block to false while
(c_parser_if_body): Don't call c_parser_statement_after_labels if
a semicolon is found, just consume it. Don't call
c_parser_statement_after_labels if an open brace is found, call
c_parser_compound_statement instead.
(c_parser_else_body): New.
(c_parser_if_statement): Set in_if_block to true when parsing the
body of the 'if' statement. Use c_parser_else_body.
2007-11-26 Andreas Krebbel <>
PR c++/34081
* c-decl.c (store_parm_decls): Pass 'false' for the new
allocate_struct_function parameter.
* cgraphunit.c (cgraph_build_static_cdtor): Likewise.
* tree-parloops.c (create_loop_fn): Likewise.
* function.c (push_function_context_to, push_struct_function,
init_function_start): Likewise.
(allocate_struct_function): Add boolean parameter.
* tree.h (allocate_struct_function): Add boolean parameter.
* function.h (struct function): Move returns_struct and
returns_pcc_struct to the end of the structure definiton.
2007-11-26 Uros Bizjak <>
PR target/34215
* config/i386/ (truncdfsf2): Select SLOT_TEMP stack slot if
virtual registers are already instantiated.
(truncxf<mode>2): Ditto.
(floatsi<mode>2): Ditto.
(floatdisf2): Ditto.
(floatdidf2): Ditto.
2007-11-26 Rask Ingemann Lambertsen <>
PR target/34174
* config/fr30/fr30.c (fr30_move_double): Sanitize mem->reg case. Copy
the address before it is clobbered.
2007-11-26 Nick Clifton <>
* config/mn10300/ (call_internal): Remove mode on
operand 0 in order to match UNPSEC'ed calls generated in PIC mode.
(call_value_internal): Remove mode on operands 0 and 1 in order to
match UNPSEC'ed calls generated in PIC mode.
(GOTaddr2picreg): Use copy_rtx to prevent sharing an rtx between
two insns.
2007-11-26 Richard Guenther <>
PR middle-end/34233
* builtins.c (expand_builtin_pow): Use expand_expr to expand
the result of build_call_expr.
2007-11-26 Steven Bosscher <>
Revital Eres <>
PR middle-end/34085
* bb-reorder.c (insert_section_boundary_note): Clear
2007-11-26 Richard Sandiford <>
* config/mips/elfoabi.h (DRIVER_SELF_SPECS): Add missing comma.
2007-11-26 Alexandre Oliva <>
* dwarf2asm.c (splay_tree_compare_strings): New function.
(dw2_force_const_mem): Use it.
2007-11-26 Alexandre Oliva <>
* tree.c (type_hash_add): Don't violate strict aliasing rules.
2007-11-26 Alexandre Oliva <>
PR c/27898
* c-typeck.c (tagged_types_tu_compatible_p): Enable exact
matches between anonymous union fields.
2007-11-26 Alexandre Oliva <>, Jan Hubicka <>
* tree-ssa-live.c (remove_unused_scope_block_p): Drop
declarations and blocks only after inlining. Check that
non-empty blocks are not dropped.
* tree-inline.c (expand_call_inline): Check that functions are
not inlined too late.
2007-11-26 Ben Elliston <>
* unwind-dw2-fde.c: Fix comment typo.
* unwind-generic.h: Likewise, fix comment typos.
2007-11-25 Richard Sandiford <>
* tree-sra.c (scalarize_use): Adjust the vpos argument to
sra_explode_bitfield_assignment in cases where the type is
wider than the bitfield.
2007-11-25 Richard Guenther <>
* tree.h (struct tree_block): Move locus member next to flags.
(pop_scope): Likewise.
* function.c (instantiate_decls_1): Likewise.
(setjmp_vars_warning): Likewise.
* emit-rtl.c (set_used_decls): Likewise.
* tree-inline.c (add_lexical_block): Likewise.
2007-11-24 Hans-Peter Nilsson <>
* rtlanal.c (label_is_jump_target_p): Return true for a matching
* reorg.c (fill_slots_from_thread): Correct last change to use
NULL_RTX, not NULL. Outside of REG_NOTES loop, increase and
decrease LABEL_NUSES for JUMP_LABEL (trial), not XEXP (note, 0).
* jump.c (mark_jump_label_1): Add comment for last change
regarding JUMP_LABEL setting.
* gcse.c (add_label_notes): Remove conditional that the label is
mentioned in insn before adding regnote.
* sched-rgn.c (is_cfg_nonregular): Don't return 1 for a
single_set insn only feeding a label to a jump through a
register that dies there.
2007-11-23 Dirk Mueller <>
Richard Guenther <>
PR middle-end/34197
* tree-vrp.c (check_array_ref): Move check for valid location..
(check_array_bounds) here. Use EXPR_HAS_LOCATION().
2007-11-23 Hans-Peter Nilsson <>
* reload.c (find_reloads_address_1) <autoincdec cases>:
Call REG_OK_FOR_CONTEXT with the autoincdec code, not outer_code.
2007-11-23 Richard Guenther <>
Michael Matz <>
PR tree-optimization/34176
* alloc-pool.h (empty_alloc_pool): Declare.
* alloc-pool.c (empty_alloc_pool): New function.
* tree-ssa-sccvn.c (vn_reference_lookup): Also lookup from the
valid table if a lookup from the optimistic table failed.
(vn_unary_op_lookup): Likewise.
(vn_binary_op_lookup): Likewise.
(vn_phi_lookup): Likewise.
(process_scc): Clear optimistic tables before every iteration.
2007-11-23 Richard Guenther <>
* tree-ssa-copy.c (may_propagate_copy): Remove redundant checks.
(merge_alias_info): Do verification only if checking is
enabled. Merge flow-sensitive alias information in simple cases.
* tree-ssa-operands.c (get_addr_dereference_operands): Also
complain about missing NMTs.
2007-11-23 Jakub Jelinek <>
PR c++/34198
* c-common.c (conversion_warning): For INTEGER_TYPE to
INTEGER_TYPE conversions call get_narrower on expr to avoid
spurious warnings from binop shortening or when the implicit
conversion can't change the value.
2007-11-22 Joseph Myers <>
PR c/14050
* c-decl.c (set_array_declarator_inner): Don't give error for
static or type qualifiers in abstract declarator. Remove
abstract_p parameter.
* c-tree.h (set_array_declarator_inner): Update prototype.
* c-parser.c (c_parser_direct_declarator_inner): Update call to
* doc/standards.texi: Update for C99 TC3.
2007-11-22 Hans-Peter Nilsson <>
* config/mmix/mmix.c (mmix_encode_section_info): Remove duplicate
line in my edit of the last change.
2007-11-22 Jakub Jelinek <>
PR target/33947
* config/arm/arm.c (arm_init_tls_builtins): Set TREE_NOTHROW
and TREE_READONLY on the fn decl rather than passing a chain
of attributes.
2007-11-22 Kaz Kojima <>
* config/sh/ (divsi_inv_m3): Handle zero dividend specially.
2007-11-22 Uros Bizjak <>
* config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Change checking
of ix86_arch and ix86_tune into a switch statement.
(enum processor_type): Default PROCESSOR_I386 to 0.
* config/i386/i386.c (ix86_decompose_address): Use TARGET_K6 instead
of "ix86_tune == PROCESSOR_K6".
(ia32_multipass_dfa_lookahead): Change checking of ix86_tune into
a switch statement.
2007-11-22 Tom Tromey <>
* config/mmix/mmix.c (mmix_encode_section_info): Use alloca to
avoid writing into string allocated by ggc_alloc_string.
2007-11-21 Kaz Kojima <>
PR target/34155
* config/sh/ (binary_sf_op): Remove.
(binary_sf_op0, binary_sf_op1): New define_insn_and_split.
* config/sh/sh.c (sh_expand_binop_v2sf): Use gen_binary_sf_op0
and gen_binary_sf_op1.
2007-11-21 Hans-Peter Nilsson <>
* regclass.c (init_reg_autoinc): Fix typo preventing test of
secondary output reload when setting forbidden_inc_dec_class.
2007-11-21 Richard Guenther <>
PR tree-optimization/34148
* tree-ssa-structalias.c (create_variable_info_for): Do not use
field-sensitive PTA for single-element structures.
* tree-ssa-alias.c (create_overlap_variables_for): Do not create
SFTs for single-element structures.
2007-11-20 Richard Guenther <>
PR middle-end/34154
* gimplify.c (gimplify_switch_expr): Use tree_int_cst_lt instead
of the signed INT_CST_LT.
* stmt.c (expand_case): Likewise.
(estimate_case_costs): Likewise.
2007-11-20 Rask Ingemann Lambertsen <>
* read-rtl.c (fatal_expected_char): Print EOF as text rather that
its binary representation.
2007-11-20 Richard Guenther <>
* tree-ssa-operands.c (add_virtual_operand): Consistently prune
2007-11-20 Thiemo Seufer <>
* config/mips/mips.c (mips_file_start): Add support for
flagging 32-bit code with -mfp64 floating-point.
2007-11-20 Jakub Jelinek <>
PR c/34146
* c-gimplify.c (optimize_compound_literals_in_ctor): New function.
(c_gimplify_expr): Use it.
2007-11-20 Ben Elliston <>
* config/spu/spu_mfcio.h: Fix typo.
2007-11-20 Ben Elliston <>
* Comment that unwind-sjlj.c includes this file.
2007-11-20 Ulrich Weigand <>
Ben Elliston <>
* config/spu/mfc_tag_release.c: New file.
* config/spu/mfc_multi_tag_release.c: Likewise.
* config/spu/mfc_multi_tag_reserve.c: Likewise.
* config/spu/mfc_tag_release.c: Likewise.
* config/spu/mfc_tag_reserve.c: Likewise.
* config/spu/mfc_tag_table.c: Likewise.
* config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Compile them.
* config/spu/spu_mfcio.h: Avoid <stdint.h>.
(uint64_t): Typedef if __IN_LIBGCC2 is defined.
(mfc_tag_reserve, mfc_tag_release, mfc_multi_tag_reserve,
mfc_multi_tag_release): Likewise.
(__mfc_tag_reserve, __mfc_tag_release, __mfc_multi_tag_reserve,
__mfc_multi_tag_release): Declare.
2007-11-19 Jason Merrill <>
PR debug/28834, debug/29436, c/32326
* tree.c (build_type_attribute_qual_variant): Refuse to make
a distinct copy of a struct/enum type. Use build_distinct_type_copy.
* doc/extend.texi (Type Attributes): Don't encourage people to add
attributes to struct/enum types in a typedef. Fix
transparent_union example.
* tree-inline.c (remap_type_1): Remove code that's redundant with
(build_duplicate_type): Set id.copy_decl.
* c-common.c (handle_transparent_union_attribute): Simplify logic.
2007-11-19 Peter Bergner <>
* config/rs6000/rs6000.c (invalid_e500_subreg,
rs6000_legitimate_offset_address_p, legitimate_lo_sum_address_p,
rs6000_legitimize_address, rs6000_legitimize_reload_address,
rs6000_legitimate_address, function_arg_advance,
spe_build_register_parallel, rs6000_spe_function_arg,
rs6000_split_multireg_move, spe_func_has_64bit_regs_p,
emit_frame_save, gen_frame_mem_offset, rs6000_function_value,
rs6000_libcall_value, rs6000_dwarf_register_span): Handle DDmode and
TDmode similarly to DFmode and TFmode.
* config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
2007-11-19 Eric Botcazou <>
* stor-layout.c (lang_adjust_rli): Delete.
(set_lang_adjust_rli): Likewise.
(layout_type): Do not call lang_adjust_rli hook.
* tree.h (set_lang_adjust_rli): Delete.
2007-11-19 Bernd Schmidt <>
* config/bfin/bfin.c (must_save_p): New function, mostly broken out of
n_dregs_to_save and n_pregs_to_save.
(n_pregs_to_save, n_dregs_to_save): Use it. New argument CONSECUTIVE;
all callers changed.
(expand_prologue_reg_save, expand_epilogue_reg_restore): Enhance to be
able to save single D/P registers that aren't saved by the push/pop
multiple insns.
2007-11-19 Richard Guenther <>
PR tree-optimization/34099
* tree-ssa-ccp.c (likely_value): Exclude all but PLUS_EXPR,
if only one operand is undefined.
2007-11-19 Eric Botcazou <>
PR tree-optimization/34036
* opts.c (set_fast_math_flags): Do not set flags in common
with set_unsafe_math_optimizations_flags, invoke it directly.
(set_unsafe_math_optimizations_flags): Unset flag_trapping_math
and flag_signed_zeros.
* toplev.c (process_options): Force flag_associative_math to 0 and
warn, if it is set and either flag_trapping_math or flag_signed_zeros
is set too.
* doc/invoke.texi (Optimize Options): Document the new behavior
of -funsafe-math-optimizations, that -fassociative-math requires
both -fno-signed-zeros and -fno-trapping-math and make it clear
that -fno-trapping-math requires -fno-signaling-nans. Refactor
documentation of -ffast-math.
2007-11-18 Jakub Jelinek <>
PR rtl-optimization/34132
* gcse.c (try_replace_reg): Avoid rtx sharing between REG_EQUAL note
and insn.
PR middle-end/33335
* optabs.h (optab_table): Change type to struct optab from optab.
(convert_optab_table): Similarly.
Adjust all _optab macros to expand to addresses of optab_table
resp. convert_optab_table elements rather than the values of the
* optabs.c (optab_table): Change typype to struct optab from optab.
If compiled by recent GCC, initialize all the insn_code fields in
the array using designated range initializers.
(convert_optab_table): Similarly.
(convert_optab_libfunc, optab_libfunc, set_optab_libfunc,
set_conv_libfunc): Into libfunc_entry's optab field store index within
optab_table resp. convert_optab_table array instead of difference
between two separately malloced addresses.
(new_optab): Add op argument, don't return anything. Initialize
just the insn_code field in handlers array and only when needed.
(init_optab, init_optabv): Add op argument, don't return anything.
Adjust new_optab caller.
(new_convert_optab): Removed.
(init_convert_optab): Add op argument, don't return anything, don't
call new_convert_optab. If needed, initialize insn_code field in
handlers array.
(init_optabs): Adjust init_optab, init_optabv and init_convert_optab
(debug_optab_libfuncs): Adjust uses of optab_table and
convert_optab_table arrays.
2007-11-18 Richard Guenther <>
PR tree-optimization/34127
* tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
Make code match up the comments, require compatibility of the
pointed-to types.
2007-11-17 Richard Guenther <>
PR middle-end/34130
* fold-const.c (extract_muldiv_1): Do not move negative
constants inside ABS_EXPR.
2007-11-16 Ian Lance Taylor <>
* collect2.c (dump_file): If a demangled symbol is followed by a
space, make sure we output at least one space.
2007-11-16 Richard Guenther <>
PR middle-end/34030
* fold-const.c (fold_binary): Use correct types for folding
1 << X & Y to Y >> X & 1.
2007-11-16 Richard Guenther <>
PR tree-optimization/33870
* tree.h (struct tree_memory_tag): Add base_for_components flag.
(struct tree_struct_field_tag): Remove nesting_level field.
* tree-flow.h (struct fieldoff): Remove nesting_level field. Add
base_for_components flag.
(push_fields_onto_fieldstack): Remove nesting_level parameter.
* tree-ssa-alias.c (create_sft): Likewise. Add base_for_components
(create_overlap_variables_for): Deal with it.
* tree-dfa.c (dump_subvars_for): Likewise.
(dump_variable): Likewise.
* tree-ssa-structalias.c (push_fields_onto_fieldstack): Likewise.
Set base_for_components for first elements of sub-structures.
(create_variable_info_for): Handle base_for_components.
(set_uids_in_ptset): Always set SFT_UNPARTITIONABLE_P for
pointed-to SFTs if SFT_BASE_FOR_COMPONENTS_P is set.
* tree-ssa-operands.c (ref_nesting_level): Remove.
(add_vars_for_offset): Remove full_ref parameter, always add
the offset of the pointed-to SFT.
(add_virtual_operand): Adjust for changed signature of
2007-11-16 Sa Liu <>
* config/spu/ (floatunssidf2, floatunsdidf2): Inlined
floatunssidf2 and floatunsdidf2.
2007-11-16 Richard Guenther <>
PR tree-optimization/34113
* tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
Use correct conversion direction for checking type compatibility.
2007-11-16 Richard Guenther <>
PR tree-optimization/34099
* tree-ssa-ccp.c (likely_value): Use a whitelist for operators
that produce UNDEFINED result if at least one of its operands
is UNDEFINED. By default the result is only UNDEFINED if all
operands are UNDEFINED.
2007-11-16 Jakub Jelinek <>
PR driver/30460
* gcc.c (init_spec): Don't initialize asm_debug here...
(main): ... but here.
2007-11-07 Tom Tromey <>
* tree-ssa-structalias.c (ipa_pta_execute): Rename 'cfun' to 'func'.
* tree-parloops.c (create_loop_fn): Use set_cfun.
* gengtype.c (open_base_files): Emit #undef cfun.
* ipa-struct-reorg.c (do_reorg_1): Use set_cfun.
* function.h (cfun): New define.
* function.c: Undefine cfun.
2007-11-07 Eric B. Weddington <>
* config/avr/avr.c (avr_mcu_types): Add attiny88.
* config/avr/avr.h (LINK_SPEC): Likewise.
* config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2007-11-15 Jakub Jelinek <>
PR middle-end/23848
* tree-ssa-ccp.c (optimize_stack_restore): New function.
(execute_fold_all_builtins): Call optimize_stack_restore for
2007-11-15 Paolo Bonzini <>
* fwprop.c (try_fwprop_subst): Skip profitability check for forward
propagation into an address; that's done in should_replace_address.
2007-11-15 Ulrich Weigand <>
* config/spu/spu-protos.h (legitimate_const): Remove prototype.
* config/spu/spu.c (legitimate_const): Remove.
(classify_immediate): Inline call to legitimate_const.
(spu_legitimate_address): Likewise. Allow SYMBOL_REF + CONST_INT
for any constant, not just -512 .. 511.
2007-11-15 Sa Liu <>
* config/spu/spu.c (spu_emit_branch_or_set): Remove PROCESSOR_CELL
condition from HONOR_NANS test.
* config/spu/ (ceq_df): Always generate comparison code
inline, including checks for NaNs and infinities.
(cgt_df): Likewise.
(cgt_v2df): Likewise.
(cmpdf): Make this expander unconditional.
2007-11-15 Richard Guenther <>
* tree-ssa-alias.c (create_overlap_variables_for): Make sure
to only create SFTs if we also create variable infos for PTA.
* tree-ssa-structalias.c (set_uids_in_ptset): Add all overlapping SFTs.
2007-11-15 Richard Guenther <>
* tree-ssa-structalias.c (set_uids_in_ptset): Use the pointed-to
type for TBAA pruning.
(find_what_p_points_to): Call set_uids_in_ptset with the original
pointer, not the decl of the solution we collapsed to.
2007-11-14 David Daney <>
* config/mips/linux-unwind.h (mips_fallback_frame_state): Use CFA
to find sigcontext.
2007-11-14 Eric Botcazou <>
PR target/33923
* config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Forbid mode changes
for registers in BR_REGS class.
2007-11-14 Jakub Jelinek <>
PR middle-end/34088
* tree-ssa.c (delete_tree_ssa): Don't call fini_ssa_operands if
init_ssa_operands has not been called for cfun.
2007-11-14 Eric Botcazou <>
PR tree-optimization/34046
* cfg.c (update_bb_profile_for_threading): Avoid the division for the
scaling if the old probability is greater than the new base.
2007-11-14 Sebastian Pop <>
* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Remove
unused edges after loop duplication.
2007-11-14 Uros Bizjak <>
* config/i386/i386.h (TARGET_CPU_DEFAULT_*): Substitute with ...
(enum target_cpu_default): ... this enum.
(TARGET_CPU_DEFAULT_NAMES): Remove macro. Move initializer to ...
* config/i386/i386.c (override_options): ... here.
* config/i386/i386-interix.h (TARGET_CPU_DEFAULT): Use
2007-11-14 Rask Ingemann Lambertsen <>
* global.c (rest_of_handle_global_alloc): Fix comment typos.
* config/sh/sh.c (sh_rtx_costs): Likewise.
* ChangeLog: Likewise.
2007-11-13 Sebastian Pop <>
* tree-chrec.h (build_polynomial_chrec): RHS of a chrec
should not be of pointer type.
2007-11-13 Michael Meissner <>
* config/i386/i386.c (ix86_sse5_valid_op_p): Put type on separate line.
2007-11-13 Sterling Augustine <>
Bob Wilson <>
* config/xtensa/unwind-dw2-xtensa.c: New.
* config/xtensa/unwind-dw2-xtensa.h: New.
* config/xtensa/xtensa.h (MUST_USE_SJLJ_EXCEPTIONS): Remove.
* config/xtensa/ (UNSPECV_EH_RETURN): Define.
(eh_return): New.
* config/xtensa/t-xtensa (LIB2ADDEH): Define.
2007-11-13 Jakub Jelinek <>
* doc/invoke.texi: Fix description of -fsched-stalled-insns=0,
PR tree-optimization/34063
* tree-chrec.c (chrec_evaluate): Put CHREC_LEFT based argument
as first chrec_fold_plus operand rather than second.
2007-11-13 Diego Novillo <>
PR tree-optimization/33870
* tree.h (strcut tree_memory_tag): Add field unpartitionable.
Remove field in_nested_struct.
(struct tree_struct_field_tag): Add field nesting_level.
(sft_in_nested_struct): Remove.
(sft_nesting_level): Define.
(sft_unpartitionable_p): Define.
* tree-ssa-alias.c (mem_sym_score): If mp->var is not
partitionable, return long_max.
(compute_memory_partitions): Do not partition sfts marked
(create_sft): Add argument nesting_level. Set
sft_nesting_level with it. Update all users.
(create_overlap_variables_for): Show nesting level.
* tree-dfa.c (dump_subvars_for): Likewise.
(dump_variable): Likewise. Show whether the sft is
partitionable or not.
* tree-flow.h (struct fieldoff): Remove field in_nested_struct.
Add field nesting_level.
* tree-ssa-structalias.c (struct variable_info): Remove
field in_nested_struct.
(push_fields_onto_fieldstack): Add argument nesting_level.
Update all users. Update documentation. Update pair->nesting_level
with nesting_level. Make recursive calls with nesting_level + 1.
(set_uids_in_ptset): If an sft is added to the points-to set,
mark it as unpartitionable.
* tree-ssa-operands.c (ref_nesting_level): New.
(add_vars_for_offset): Call it. Add argument full_ref. Update
callers. If var is inside a nested structure and the nesting level
of full_ref is lower than the nesting level of var,
adjust offset by the offset of var.
2007-11-13 Victor Kaplansky <>
PR tree-optimization/32582
* (CRTSTUFF_CFLAGS): Add -fno-tree-vectorize
2007-11-12 Danny Smith <>
* doc/extend.texi (dllimport): Document that pointers to dllimport'd
functions can be used as constant.
2007-11-12 Eric Botcazou <>
PR rtl-optimization/34035
* cse.c (cse_cfg_altered): New global variable.
(cse_jumps_altered): Make boolean.
(recorded_label_ref): Likewise.
(cse_insn): Adjust for above changes.
(cse_extended_basic_block): Likewise. Set cse_cfg_altered
if dead edges have been purged.
(cse_main): Change return value specification and adjust code.
(rest_of_handle_cse): Adjust for above change.
(rest_of_handle_cse2): Likewise.
* gcse.c (rest_of_handle_gcse): Likewise.
2007-11-12 Dwarakanath Rajagopal <>
Michael Meissner <>
* config/i386/ (sse5_setcc<mode>): Use <ssemodefsuffix> to
get the appropriate suffix for the coms* instruction.
(sse5_pcmov_<mode>): Restrict operands of pcmov
for scalar case to be only xmm registers and not memory.
* config/i386/ (sse5_pcmov_<mode>): Correct the operand
constraints to follow the mnemonics for the pcmov instruction
2007-11-12 Richard Sandiford <>
PR target/34042
* config/mips/mips.c (mips_return_fpr_single): New function.
(mips_function_value): Use it when returning single-field
aggregates in FPRs.
(mips_expand_call): Handle the PARALLELs created by
2007-11-12 Richard Guenther <>
PR middle-end/34070
* fold-const.c (fold_binary): If testing for non-negative
operands with tree_expr_nonnegative_warnv_p make sure to
use op0 which has all (sign) conversions retained.
2007-11-12 Richard Guenther <>
PR middle-end/34027
* fold-const.c (fold_binary): Fold n - (n / m) * m to n % m.
(fold_binary): Fold unsinged FLOOR_DIV_EXPR to TRUNC_DIV_EXPR.
2007-11-12 Ira Rosen <>
PR tree-optimization/33953
* tree-vect-transform.c (vectorizable_operation): In case of SLP,
allocate vec_oprnds1 according to the number of created vector
statements. In case of shift with scalar argument, store scalar
operand for every vector statement to be created for the SLP node.
Fix a comment.
2007-11-10 Steven Bosscher <>
* gcse.c (CUID_INSN): Remove.
(cuid_insn): Ditto.
(alloc_gcse_mem): Don't allocate cuid_insn.
(free_gcse_mem): Don't free cuid_insn.
2007-11-10 Jakub Jelinek <>
PR fortran/34020
* gimplify.c (goa_lhs_expr_p): Inside INDIRECT_REF handle unshared
PR middle-end/34018
* tree-inline.h (copy_body_data): Add regimplify field.
* tree-inline.c (copy_body_r): Set id->regimplify to true
if an TREE_INVARIANT ADDR_EXPR is no longer invariant after
(copy_bb): Clear id->regimplify before walk_tree, if it is
set afterwards, regimplify the whole statement.
PR tree-optimization/33680
* tree-data-ref.c (split_constant_offset) <case ADDR_EXPR>: Punt
if the added cast involves variable length types.
2007-11-09 Alexander Monakov <>
Maxim Kuvyrkov <>
* sched-deps.c (sched_analyze_insn): Use MOVE_BARRIER
instead of TRUE_BARRIER for jumps. Add register dependencies
even when reg_pending_barrier is set.
2007-11-09 Alexander Monakov <>
* haifa-sched.c (haifa_classify_insn): Rename to ...
(haifa_classify_rtx): ... this. Improve handling of COND_EXECs,
handle PARALLELs by recursing. Use it ...
(haifa_classify_insn): ... here. Reimplement.
2007-11-09 Richard Guenther <>
* bitmap.h (bitmap_single_bit_set_p): Declare.
* bitmap.c (bitmap_single_bit_set_p): New function.
* tree-ssa-alias.c (add_may_alias_for_new_tag): Use it.
(maybe_create_global_var): Use bitmap_empty_p.
2007-11-09 Paolo Bonzini <>
Jakub Jelinek <>
PR rtl-optimization/34012
* fwprop.c (try_fwprop_subst): Do not replace if the new
SET_SRC has a higher cost than the old one.
2007-11-09 Eric Botcazou <>
PR rtl-optimization/33732
* reload.c (push_reload): Check that the REG_DEAD note was referring
to a hardreg or to a pseudo that has been assigned exactly one hardreg
before considering it in order to select the reload register.
(combine_reloads): Likewise.
(find_dummy_reload): Likewise.
2007-11-09 Richard Guenther <>
* tree-flow.h (struct ptr_info_def): Make escape_mask a ENUM_BITFIELD.
(struct ptr_info_def): Likewise.
(enum escape_type): Also use bit zero.
2007-11-09 Richard Guenther <>
PR tree-optimization/33604
* tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
Disregard changes in CV qualifiers of pointed to types for
forward propagating ADDR_EXPRs.
* tree-ssa-ccp.c (fold_stmt_r): Preserve volatileness of the original
2007-11-09 Richard Sandiford <>
* dse.c (find_shift_sequence): Always choose an integer mode for
(replace_read): Require both the read and store mode to be
integer ones. Remove a then-redundant FLOAT_P check.
2007-11-08 Richard Guenther <>
* tree-dfa.c (remove_referenced_var): If removing a
variable which has subvars, also remove those from
the referenced vars. Do not create a variable annotation.
2007-11-08 Bob Wilson <>
* config/xtensa/xtensa.c (xtensa_expand_prologue): Remove first
argument for gen_entry calls.
* config/xtensa/ Add new "entry" value to "type" attribute.
(entry): Use the new attribute value. Remove unused first operand.
2007-11-08 Tom Tromey <>
* c-parser.c (c_parser_translation_unit): Use location in error.
(c_parser_external_declaration): Likewise.
(c_parser_declaration_or_fndef): Likewise.
(c_parser_enum_specifier): Likewise.
(c_parser_struct_or_union_specifier): Likewise.
(c_parser_struct_declaration): Likewise.
(c_parser_typeof_specifier): Likewise.
(c_parser_parms_list_declarator): Likewise.
(c_parser_asm_string_literal): Likewise.
(c_parser_braced_init): Likewise.
(c_parser_initelt): Likewise.
(c_parser_compound_statement_nostart): Likewise.
(c_parser_statement_after_labels): Likewise.
(c_parser_do_statement): Likewise.
(c_parser_asm_statement): Likewise.
(c_parser_conditional_expression): Likewise.
(c_parser_unary_expression): Likewise.
(c_parser_sizeof_expression): Likewise.
(c_parser_postfix_expression): Likewise.
(c_parser_postfix_expression_after_paren_type): Likewise.
(c_parser_objc_class_instance_variables): Likewise.
(c_parser_objc_method_definition): Likewise.
(c_parser_objc_methodprotolist): Likewise.
(c_parser_pragma): Likewise.
(c_parser_omp_clause_num_threads): Likewise.
(c_parser_omp_clause_schedule): Likewise.
(c_parser_omp_all_clauses): Likewise.
(c_parser_omp_sections_scope): Likewise.
(c_parser_label): Use location of label, not colon.
2007-11-08 Danny Smith <>
PR target/33774
* config/i386/cygming.h (BIGGEST_FIELD_ALIGNMENT): Define only if
2007-11-07 Kenneth Zadeck <>
PR middle-end/33826
* ipa-pure-const.c (static_execute): Added code to keep recursive
functions from being marked as pure or const.
* ipa-utils.c (searchc): Fixed comment.
2007-11-08 Tom Tromey <>
* common.opt (fshow-column): Default to 0.
* configure: Rebuilt.
* (--enable-mapped-location): Default to 'yes'.
2007-11-07 Kenneth Zadeck <>
* common.opt: Add pointer to doc/options.texi.
* doc/invoke.texi (-fdse, -fdce, -fauto-inc-dec, -fipa-pure-const,
-fipa-reference): Add or correct doc. Sorted options list for -Os
-O, -O2.
2007-11-07 Bernhard Fischer <>
PR target/16350
* config.gcc: For arm*b-* define TARGET_BIG_ENDIAN_DEFAULT.
* config/arm/linux-elf.h (TARGET_ENDIAN_DEFAULT): Define based on
(LINUX_TARGET_LINK_SPEC): Pass -mlittle-endian on to the assembler.
* config/arm/linux-eabi.h (TARGET_LINKER_EMULATION): Set according
* config/arm/bpabi.h (TARGET_DEFAULT_MASK): Set according
2007-11-07 Diego Novillo <>
* tree.h (struct tree_struct_field_tag): Move field
in_nested_struct ...
(struct tree_memory_tag): ... here.
2007-11-07 Diego Novillo <>
PR 33870
* tree.h (struct tree_struct_field_tag): Add field in_nested_struct.
* tree-dfa.c (dump_subvars_for): Show offset of each sub-var.
* tree-flow.h (struct fieldoff): Add field in_nested_struct.
* tree-ssa-structalias.c (struct variable_info): Likewise.
(push_fields_onto_fieldstack): If OFFSET is positive,
set in_nested_struct.
(create_variable_info_for): Copy setting of
in_nested_struct from the field offset object.
(set_uids_in_ptset): Set SFT_IN_NESTED_STRUCT from the
variable info object.
* tree-ssa-operands.c (add_vars_for_offset): If VAR
belongs to a nested structure, adjust OFFSET by SFT_OFFSET(VAR).
2007-11-07 Eric Botcazou <>
PR rtl-optimization/33737
* cfgcleanup.c (try_crossjump_to_edge): Add count and frequency of
target block after computing the probabilities of outgoing edges.
Cap the frequency to BB_FREQ_MAX.
* tree-ssa-threadupdate.c (redirect_edges): Also adjust count and
frequency of the basic block if it has been reused.
2007-11-07 Eric Botcazou <>
PR rtl-optimization/33822
* rtl.h (REG_OFFSET): Fix comment.
* var-tracking.c (INT_MEM_OFFSET): New macro.
(var_mem_set): Use it.
(var_mem_delete_and_set): Likewise.
(var_mem_delete): Likewise.
(same_variable_part_p): Likewise.
(vt_get_decl_and_offset): Likewise.
(offset_valid_for_tracked_p): New predicate.
(count_uses): Do not track locations with invalid offsets.
(add_uses): Likewise.
(add_stores): Likewise.
2007-11-07 Tom Tromey <>
* (tree-ssa-structalias.o): Depend on $(FUNCTION_H)
(BASIC_BLOCK_H): Add vec.h, $(FUNCTION_H).
2007-11-07 Dmitry Zhurikhin <>
Andrey Belevantsev <>
* modulo-sched.c (sms_order_nodes, permute_partial_schedule,
generate_prolog_epilog, duplicate_insns_of_cycles): Fix prototypes.
(calculate_order_params, sms_order_nodes): New parameter pmax_asap.
Save calculated max_asap in it.
(sms_schedule): Calculate maxii using max_asap.
2007-11-07 Andreas Krebbel <>
* doc/invoke.texi: Replace rs6000 dfp switches -mdfp/-mno-dfp
with -mhard-dfp/-mno-hard-dfp.
2007-11-07 Maxim Kuvyrkov <>
Jakub Jelinek <>
PR middle-end/33670
* haifa-sched.c (check_sched_flags): Remove.
(sched_init): Don't call it.
2007-11-06 Diego Novillo <>
* tree-flow.h (struct fieldoff): Reformat comment. Document fields.
* tree-ssa-operands.c: Tidy top-level comments.
(add_vop): Likewise.
(add_vars_for_offset): Tidy parameter formatting..
(get_addr_dereference_operands): Likewise.
(get_indirect_ref_operands): Likewise.
(get_expr_operands) <OMP_ATOMIC_LOAD>: Reformat.
2007-11-06 Rask Ingemann Lambertsen <>
PR target/32787
* config/i386/driver-i386.c: Test for __GNUC__ instead of
GCC_VERSION which is always defined.
2007-11-06 Ulrich Weigand <>
PR target/30961
* reload.c (find_reloads): Also check in_reg when handling a
simple move with an input reload and a destination of a hard
2007-11-06 Maxim Kuvyrkov <>
* config/m68k/m68k.c (sched-int.h, insn-codes.h): New includes.
(m68k_sched_attr_type2): New function.
(sched_adjust_cost_state): New static variable.
(m68k_sched_adjust_cost): New static function implementing
scheduler hook.
(sched_ib_size, sched_ib_filled, sched_ib_insn, sched_mem_unit_code):
New static variables.
(m68k_sched_variable_issue): New static function implementing
scheduler hook.
(sched_dump_class_def, sched_dump_class_func_t): New typedefs.
(sched_dump_split_class): New static function.
(sched_dump_dfa_guess_unit_code, sched_dump_dfa_state): New static
(sched_dump_dfa_class, m68k_sched_dump): New static function.
(m68k_sched_md_init_global, m68k_sched_md_finish_global,
m68k_sched_md_init, m68k_sched_dfa_pre_advance_cycle,
m68k_sched_dfa_post_advance_cycle): New static functions implementing
scheduler hooks.
* config/m68k/m68k.h (m68k_sched_attr_type2): Declare.
* config/m68k/ New file.
* config/m68k/ ( New include.
2007-11-06 Tom Tromey <>
PR c++/32256
PR c++/32368
* function.c (saved_in_system_header): New global.
(push_cfun): Save in_system_header.
(pop_cfun): Restore in_system_header.
(push_struct_function): Save in_system_header.
2007-11-06 Douglas Gregor <>
PR c++/33977
PR c++/33886
* c-common.c (c_build_qualified_type): Moved to c-typeck.c.
(complete_array_type): Set canonical type appropriately.
* c-typeck.c (c_build_qualified_type): Moved from c-common.c. The
C and C++ front ends now have different versions of this function,
because the C++ version needs to maintain canonical types here.
2007-11-04 Razya Ladelsky <>
* tree-parloops.c (reduction_info): Remove reduction_init field.
(initialize_reductions): Remove creation of the reduction_init variable.
(struct data_arg): Remove.
(add_field_for_reduction, create_stores_for_reduction): New functions.
(add_field_for_name): Remove reduction handling.
(separate_decls_in_loop): Call add_field_for_reduction,
2007-11-06 Jakub Jelinek <>
PR tree-optimization/33458
* tree-inline.c (copy_phis_for_bb): If PHI arg substitution creates
!is_gimple_val PHI argument, gimplify it and insert it on edge.
PR tree-optimization/33993
* tree-vect-transform.c (vect_get_constant_vectors): Use build_vector
rather than build_constructor_from_list if all list values are
(get_initial_def_for_induction): Use build_vector instead of
2007-11-05 Mark Mitchell <>
PR target/33579
* tree.c (decl_init_priority_lookup): Remove assert.
(decl_fini_priority_insert): Likewise.
* cgraphunit.c (static_ctors): Make it a VEC.
(static_dtors): Likewise.
(record_cdtor_fn): Adjust accordingly.
(build_cdtor): Generate multiple functions for each initialization
(compare_ctor): New function.
(compare_dtor): Likewise.
(cgraph_build_cdtor_fns): Sort the functions by priority before
calling build_cdtor.
(cgraph_build_static_cdtor): Put the priority in the function's name.
2007-11-05 H.J. Lu <>
PR driver/32632
* common.opt: Add shared and pie.
2007-11-05 Bob Wilson <>
* config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Do not
replace references to virtual_stack_vars_rtx in goto_handler.
2007-11-05 Paul Brook <>
* config.gcc (arm*-*-*): Set c_target_objs and cxx_target_objs.
* config/arm/arm.c (arm_lang_output_object_attributes_hook): New.
(arm_file_start): Don't set Tag_ABI_PCS_wchar_t. Call
* config/arm/arm.h (arm_lang_output_object_attributes_hook): Declare.
(REGISTER_TARGET_PRAGMAS): Call arm_lang_object_attributes_init.
* config/arm/arm-protos.h (arm_lang_object_attributes_init): Add
* config/arm/t-arm.c (arm.o): New rule.
* config/arm/arm-c.c: New file.
2007-11-05 Nick Clifton <>
Sebastian Pop <>
PR tree-optimization/32540
PR tree-optimization/33922
* doc/invoke.texi: Document PARAM_MAX_PARTIAL_ANTIC_LENGTH.
* tree-ssa-pre.c: Include params.h.
(compute_partial_antic_aux): Use PARAM_MAX_PARTIAL_ANTIC_LENGTH
to limit the maximum length of the PA set for a given block.
* Add a dependency upon params.h for tree-ssa-pre.c
* params.def (PARAM_MAX_PARTIAL_ANTIC_LENGTH): New parameter.
2007-11-05 Nathan Sidwell <>
* libgcc2.c (__fixunstfDI, __fixunsxfDI, __fixunsdfDI,
__fixunssfDI): Make return type unsigned.
* libgcc2.h (__fixunstfDI, __fixunsxfDI, __fixunsdfDI,
__fixunssfDI): Make return type unsigned.
2007-11-05 Jakub Jelinek <>
PR tree-optimization/33856
* tree-data-ref.c (get_references_in_stmt): Don't add
REFERENCE_CLASS_P trees to references vector if get_base_address
returns NULL on them.
2007-11-05 Alexandre Oliva <>
* cfg.c (dump_cfg_bb_info): Update bb_bitnames to match enum.
2007-11-04 Andrew Pinski <>
PR middle-end/32931
* fold-const.c (fold_binary <case EQ_EXPR>): Convert the inner type
for TRUTH_NOT_EXPR to type.
2007-11-04 Gerald Pfeifer <>
* doc/contrib.texi (Contributors): Add Manuel Lopez-Ibanez.
2007-11-04 Francois-Xavier Coudert <>
PR fortran/10220
* dwarf2out.c (add_calling_convention_attribute): Change
second argument. Set calling convention to DW_CC_program for
Fortran main program.
(gen_subprogram_die): Adjust to new prototype for
2007-11-03 Dorit Nuzman <>
PR tree-optimization/33987
* tree-vect-transform.c (get_initial_def_for_reduction): Fix assert.
Fix indentation.
(vectorizable_reduction): Add type check.
2007-11-03 Manuel Lopez-Ibanez <>
PR c/29062
* c-parser.c (c_parser_statement_after_labels): Error if a
declaration is parsed after a label.
2007-11-03 Daniel Jacobowitz <>
PR debug/33921
* reorg.c (emit_delay_sequence): Do not clear the locator on
the jump instruction.
2007-11-03 Jakub Jelinek <>
PR middle-end/33670
* haifa-sched.c (ok_for_early_queue_removal): Don't walk out of the
current sched region.
2007-11-02 Jakub Jelinek <>
* config/ia64/ia64.c (struct reg_write_state): Change into
unsigned short bitfields rather than unsigned int, decrease
first_pred to just 10 bits.
(rws_insn): Change into a bitmap or if not ENABLE_CHECKING
into two char array.
(rws_insn_set, rws_insn_test): New functions.
(in_safe_group_barrier): New variable.
(rws_update): Remove first argument, always set rws_sum array.
(rws_access_regno): Use rws_insn_set macro. Only call rws_update
or update rws_sum if !in_safe_group_barrier, adjust rws_update args.
(rtx_needs_barrier): Use rws_insn_test macro.
(safe_group_barrier_needed): Don't save/restore rws_sum array,
instead set/clear in_safe_group_barrier flag.
2007-11-02 Bob Wilson <>
* config/xtensa/xtensa.c (xtensa_expand_prologue): Put a
REG_FRAME_RELATED_EXPR note on the last insn that sets up the stack
pointer or frame pointer.
* config/xtensa/xtensa.h (DWARF_UNWIND_INFO): Delete.
2007-11-02 Tom Tromey <>
* varpool.c (dump_varpool): Use 'next', not 'next_needed' when
traversing pool.
2007-11-02 Diego Novillo <>
* langhooks.h (struct lang_hooks_for_callgraph): Remove third
argument from function pointer ANALYZE_EXPR. Update all users.
* cgraph.c (debug_cgraph_node): New.
(debug_cgraph): New.
2007-11-02 Jakub Jelinek <>
PR rtl-optimization/33648
* cfgrtl.c (cfg_layout_split_edge): Initialize BB_PARTITION of
the newly created basic block.
2007-11-01 Richard Guenther <>
* ggc-page.c (extra_order_size_tab): Add bitmap_head size.
2007-11-01 Steven Bosscher <>
PR rtl-optimization/33828
* gcse.c (compute_code_hoist_vbeinout): Fix order of computation
2007-11-01 Eric Botcazou <>
* optabs.c (prepare_cmp_insn): Merge a couple of conditional blocks.
* sched-rgn.c (compute_trg_info): Zero 'el' local variable.
* tree-if-conv.c (process_phi_nodes): Zero 'cond' local variable.
2007-11-01 Nathan Sidwell <>
* gcc.c (getenv_spec_function): Escape the environment variable's
2007-11-01 Janis Johnson <>
* doc/invoke.texi (Optimize Options): Under -fcse-follow-jumps,
show that CSE means common subexpression elimination. Change wording
for -fsee and define LCM. Remove capitalization of optimizations
for -ftree-reassoc, -ftree-pre, and -ftree-fre.
2007-11-01 Janis Johnson <>
PR testsuite/25352
* doc/sourcebuild.texi (Test Directives): Document that xfail
has no effect for dg-do except when dg-do-what is "run".
2007-11-01 Tom Tromey <>
* c-decl.c (grokdeclarator): Set decl source locations.
* c-parser.c (c_parser_enum_specifier): Set location.
(c_parser_struct_or_union_specifier): Likewise.
2007-11-01 Tom Tromey <>
* print-tree.c (print_node): Print column number.
2007-11-01 Jakub Jelinek <>
PR debug/33537
* dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
gen_decl_die): Use TREE_TYPE (TREE_TYPE (decl)) as type
rather than TREE_TYPE (decl) if DECL_BY_REFERENCE (decl).
PR rtl-optimization/33673
* gcse.c (cprop_jump): If a conditional jump has been optimized
into unconditional jump, make the remaining normal edge fallthru
and delete the jump insn.
2007-11-01 Ben Elliston <>
* emit-rtl.c (set_reg_attrs_from_mem): Clarify function comment.
(set_mem_attrs_from_reg): Likewise.
2007-11-01 Michael Matz <>
PR tree-optimization/33961
* tree-ssa-phiopt.c (struct New member.
(name_to_bb_hash, name_to_bb_eq): Consider and check it.
(add_or_mark_expr): New argument 'store', using it to search
the hash table.
(nt_init_block): Adjust calls to add_or_mark_expr.
2007-10-31 Jakub Jelinek <>
PR target/31507
* config/i386/ (pushsf_rex64): Use X instead of < constraints
for the first push_operand.
2007-10-31 Revital Eres <>
* config/rs6000/ (sminv2sf3, smaxv2sf3, reduc_smax_v2sf,
reduc_smin_v2sf vec_interleave_highv2sf, vec_interleave_lowv2sf,
vec_extract_evenv2sf, vec_extract_oddv2sf, reduc_splus_v2sf,
movmisalignv2sf, vcondv2sf): New.
UNSPEC_EXTODD_V2SF): Define new constants.
* config/rs6000/rs6000-protos.h (paired_expand_vector_move,
paired_emit_vector_cond_expr): New.
* config/rs6000/rs6000-c.c (__PAIRED__): Add new builtin_define.
* config/rs6000/rs6000.c (paired_expand_vector_move,
paired_emit_vector_cond_expr, paired_emit_vector_compare):
New functions.
* config/rs6000/750cl.h (ASM_CPU_SPEC): Pass down -m750cl option.
2007-10-31 Sebastian Pop <>
PR tree-optimization/32377
* tree-data-ref.c (compute_overlap_steps_for_affine_univar): Make it
work also for unknown number of iterations.
(analyze_subscript_affine_affine): Clean up. Don't fail when the
number of iterations is not known.
2007-10-31 Richard Guenther <>
PR middle-end/33779
* fold-const.c (extract_muldiv_1): Make sure to not introduce
new undefined integer overflow.
(fold_binary): Avoid useless conversion.
2007-10-31 Richard Sandiford <>
PR target/33948
* config/mips/mips.c (mips_fpr_return_fields): Fix SCALAR_TYPE_P check.
2007-10-31 Andreas Krebbel <>
* config/rs6000/rs6000.opt: Rename -mdfp option to -mhard-dfp.
* config/s390/s390.c: (override_options): Replace
-mhard-dfp/-msoft-dfp with -mhard-dfp/-mno-hard-dfp.
* config/s390/s390.opt: Likewise.
* config/s390/s390.h: Add MASK_HARD_DFP to the TARGET_DEFAULT
2007-10-30 Janis Johnson <>
* tree-ssa.c (execute_update_addresses_taken): Initialize update_vops.
2007-10-30 Janis Johnson <>
* doc/invoke.texi (Option Summary): Add -fdce and -fdse to list of
optimization options.
(Optimize Options): Add -fdce and -fdse to the list of optimizations
enabled by -O. Document -fdce and -fdse.
2007-10-30 Jakub Jelinek <>
PR c++/33709
* fold-const.c (fold_binary): If one argument is COMPOUND_EXPR,
convert second operand of COMPOUND_EXPR to the original type of
that argument.
2007-10-30 Richard Guenther <>
* tree-ssa-operands.c (add_vars_for_offset): Fix exit test
of loop adding SFTs as virtual operands.
2007-10-30 Richard Guenther <>
* (dse.o): Add $(OPTABS_H) and $(RECOG_H) dependencies.
2007-10-29 Dorit Nuzman <>
PR tree-optimization/32893
* tree-vectorize.c (vect_can_force_dr_alignment_p): Check
2007-10-29 Rask Ingemann Lambertsen <>
* longlong.h (add_ssaaaa): Support Intel asm syntax in i386 and
x86_64 versions.
(sub_ddmmss): Likewise.
(umul_ppmm): Likewise.
(udiv_qrnnd): Likewise.
2007-10-29 Janis Johnson <>
PR testsuite/24841
* doc/sourcebuild.texi (Test Directives): Document that dg-require
directives must come before dg-additional-sources.
2007-10-29 Jakub Jelinek <>
PR tree-optimization/33723
* c-gimplify.c (c_gimplify_expr): Optimize INIT_EXPR or
MODIFY_EXPR with non-addressable COMPOUND_LITERAL_EXPR as source.
2007-10-29 Richard Sandiford <>
PR tree-optimization/33614
* gimplify.c (gimplify_init_constructor): Gimplify vector constructors
if they can't be reduced to VECTOR_CSTs and aren't legitimate
initializer constants.
2007-10-29 Richard Guenther <>
PR tree-optimization/33870
* tree-ssa-operands.c (add_vars_for_offset): Remove mpt_vars parameter.
(add_virtual_operand): Do not recurse into MPTs looking for pointed-to
2007-10-29 Richard Guenther <>
* passes.c (init_optimization_passes): Exchange store_copy_prop
with copy_prop.
* tree-pass.h (pass_store_copy_prop): Remove.
* tree-ssa-copy.c (do_store_copy_prop): Remove.
(stmt_may_generate-copy): Do not handle store_copy_prop.
(get_copy_of_val): Likewise.
(set_copy_of_val): Likewise.
(copy_prop_visit_assignment): Likewise.
(copy_prop_visit_stmt): Likewise.
(copy_prop_visit_phi_node): Likewise.
(init_copy_prop): Likewise.
(execute_copy_prop): Likewise.
(do_copy_prop): Remove.
(gate_store_copy_prop): Likewise.
(store_copy_prop): Likewise.
(pass_store_copy_prop): Likewise.
(pass_copy_prop): Call execute_copy_prop.
* opts.c (decode_options): Do not set flag_tree_store_copy_prop.
* common.opt (ftree-store-copy-prop): Mark obsolete.
* doc/invoke.texi (ftree-store-copy-prop): Remove documentation.
2007-10-29 Ian Lance Taylor <>
* ifcvt.c (noce_can_store_speculate_p): New static function.
(noce_process_if_block): Call it.
(if_convert): Remove recompute_dominance parameter. Change all
2007-10-29 Richard Guenther <>
* tree-flow-inline.h (get_subvar_at): Use binary search.
(get_first_overlapping_subvar): New function to binary search
for the first overlapping subvar.
* tree-ssa-operands.c (add_vars_for_offset): Strip down to
just handle adding subvars for a pointed-to subvar. Optimize
and use get_first_overlapping_subvar.
(add_vars_for_bitmap): Fold into single caller.
(add_virtual_operand): Streamline, inherit add_vars_for_bitmap
and non pointed-to bits of add_vars_for_offset.
2007-10-29 Revital Eres <>
* modulo-sched.c (sms_schedule): Add DF_UD_CHAIN problem.
2007-10-29 Razya Ladelsky <>
Zdenek Dvorak <>
reduction support for automatic parallelization.
* expr.c (expand_expr_real_1): Add cases for OMP_ATOMIC_LOAD,
* Add dependencies to expr.o, tree-parloops.o, omp-low.o
* tree-pretty-print.c (dump_generic_node): Add OMP_ATOMIC_LOAD
* gimple-low.c (lower_stmt): Same.
* gimplify.c (gimplify_expr): Same.
(gimplify_omp_atomic_fetch_op, gimplify_omp_atomic_pipeline,
gimplify_omp_atomic_mutex): Remove.
(gimplify_omp_atomic): Change it to simply gimplify the
statement instead of expanding it.
* omp-low.c: Add includes to optabs.h, cfgloop.h.
(expand_omp_atomic, expand_omp_atomic_pipeline,
goa_stabilize_expr, expand_omp_atomic_mutex,
expand_omp_atomic_fetch_op): New functions to implement
expansion of OMP_ATOMIC.
(expand_omp, build_omp_regions_1): Add support for
* tree-cfg.c (make_edges): add case for OMP_ATOMIC_LOAD,
* tree-gimple.c (is_gimple_stmt): Add OMP_ATOMIC_LOAD,
* tree-parloops.c: add include to tree-vectorizer.h.
(reduction_info): New structure for reduction.
(reduction_list): New list to represent list of reductions per loop.
(struct data_arg): New helper structure for reduction.
(reduction_info_hash, reduction_info_eq, reduction_phi,
initialize_reductions, create_call_for_reduction,
create_phi_for_local_result, create_call_for_reduction_1,
create_loads_for_reductions, create_final_loads_for_reduction):
New functions.
(loop_parallel_p): Identify reductions, add reduction_list parameter.
(separate_decls_in_loop_name): Support reduction variables.
(separate_decls_in_loop): Add reduction_list and ld_st_data arguments,
call create_loads_for_reduction for each reduction.
(canonicalize_loop_ivs): Identify reductions, add reduction_list
(transform_to_exit_first_loop): Add reduction support, add
reduction_list parameter.
(gen_parallel_loop): Add reduction_list parameter. Add call
separate_decls_in_loop with
the new argument. Traverse reductions and call
initialize_reductions, create_call_for_reduction.
(parallelize_loops): Create and delete the reduction list.
(add_field_for_name): Change use of data parameter. Add fields for
* tree-vectorizer.h (vect_analyze_loop_form): Add declaration.
* tree-vect-analyze.c (vect_analyze_loop_form): export it.
* tree.def: Add definitions for OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
* tree-inline.c (estimate_num_insns_1): add cases for
* tree-cfg.c (make_edges): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
* tree-ssa-operands.c (get_addr_dereference_operands):
New function. Subroutine of get_indirect_ref_operands.
(get_indirect_ref_operands): Call get_addr_dereference_operands.
(get_expr_operands): Support OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2007-10-29 Hans-Peter Nilsson <>
* config/cris/cris.c: Include df.h.
(cris_address_cost): Add gcc_assert for canonicalization
assumptions. For PLUS with MULT or register, correct
test for register in other arm. Tweak comments.
2007-10-28 Richard Guenther <>
* tree-ssa-operands.c (add_vars_for_offset): Add parameter
telling if the var is to be treated as points-to location.
(add_vars_for_bitmap): Pass true to add_vars_for_offset.
(add_virtual_operand): Only recurse into MPTs if aliases
is from a NMT.
2007-10-28 Richard Guenther <>
* tree-ssa-operands.c (add_vars_for_offset): Clean and speed up.
(add_vars_for_bitmap): Do not recurse further. Only add vars
for pointed-to SFTs.
(add_virtual_operand): Re-instantiate loop to add operands for
aliases. Recurse into MPTs.
(get_indirect_ref_operands): If we fall back to use a pointers
SMT, make sure to not prune based on the access offset and size.
2007-10-28 Andrew Pinski <>
PR tree-opt/33589
* tree-outof-ssa.c (rewrite_trees): If the statement changed, cleanup
the eh information on the statement.
2007-10-28 Richard Guenther <>
* tree-flow.h (subvar_t): Make it a VEC.
(struct subvar): Remove.
(struct var_ann_d): Use VEC(tree,gc) to store subvars.
* tree-flow-inline.h (get_subvar_at): Adjust iterators over
variable subvars.
* tree-into-ssa.c (mark_sym_for_renaming): Likewise.
* tree-nrv.c (dest_safe_for_nrv_p): Likewise.
* tree-ssa-alias.c (mark_aliases_call_clobbered): Likewise.
(set_initial_properties): Likewise.
(setup_pointers_and_addressables): Likewise.
(new_type_alias): Likewise.
(create_overlap_variables_for): Likewise.
* tree-dfa.c (dump_subvars_for): Likewise.
* tree-ssa-operands.c (add_vars_for_offset): Likewise.
(get_expr_operands): Likewise.
(add_to_addressable_set): Likewise.
* tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
2007-10-28 Uros Bizjak <>
PR tree-optimization/33920
* tree-if-conv.c (tree_if_conversion): Force predicate of single
successor bb to true when predecessor bb has NULL predicate.
(find_phi_replacement_condition): Assert that tmp_cond is non-null.
2007-10-28 Richard Sandiford <>
* config/mips/ Add combiner patterns for DImode extensions
of HImode and QImode truncations. Reformat HImode <- QImode pattern
for consistency.
2007-10-28 Richard Sandiford <>
PR target/33895
* config/mips/mips.c (mips_output_dwarf_dtprel): Add ATTRIBUTE_UNUSED.
2007-10-28 Andreas Krebbel <>
* dce.c (delete_unmarked_insns): Just delete the RETVAL and
LIBCALL notes if they are about to be moved to the same insn.
2007-10-27 Richard Guenther <>
PR tree-optimization/33870
* tree-ssa-operands.c (add_vars_for_offset): Reduce code
duplication. Remove redundant call to access_can_touch_variable.
(add_vars_for_bitmap): New helper for recursing over MPT contents.
(add_virtual_operand): Use it.
2007-10-26 John David Anglin <>
PR fortran/31608
* pa.h (ASM_PN_FORMAT): Delete define.
2007-10-26 Janis Johnson <>
* doc/invoke.texi (Option Summary, optimizations): Remove
-fbounds-check. Add -fassociative-math, -freciprocal-math,
-ftree-vrp and -funit-at-a-time. Change -fno-split-wide-types to
-fsplit-wide-types to match later entry. Break up a long line.
(Option Summary, code gen options) Add -fno-stack-limit. Add
missing @gol to the end of a line.
(Optimization Options): Remove -fbounds-check, which is also
documented under Code Generation Options. Remove =n from
index entry for -ftree-parallelize-loops. Change -fno-cprop-registers
to -fcprop-registers to match other options, and say when it is
enabled rather than disabled. Remove extra index entry for
-fno-cx-limited-range. Add index entries for -fstack-protector
and -fstack-protector-all.
(Code Gen Options): Add index entry for -ftls-model.
2007-10-26 Anatoly Sokolov <>
* config/avr/avr.c (avr_OS_task_function_p): Add new function.
(avr_regs_to_save): Handle functions with 'OS_task' attribute.
(avr_simple_epilogue, expand_prologue, avr_asm_function_end_prologue,
expand_epilogue, output_movhi): Don't handle 'main' function.
(avr_attribute_table): Add 'OS_task' function attribute.
* config/avr/avr.h (machine_function): Remove 'is_main' field, add
'is_OS_task' field.
* config/avr/ (return_from_main_epilogue): Remove insn.
(return_from_epilogue, return_from_interrupt_epilogue): Don't handle
'main' function.
* config/avr/avr.opt (minit-stack): Remove.
2007-10-26 Eric Botcazou <>
* tree-nested.c (get_trampoline_type): Fix thinko.
2007-10-26 Douglas Gregor <>
PR c++/33601
* tree.c (build_offset_type): Build canonical type based on the
TYPE_MAIN_VARIANT of the base type.
2007-10-26 Daniel Jacobowitz <>
* reorg.c (emit_delay_sequence): Move insn locator from the
first insn to the sequence.
2007-10-26 Samuel Tardieu <>
* ipa-pure-const.c (check_decl): Return immediately when
pure_const_state has been set to IPA_NEITHER.
2007-10-25 Ira Rosen <>
PR tree-optimization/33833
* tree-vect-analyze.c (vect_analyze_data_refs): Use POINTER_PLUS_EXPR
and convert init to sizetype in inner_base construction.
2007-10-25 Richard Guenther <>
* tree-flow.h (mem_sym_stats): Remove.
(dump_mem_sym_stats_for_var): Declare.
* tree-dfa.c (dump_variable): Call dump_mem_sym_stats_for_var.
(mem_sym_stats): Move ...
* tree-ssa-alias.c (mem_sym_stats): ... here and make it static.
(mem_sym_score): Rename from ...
(pscore): ... this. Remove.
(dump_mem_sym_stats_for_var): New function. Dump the score, but
not the frequencies.
(compare_mp_info_entries): Make sort stable by disambiguating
2007-10-25 Ira Rosen <>
PR tree-optimization/33866
* tree-vect-transform.c (vectorizable_store): Check operands of all
the stmts in the group of strided accesses. Get def stmt type for each
store in the group and pass it to vect_get_vec_def_for_stmt_copy ().
2007-10-25 Uros Bizjak <>
* config/i386/ (Y0): Rename register constraint to Yz.
(Yt): Rename register constraint to Y2.
* config/i386/ Use renamed register constraints.
* config/i386/ Ditto.
* config/i386/ Ditto.
2007-10-25 Rask Ingemann Lambertsen <>
* config/i386/ (*dummy_extendsfdf2): Fix operand 1 constraint.
2007-10-24 Chao-ying Fu <>
* dwarf2out.c (base_type_die): Use DW_ATE_unsigned_fixed or
DW_ATE_signed_fixed to describe FIXED_POINT_TYPE.
2007-10-24 Samuel Tardieu <>
Olga Golovanevsky <>
* ipa-struct-reorg.c (replace_field_acc): Make it clear to
the compiler that wr.wrap and wr.domain are initialized in
any case.
2007-10-24 Samuel Tardieu <>
* ipa-struct-reorg.c (sum_counts): Use HOST_WIDEST_PRINT_DEC
to print gcov_type values.
2007-10-24 Eric B. Weddington <>
* config/avr/avr.h: Do not include progmem_section definition when
building with IN_TARGET_LIBS.
2007-10-24 Richard Sandiford <>
PR target/33755
* config/mips/mips.c (mips_lo_sum_offset): New structure.
(mips_hash_base, mips_lo_sum_offset_hash, mips_lo_sum_offset_eq)
(mips_lo_sum_offset_lookup, mips_record_lo_sum)
(mips_orphaned_high_part_p: New functions.
(mips_avoid_hazard): Don't check INSN_P here.
(mips_avoid_hazards): Rename to...
(mips_reorg_process_insns): ...this. Cope with
!TARGET_EXPLICIT_RELOCS. Delete orphaned high-part relocations,
or turn them into nops.
(mips_reorg): Remove TARGET_EXPLICIT_RELOCS check from calls to
dbr_schedule and mips_avoid_hazards/mips_reorg_process_insns.
(mips_set_mips16_mode): Don't set flag_delayed_branch here.
(mips_override_options): Set flag_delayed_branch to 0.
2007-10-24 Richard Sandiford <>
* config/mips/mips.h (MOVE_MAX): Use UNITS_PER_WORD and describe
MIPS-specific implementation details.
for targets with movmemsi.
* config/mips/mips.c (MAX_MOVE_REGS, MAX_MOVE_BYTES): Delete.
(mips_block_move_loop): Add a bytes_per_iter argument.
(mips_expand_block_move): Use MIPS_MAX_MOVE_BYTES_STRAIGHT.
Update call to mips_block_move_loop.
2007-10-24 Michael Matz <>
PR debug/33868
* var-tracking.c (variable_union): Don't break after one loop
iteration but only when a difference is found.
(dump_variable): Also print DECL_UID.
2007-10-24 Olga Golovanevsky <>
* ipa-type-escape.h: Expose function
* ipa-type-escape.c
Add three new parameters. Add support of
2007-10-24 Olga Golovanevsky <>
* ipa-struct-reorg.c, ipa-struct-reorg.h: New files.
* tree-pass.h: Add pass_ipa_struct_reorg.
* common.opt: Add ipa-struct-reorg flag.
* Add ipa-strcut-reorg.o compilation.
* passes.c: Add pass pass_ipa_struct_reorg.
2007-10-24 Ira Rosen <>
PR tree-optimization/33804
* tree-vect-transform.c (vectorizable_operation): Remove the
checks that the vectorization is worthwhile from the transformation
2007-10-24 Ira Rosen <>
* tree-vect-analyze.c (vect_build_slp_tree): Return false if
vectype cannot be determined for the scalar type.
(vect_analyze_slp_instance): Likewise.
* tree-vect-transform.c (vect_model_reduction_cost): Change the
return type to bool. Return false if vectype cannot be determined
for the scalar type.
(vect_get_constant_vectors): Return false if vectype cannot be
determined for the scalar type.
(get_initial_def_for_induction, vect_get_vec_def_for_operand,
get_initial_def_for_reduction, vect_create_epilog_for_reduction,
vectorizable_reduction): Likewise.
2007-10-23 Craig Rodrigues <>
* config.gcc: For a FreeBSD target, parse the value of ${target}
to determine the value of FBSD_MAJOR, instead of adding an
explicit check for every possible FreeBSD major version.
2007-10-23 Uros Bizjak <>
PR rtl-optimization/33846
* combine.c (simplify_shift_const_1) [NOT]: Skip vector modes.
2007-10-23 Dorit Nuzman <>
PR tree-optimization/33860
* tree-vect-transform.c (vect_analyze_data_ref_access): Don't allow
interleaved accesses in case the dr is inside the inner-loop during
outer-loop vectorization.
2007-10-23 Eric Botcazou <>
* doc/rtl.texi (Flags): Fix MEM_SCALAR_P entry.
Document MEM_POINTER. Replace mentions of "integrated"
field with "return_val". Delete outdated stuff.
2007-10-23 David Edelsohn <>
* config/rs6000/rs6000.c (rs6000_override_options): Set
rs6000_altivec_abi on AIX.
(conditional_register_usage): Set VR20:31 fixed on AIX.
2007-10-23 Richard Guenther <>
* alias.c (get_alias_set): For INDIRECT_REFs, deal with
SSA_NAME pointers.
2007-10-22 Seongbae Park <>
David S. Miller <>
* df-scan.c (df_get_call_refs): Mark global registers as both a
DF_REF_REG_USE and a non-clobber DF_REF_REG_DEF.
2007-10-22 Dorit Nuzman <>
PR tree-optimization/33834
PR tree-optimization/33835
* tree-vect-analyze.c (vect_analyze_operations): RELEVANT and LIVE
stmts need to be checked for success seperately.
* tree-vect-transform.c (vectorizable_call, vectorizable_conversion):
Remove the check that stmt is not LIVE.
(vectorizable_assignment, vectorizable_induction): Likewise.
(vectorizable_operation, vectorizable_type_demotion): Likewise.
(vectorizable_type_promotion, vectorizable_load, vectorizable_store):
(vectorizable_live_operation): Check that op is not NULL.
2007-10-22 Janis Johnson <>
* doc/invoke.texi (Optimization Options): In the summary, show
that the value for options -falign-jumps, -falign-labels,
-falign-loops, -falign-functions, -fsched-stalled-insns, and
-fsched-stalled-insns-dep is optional. In the summary, show that
-fsched-stalled-insns takes an optional argument and that
-fparallelize-loops takes an argument. Add opindex for several
optimization options, and fix typos in the opindex commands for
several others. In the descriptions for -fsched-stalled-insns
and -fsched-stalled-insns-dep, show the options with and without
2007-10-22 Eric B. Weddington <>
* config/avr/avr.c (avr_mcu_types): Remove ATmega603 which was never
* config/avr/avr.h (LINK_SPEC): Likewise.
* config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2007-10-22 Eric Botcazou <>
PR rtl-optimization/33644
* cfgcleanup.c: Do not include dce.h.
* cfgrtl.c (delete_insn_chain_and_edges): Resurrect.
* combine.c (distribute_notes): Delete REG_LIBCALL_ID case.
* dce.c (something_changed): Delete.
(libcall_dead_p): New predicate.
(delete_unmarked_insns): Use it to delete dead libcalls.
Deal with REG_LIBCALL and REG_RETVAL notes.
(prescan_libcall_for_dce): New function.
(prescan_insns_for_dce): Use it to deal with libcalls.
(mark_reg_dependencies): Do nothing special for libcalls.
(dce_process_block): Likewise.
(fast_dce): Delete unused local variable.
(run_fast_dce): Do not return a value.
* dce.h (struct df): Delete.
(run_fast_dce): Adjust prototype.
* optabs.c (libcall_id): Delete.
(maybe_encapsulate_block): Do not emit REG_LIBCALL_ID notes.
(emit_no_conflict_block): Do not look for REG_LIBCALL_ID notes.
* reload1.c (reload): Delete REG_LIBCALL_ID case.
* rtl.h (delete_insn_chain_and_edges): Resurrect prototype.
* see.c (see_update_relevancy): Look for REG_LIBCALL and REG_RETVAL
notes instead of REG_LIBCALL_ID notes.
* reg-notes.def (LIBCALL_ID): Delete.
* (see.o): Add dce.h dependency.
(cfgcleanup.o): Remove dce.h dependency.
2007-10-22 Michael Matz <>
PR tree-optimization/33855
* tree-ssa-phiopt.c (cond_store_replacement): Handle COMPLEX_TYPE
2007-10-22 Ira Rosen <>
PR tree-optimization/33854
* tree-vect-analyze.c (vect_determine_vectorization_factor): Add
FLOAT_EXPR to the list of promotion operations.
2007-10-22 Rask Ingemann Lambertsen <>
PR target/29473
PR target/29493
* config/i386/i386.c (output_pic_addr_const): Support Intel asm syntax.
(print_reg): Print register prefix only with AT&T asm syntax.
Support pc_rtx for RIP register.
(print_operand_address): Use print_reg()'s pc_rtx support for RIP
relative addressing. Always print segment register prefix with AT&T
asm syntax and never with Intel asm syntax.
(print_operand): Suppress 'XXX PTR' prefix for BLKmode operands.
Fix prefix for 16-byte XFmode operands.
(output_addr_const_extra): Support Intel asm syntax.
(x86_file_start): Don't use register prefix with Intel asm syntax.
* config/i386/ ("*zero_extendqihi2_movzbl"): Fix typo.
("return_internal_long"): Fix Intel asm syntax output.
("set_got_rex64"): Support Intel asm syntax.
("set_rip_rex64"): Likewise.
("set_got_offset_rex64"): Likewise.
("*sibcall_1_rex64_v"): Print register prefix only with AT&T asm
("*tls_global_dynamic_64"): Likewise.
("*tls_local_dynamic_base_64"): Likewise.
("*load_tp_si")("*load_tp_di"): Likewise.
("*add_tp_si")("*add_tp_di"): Likewise.
("*tls_dynamic_lea_64"): Likewise.
("*sibcall_value_1_rex64_v"): Likewise.
("stack_tls_protect_set_si"): Likewise.
("stack_tls_protect_set_di"): Likewise.
("stack_tls_protect_test_si"): Likewise.
("stack_tls_protect_test_di"): Likewise.
* config/i386/ ("*mov<mode>_internal_rex64"): Fix Intel asm
syntax output.
("*movv2sf_internal_rex64"): Likewise.
* config/i386/cpuid.h (__cpuid): Support Intel asm syntax.
(__get_cpuid_max): Likewise.
2007-10-21 Richard Sandiford <>
* config/mips/mips-protos.h (mips_regno_mode_ok_for_base_p): Give
the STRICT_P argument type "bool" rather than "int".
(mips_legitimate_address_p): Likewise.
(fp_register_operand, lo_operand): Delete.
(mips_subword): Give the HIGH_P argument type "bool" rather than "int".
(mips_emit_scc): Rename to...
(mips_expand_scc): ...this.
(gen_conditional_branch): Rename to...
(mips_expand_conditional_branch): ...this.
(gen_conditional_move): Rename to...
(mips_expand_conditional_move): ...this.
(mips_gen_conditional_trap): Rename to...
(mips_expand_conditional_trap): ...this and take an rtx code instead
of an operands array.
(mips_expand_call): Give the SIBCALL_P argument type "bool"
rather than "int".
(mips_emit_fcc_reload): Rename to...
(mips_expand_fcc_reload): ...this.
(init_cumulative_args): Rename to...
(mips_init_cumulative_args): ...this and remove the libname argument.
(function_arg_advance): Rename to...
(mips_function_arg_advance): ...this.
(function_arg): Rename to...
(mips_function_arg): ...this and use "rtx" instead of
"struct rtx_def *".
(function_arg_boundary): Rename to...
(mips_function_arg_boundary): ...this.
(mips_expand_unaligned_load): Rename to...
(mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
and BITPOS arguments type "HOST_WIDE_INT".
(mips_expand_unaligned_store): Rename to...
(mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
and BITPOS arguments type "HOST_WIDE_INT".
(override_options): Rename to...
(mips_override_options): ...this.
(print_operand): Rename to...
(mips_print_operand): ...this.
(print_operand_address): Rename to...
(mips_print_operand_address): ...this.
(mips_output_ascii): Remove the PREFIX argument.
(mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
rather than "int".
(mips_can_use_return_insn): Return a "bool" rather than an "int".
(mips_function_value): Remove the FUNC argument. Use "rtx" instead
of "struct rtx_def *".
(mips_secondary_reload_class): Give the IN_P argument type "bool"
rather than "int".
(build_mips16_call_stub): Delete.
(mips_store_data_bypass_p): Return a "bool" rather than an "int".
(mips_use_ins_ext_p): Give the second and third arguments type
"HOST_WIDE_INT" rather than "rtx".
* config/mips/mips.h: Update after the above changes. Tweak comments
and formatting.
(SECONDARY_INPUT_RELOAD_CLASS): Pass a boolean IN_P argument.
(mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
element type from "char" to "bool".
(mips_section_threshold, sym_lineno, set_noat, mips_branch_likely)
(mips_cpu_info_table): Delete.
* config/mips/ Update after the above changes. Tweak some
* config/mips/ Likewise.
* config/mips/mips.c: Tweak comments and formatting.
Use NULL-like macros rather than 0 in various places.
(mips_section_threshold): Rename to...
(mips_small_data_threshold): ...this and give it an unsigned type.
(num_source_filenames): Remove explicit initialization.
(sdb_label_count): Likewise.
(sym_lineno): Delete.
(set_noat): Make static.
(mips_branch_likely): Likewise, and give it type "bool".
(mips_isa_info): Rename to...
(mips_isa_option_info): ...this.
(mips_flag_delayed_branch): Rename to...
(mips_base_delayed_branch): ...this.
(mips_split_addresses): Delete.
(mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
element type from "char" to "bool".
(mips_regno_to_class): Add an explicit array size.
(mips16_flipper): Change from type "int" to type "bool".
(mips_comp_type_attributes): Remove redundant FUNCTION_TYPE check.
(mips_tls_operand_p): Rename to...
(mips_tls_symbol_p): ...this.
(mips_global_symbol_p): Remove redundant "const".
(mips_offset_within_alignment_p): Simplify.
(mips_regno_mode_ok_for_base_p): Change the name of the last argument
to STRICT_P and give it type bool.
(mips_valid_base_register_p): Likewise.
(mips_classify_address): Likewise.
(mips_legitimate_address_p): Likewise.
(mips16_unextended_reference_p): Take the offset as an
"unsigned HOST_WIDE_INT" rather than an "rtx". Simplify.
(mips_const_insns): Use IN_RANGE.
(mips_force_temporary): Remove an unnecessary copy_rtx.
(mips16_gp_pseudo_reg): Simplify.
(mips_split_symbol): Remove an unnecessary copy_rtx.
(mips_legitimize_tls_address): Only create registers if we need them.
(mips_legitimize_address): Use mips_split_plus.
(mips_move_integer): Swap DEST and TEMP arguments. Rename local
variable COST to NUM_OPS.
(mips_legitimize_move): Use gen_lowpart.
(mips_rewrite_small_data): Rename the OP parameter to PATTERN.
(m16_check_op): Use IN_RANGE.
(mips_subword): Give the HIGH_P argument type "bool" rather than "int".
(mips_split_doubleword_move): Pass booleans to mips_subword.
(mips_output_move): Store the mode in a local variable.
Explicitly assert that this function does not deal with
cases more consistent.
(mips_relational_operand_ok_p): Rename to...
(mips_int_order_operand_ok_p): ...this.
(mips_canonicalize_comparison): Rename to...
(mips_canonicalize_int_order_test): ...this.
(mips_emit_int_relational): Rename to...
(mips_emit_int_order_test): ...this. Store the mode in a local
(mips_reverse_fp_cond_p): Rename to...
(mips_reversed_fp_cond): ...this.
(mips_emit_compare): Make the order of the statements more consistent.
(mips_emit_scc): Rename to...
(mips_expand_scc): ...this.
(gen_conditional_branch): Rename to...
(mips_expand_conditional_branch): ...this.
(gen_conditional_move): Rename to...
(mips_expand_conditional_move): ...this. Build the condition
separately from the main pattern.
(mips_gen_conditional_trap): Rename to...
(mips_expand_conditional_trap): ...this and take an rtx code instead
of an operands array. Simplify.
(init_cumulative_args): Rename to...
(mips_init_cumulative_args): ...this. Use memset rather than a
copy from a zeroed static. Use prototype_p and stdarg_p.
(mips_arg_info): Rename to...
(mips_get_arg_info): ...this and put the INFO argument first.
(function_arg): Rename to...
(mips_function_arg): ...this and use "rtx" instead of
"struct rtx_def *". Only split structures into chunks if
TARGET_HARD_FLOAT, rather than checking !TARGET_SOFT_FLOAT on
a chunk-by-chunk basis. Use SCALAR_FLOAT_TYPE_P instead of a
comparison with REAL_TYPE. Rename local variable REG to REGNO
and make it unsigned.
(function_arg_advance): Rename to...
(mips_function_arg_advance): ...this.
(function_arg_boundary): Rename to...
(mips_function_arg_boundary): ...this.
(mips_pad_arg_upward): Use SCALAR_INT_MODE_P instead of a comparison
with MODE_INT.
(mips_fpr_return_fields): Use SCALAR_FLOAT_TYPE_P instead of a
comparison with REAL_TYPE.
(mips_function_value): Remove the FUNC argument. Rename local
(mips_return_in_memory): Use IN_RANGE.
(mips_setup_incoming_varargs): Pass a boolean rather than an int
(mips_gimplify_va_arg_expr): Rename local variable INDIRECT
to INDIRECT_P. Remove a redundant mips_abi check. Only calculate
SIZE and RSIZE if needed.
(mips16_stub): Rename FPRET to FP_RET_P and give it type "bool"
rather than "int".
(build_mips16_function_stub): Rename to...
(mips16_build_function_stub): ...this.
(build_mips16_call_stub): Rename to...
(mips16_build_call_stub): ...this. Make static, and return a
"bool" rather than an "int". Rename the ARG_SIZE argument to
ARGS_SIZE. Rename the local variable FPRET to FP_RET_P and give
it type "bool". Use "jr" rather than "j". Use XNEW. Simplify.
(mips_load_call_address): Give the SIBCALL_P argument type "bool"
rather than "int".
(mips_expand_call): Likewise. Assert that MIPS16 calls via stubs
are not sibling ones.
(mips_emit_fcc_reload): Rename to...
(mips_expand_fcc_reload): ...this.
(mips_get_unaligned_mem): Give the WIDTH and BITPOS arguments type
(mips_expand_unaligned_load): Rename to...
(mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
and BITPOS arguments type "HOST_WIDE_INT". Remove redundant
(mips_expand_unaligned_store): Rename to...
(mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
and BITPOS arguments type "HOST_WIDE_INT".
(mips_use_ins_ext_p): Rename second and third arguments to WIDTH
and BITPOS and give them type "HOST_WIDE_INT" rather than "rtx".
(mips_init_split_addresses): Replace with...
(mips_split_addresses_p): ...this new function.
(mips_init_relocs): Check mips_split_addresses_p () rather than
mips_split_addresses. Always initialize mips_split_p with booleans.
(print_operand_reloc): Rename to...
(mips_print_operand_reloc): ...this. Use a gcc_assert rather than
a fatal_error.
(print_operand): Rename to...
(mips_print_operand): ...this.
(print_operand_address): Rename to...
(mips_print_operand_address): ...this. Use GP_REG_FIRST.
(mips_in_small_data_p): Simplify.
(mips_output_ascii): Remove the PREFIX argument and "register"
keywords. Use the STRING parameter directly and cast to
"unsigned char".
(mips16e_collect_argument_save_p): Use IN_RANGE.
(mips_function_has_gp_insn): Simplify.
(mips_set_return_address): Use BITSET_P.
(mips_restore_gp): Use a separate statement to pick the base
(mips_output_function_prologue): Use a local FRAME variable.
(mips_save_reg): Pass booleans to mips_subword.
(mips_expand_prologue): Use a local FRAME variable. Use
cprestore_size to detect when .cprestore is needed.
(mips_restore_reg): Use GP_REG_FIRST.
(mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
rather than "int". Use local FRAME and REGNO variables.
(mips_can_use_return_insn): Return a "bool" rather than an "int".
(mips_secondary_reload_class): Give the IN_P argument type "bool"
rather than "int".
(mips_linked_madd_p): Rename arguments to OUT_INSN and IN_INSN.
(mips_store_data_bypass_p): Return a "bool" rather than an "int".
(vr4130_swap_insns_p): Rename local variables to DEP1_P and DEP2_P.
(mips_74k_agen_init): Assume INSN satisfies USEFUL_INSN_P.
(mips_variable_issue): Do nothing unless INSN satisfies USEFUL_INSN_P.
(builtin_description): Rename to...
(mips_builtin_description): ...this.
(mips_bdesc): Rename to...
(mips_ps_bdesc): ...this.
(sb1_bdesc): Rename to...
(mips_sb1_bdesc): ...this.
(dsp_bdesc): Rename to...
(mips_dsp_bdesc): ...this.
(dsp_32only_bdesc): Rename to...
(mips_dsp_32only_bdesc): ...this.
(bdesc_map): Rename to...
(mips_bdesc_map): ...this.
(bdesc_arrays): Rename to...
(mips_bdesc_arrays): ...this.
(mips_prepare_builtin_arg): Rename OP to OPNO and ARGNUM to ARGNO.
Tweak error message.
(mips_expand_builtin_direct): Rename HAS_TARGET to HAS_TARGET_P.
Rename local variables I and J to OPNO and ARGNO respectively.
Assert that the number of arguments is no more than the number of
input operands.
(mips_expand_builtin_compare): Use an array of arguments rather
than an array of operands. Assert that the number of operands is
as expected.
(add_constant): Rename to...
(mips16_add_constant): ...this. Use XNEW.
(dump_constants_1): Rename to...
(mips16_emit_constants_1): ...this. Use ALL_SCALAR_FIXED_POINT_MODE_P.
(dump_constants): Rename to...
(mips16_emit_constants): ...this.
(mips_sim_wait_reg, mips_sim_record_set): Use END_REGNO.
(mips_set_mips16_mode): Don't call mips_init_split_addresses.
Assign mips16_p to was_mips16_p.
(mips_parse_cpu): Tweak warning message.
(override_options): Rename to...
(mips_override_options): ...this. Move the mips_cost initialization
out of the "shared with GAS" block. Quote option names in error
(mips_conditional_register_usage): Make local variable REGNO unsigned.
(mips_order_regs_for_local_alloc): Remove register keyword.
2007-10-21 Richard Sandiford <>
* system.h (IN_RANGE): Cast each argument individually.
2007-10-21 Richard Sandiford <>
* config/mips/mips.c (mips_set_mips16_mode) Say sorry for hard-float
MIPS16 code unless using o32 or o64.
2007-10-21 Richard Sandiford <>
* config/mips/mips.c (mips_cannot_change_mode_class): Don't check
for modes smaller than 4 bytes.
* config/mips/ (*movhi_internal, *movqi_internal): Remove
FPR alternatives.
2007-10-21 Richard Sandiford <>
* config/mips/mips-protos.h (mips_output_aligned_bss): Delete.
* config/mips/linux.h (BSS_SECTION_ASM_OP): Delete.
* config/mips/mips.c (mips_output_aligned_bss): Delete.
2007-10-21 Richard Sandiford <>
* config/mips/mips.c (mips_function_ok_for_sibcall): Only forbid
sibling calls to "mips16" functions if the function satisfies
2007-10-21 Richard Sandiford <>
* config/mips/mips.c (mips_va_start): Fix types in calls
to build_int_cst.
2007-10-21 Richard Sandiford <>
* config/mips/mips.c (mips_rtx_costs): Only recognize reciprocals
2007-10-21 Richard Sandiford <>
* config/mips/mips.h (ISA_HAS_LDC1_SDC1): New macro.
* config/mips/mips.c (mips_split_64bit_move_p): Use ISA_HAS_LDC1_SDC1
instead of checking mips_isa.
2007-10-21 Richard Sandiford <>
* doc/invoke.texi (-mpaired-single): Don't say that the option
requires 64-bit code.
* config/mips/mips-protos.h (mips_modes_tieable_p): Declare.
* config/mips/mips.h (ISA_HAS_PAIRED_SINGLE): New macro.
(ISA_HAS_NMADD_NMSUB): Add a mode argument. Return true for
(MODES_TIEABLE_P): Use mips_modes_tieable_p.
* config/mips/mips.c (mips_rtx_costs): Pass a mode argument
(mips_split_doubleword_move): Handle V2SF.
(mips_modes_tieable_p): New function.
(override_options): Report a warning rather than an error when
-mpaired-single is used on ISAs that don't support it; use
ISA_HAS_PAIRED_SINGLE to check that case.
* config/mips/ (MOVE64): New mode iterator. Replace DI
and DF move splitters with a single MOVE64 splitter, thereby adding
a V2SF splitter too.
(SPLITF): Add TARGET_DOUBLE_FLOAT conditions to DI and DF.
Add a TARGET_FLOAT64 condition to TF. Add V2SF to the iterator.
(*nmadd<mode>, *nmadd<mode>_fastmath, *nmsub<mode>)
(*nmsub<mode>_fastmath): Add a mode argument to ISA_HAS_NMADD_NMSUB.
(movv2sf_hardfloat_64bit): Tweak ordering of conditions.
(movv2sf_hardfloat_32bit): New pattern.
(load_low<mode>, load_high<mode>, store_word<mode>): Remove
2007-10-20 Jakub Jelinek <>
* config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Point
saved CR2 offset to low 32 bits of regs->ccr rather than the whole
64-bit register in 64-bit libgcc.
2007-10-20 Eric B. Weddington <>
* config/avr/avr.c (avr_mcu_types): Add at90pwm2b, at90pwm3b.
* config/avr/avr.h (LINK_SPEC): Likewise.
* config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2007-10-20 Manuel Lopez-Ibanez <>
* doc/invoke.texi (Warning Options): Move -w, -Werror, -Werror=
and -Wfatal-errors together.
2007-10-20 Alan Modra <>
PR target/33812