2007-07-02 Daniel Berlin <dberlin@dberlin.org>
Fix PR tree-optimization/32583
Fix PR tree-optimization/32584
* tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
(phi_translate_set): Use phi_translate directly now.
(make_values_for_stmt): Don't value number RHS if we already know
it is constant.
From-SVN: r126222
PR target/31684
* haifa-sched.c (add_to_speculative_block): Change copy_rtx to
copy_insn.
Co-Authored-By: James E Wilson <wilson@specifixinc.com>
From-SVN: r126216
* ChangeLog: Add following to my previous description:
(if_convertible_loop_p): Clear aux field of incoming edges if bb
contains phi node.
From-SVN: r126214
gcc/
2007-07-02 Sandra Loosemore <sandra@codesourcery.com>
Richard Sandiford <richard@codesourcery.com>
Nigel Stephens <nigel@mips.com>
* config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
(mips16e_output_save_restore): Declare.
(mips16e_save_restore_pattern_p): Likewise.
* config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
* config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
for GENERATE_MIPS16E_SAVE_RESTORE. Return 0x400 for TARGET_MIPS16
&& !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
(BITSET_P): New global macro, extracted from...
(mips_for_each_saved_reg): ...here.
(mips16e_save_restore_info): New struct.
(mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
(mips16e_save_restore_regs): New variable.
(mips_split_plus, mips16e_find_first_register): New functions.
(mips16e_mask_registers): New function.
(compute_frame_size): Expand the commentary before the function.
Enforce the MIPS16e save and restore register range restrictions.
Pad the general register save area at the low end.
(mips16e_save_restore_reg, mips16e_build_save_restore)
(mips16e_save_restore_pattern_p, mips16e_add_register_range)
(mips16e_output_save_restore, mips16e_collect_propagate_value)
(mips16e_collect_argument_save, mips16e_collect_argument_saves):
New functions.
(mips_expand_prologue, mips_expand_epilogue): Handle
GENERATE_MIPS16E_SAVE_RESTORE.
* config/mips/mips.md (*mips16e_save_restore): New pattern.
gcc/testsuite/
* gcc.target/mips/save-restore-1.c: New test.
* gcc.target/mips/save-restore-2.c: Likewise.
* gcc.target/mips/save-restore-3.c: Likewise.
* gcc.target/mips/save-restore-4.c: Likewise.
From-SVN: r126207
PR tree-optimization/31966
PR tree-optimization/32533
* tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
"basic_block" description as its third argument. Update function
calls to get destination bb from "edge" argument. Save "cond" into
aux field of the edge. Update prototype for changed arguments.
(find_phi_replacement_condition): Operate on incoming edges, not
on predecessor blocks. If there is a condition saved in the
incoming edge aux field, AND it with incoming bb predicate.
Return source bb of the first edge.
(clean_predicate_lists): Clean aux field of outgoing node edges.
(tree_if_conversion): Do not initialize cond variable. Move
variable declaration into the loop.
(replace_phi_with_cond_gimple_modify_stmt): Remove unneded
initializations of new_stmt, arg0 and arg1 variables.
testsuite/ChangeLog:
PR tree-optimization/31966
PR tree-optimization/32533
* gcc.dg/tree-ssa/pr31966.c: New runtime test.
* gfortran.dg/pr32533.f90: Ditto.
From-SVN: r126206
* tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
* g++.dg/opt/nrv12.C: New test.
* gcc.target/i386/nrv1.c: New test.
From-SVN: r126200
2007-07-02 Richard Guenther <rguenther@suse.de>
* tree-ssa.c (useless_type_conversion_p): Document
future intent as defining the middle-end type system.
Re-structure to call langhook last, group by type class,
mark questionable parts.
From-SVN: r126199
* configure.ac: Check for .gnu_attribute on Power.
* configure: Regenerate.
* config/rs6000/rs6000.c (rs6000_file_start): If supported, output
attribute for floating-point ABI.
From-SVN: r126197
PR tree-optimization/32230
PR tree-optimization/32477
* tree-vect-analyze.c (vect_analyze_data_refs): Fail if base
address is a constant.
From-SVN: r126196
* config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
(mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
(mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
stanzas. Use the first part of the triplet to set MIPS_ISA_DEFAULT.
Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
64-bit targets. Add support for *-elfoabi*.
* config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
different settings if $(tm_defines) does not select the EABI.
(MULTILIB_EXCLUSIONS): Define in those circumstances.
* config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
(MIPS_ARCH_OPTION_SPEC): Likewise.
(MIPS_ISA_LEVEL_SPEC): Likewise.
(OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
* config/mips/elfoabi.h: New file.
From-SVN: r126195
2007-07-01 Daniel Berlin <dberlin@dberlin.org>
* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
and ohter expected operations explicitly, change default to
gcc_unreachable.
From-SVN: r126179
* config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
PARALLEL.
* config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
(tls_load_dot_plus_eight): Move the label number into the unspec.
* config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
* gcc.dg/tls/opt-14.c: New.
From-SVN: r126178
2007-07-01 Richard Sandiford <richard@codesourcery.com>
Unreverting Richard's Revert of:
2007-06-27 Richard Sandiford <richard@codesourcery.com>
* dce.c (deletable_insn_p_1): New function, split out from...
(deletable_insn_p): ...here. Only treat bare USEs and CLOBBERs
specially, not those inside PARALLELs. Remove BODY argument
and adjust recursive call accordingly.
(prescan_insns_for_dce): Update call to delete_insn_p.
From-SVN: r126168
PR middle-end/32559
* fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
X + ~X to 1 only for INTEGRAL_TYPE_P type.
testsuite/ChangeLog:
PR middle-end/32559
* gcc.dg/pr32559.c: New test.
From-SVN: r126164
2007-06-30 Daniel Berlin <dberlin@dberlin.org>
* tree-ssa-pre.c (is_exception_related): New function
(can_value_number_operation): Use it.
From-SVN: r126162
* configure.ac: Check for .gnu_attribute on MIPS.
* configure, config.in: Regenerate.
* config/mips/mips.c (mips_file_start): If supported, output
attribute for floating-point ABI.
From-SVN: r126157
PR target/32433
* config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
(ffs_cmove): New expander to expand using ctz pattern.
(*ffs_cmove): Remove pattern.
(*ffs_no_cmove): Enable only for !TARGET_CMOVE.
(ffsdi2): Expand using ctz pattern.
(*ffs_rex64): Remove pattern.
From-SVN: r126154
2007-06-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR c/4076
* c-typeck.c (build_external_ref): Don't mark as used if called
from itself.
* calls.c (rtx_for_function_call): Likewise.
testsuite/
* gcc.dg/Wunused-function.c: New.
From-SVN: r126144
gcc/
Revert:
2007-06-27 Richard Sandiford <richard@codesourcery.com>
* dce.c (deletable_insn_p_1): New function, split out from...
(deletable_insn_p): ...here. Only treat bare USEs and CLOBBERs
specially, not those inside PARALLELs. Remove BODY argument
and adjust recursive call accordingly.
(prescan_insns_for_dce): Update call to delete_insn_p.
From-SVN: r126143
* combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
(try_combine): Move potential calls to undo_all() so they happen
before we commit to using the combined insns.
From-SVN: r126142
* ipa.c (cgraph_postorder): Cast according to the coding conventions.
(cgraph_remove_unreachable_nodes): Likewise.
* ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
* ipa-inline.c (update_caller_keys): Cast according to the coding
conventions.
(cgraph_decide_recursive_inlining): Likewise.
(cgraph_decide_inlining_of_small_function): Likewise.
(try_inline): Likewise.
(cgraph_decide_inlining_incrementally): Likewise.
* ipa-pure-const.c (get_function_state): Likewise.
(scan_function): Likewise.
(analyze_function): Likewise.
(static_execute): Likewise.
* gcc/ipa-reference.c (scan_for_static_refs): Likewise.
(merge_callee_local_info): Likewise.
(analyze_function): Use type safe memory macros.
(static_execute): Likewise. Cast according to the coding conventions.
* ipa-type-escape.c (scan_for_regs): Cast according to the coding
conventions.
* ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
names.
(ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
* ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
variable names.
From-SVN: r126140
2007-06-29 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR middle-end/30024
* emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
for complex modes (both int and real).
From-SVN: r126137
2007-06-29 Andrew Pinski <andrew_pinski@playstation.sony.com>
* emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
for complex modes (both int and real).
From-SVN: r126136
2006-06-29 Richard Guenther <rguenther@suse.de>
PR middle-end/32493
* gimplify.c (gimplify_call_expr): Ignore variable argument parts
during type verification.
* gcc.dg/inline-23.c: New testcase.
From-SVN: r126113
2007-06-28 Jakub Jelinek <jakub@redhat.com>
* config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
decl is non-external for AIX ABI.
2007-06-28 David Edelsohn <edelsohn@gnu.org>
* config/rs6000/predicates.md (current_file_function_operand):
Ensure the symbol is non-external for AIX ABI.
From-SVN: r126076
PR other/31400
* gcc.c (process_command): Recognize the new -static-libgfortran
option.
* lang.opt (static-libgfortran): New option.
* gfortranspec.c (ADD_ARG_LIBGFORTRAN): New macro.
(Option): Add OPTION_static and OPTION_static_libgfortran.
(lookup_option): Handle the new -static-libgfortran option.
(lang_specific_driver): Check whether -static is passed.
Handle the new -static-libgfortran option.
* options.c (gfc_handle_option): If -static-libgfortran is
passed and isn't supported on this configuration, error out.
From-SVN: r126068
2007-06-27 Rask Ingemann Lambertsen <rask@sygehus.dk>
PR target/32418
* config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
Use a call clobbered hard reg instead of a pseudo reg.
From-SVN: r126067