PR target/31701
* config/sh/sh.c (output_stack_adjust): Avoid using the frame
register itself to hold the offset constant. Tell flow the use
of r4 and r5 when they are used.
From-SVN: r124248
2007-04-27 Richard Guenther <rguenther@suse.de>
* tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
if we simplified anything.
(tree_ssa_forward_propagate_single_use_vars): Defer overflow
warnings until we did a simplification and the stmt was not
marked as TREE_NO_WARNING.
From-SVN: r124242
./: PR middle-end/31710
* tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
TYPE_MAX_VALUE exist, convert them to the new type.
testsuite/:
PR middle-end/31710
* gcc.c-torture/compile/pr31710.c: New test.
From-SVN: r124237
* tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
if it claims to be available.
* tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
edge is redirected.
(perform_tree_ssa_dce): Always free postdominators.
From-SVN: r124236
2007-04-27 Richard Guenther <rguenther@suse.de>
PR tree-optimization/31715
* tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
sure to do computation on the offset in an appropriate
signed type.
* gcc.dg/Warray-bounds-4.c: New testcase.
From-SVN: r124216
gcc/
* reload.h (elimination_target_reg_p): Declare.
* reload.c (find_reloads): Don't apply the reg_rtx move
optimization if the SET_DEST satisfies elimination_target_reg_p.
* reload1.c (elimination_target_reg_p): New function.
(gen_reload): In the move/add2 fallback, make sure that op0
does not overlap the destination register.
From-SVN: r124215
* tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
transform only GIMPLE_MODIFY_STMTs.
* tree-complex.c (expand_complex_operations_1): Ditto.
(expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
* tree-ssa-loop-manip.c (build_if_stmt): Removed.
(tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
branches.
* value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
* omp-low.c (expand_parallel_call, expand_omp_for_generic,
expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
* tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
slpeel_add_loop_guard): Ditto.
* tree-mudflap.c (mf_build_check_statement_for): Ditto.
* lambda-code.c (perfect_nestify): Ditto.
* tree-iterator.c (tsi_split_statement_list_before): Fix splitting
before the first statement.
* tree-optimize.c (execute_free_datastructures): Fix comments.
(execute_free_cfg_annotations): Do not call disband_implicit_edges.
* tree-flow.h (disband_implicit_edges): Declaration removed.
* tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
branches.
(cleanup_dead_labels, tree_redirect_edge_and_branch): Handle COND_EXPRs
without gotos.
(disband_implicit_edges, has_label_p): Removed.
(tree_verify_flow_info): Verify that COND_EXPR branches are empty.
(tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
branches.
* tree.c (build3_stat): Mark COND_EXPRs used as statements as having
side effects.
* tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
also for COND_EXPRs.
* cfgexpand.c (label_rtx_for_bb): New function.
(expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
Use label_rtx_for_bb to find the labels.
(expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
last block. Detect fallthru edges.
From-SVN: r124214
gcc/:
PR target/28675
* reload.c (find_reloads_subreg_address): If the address was valid
in the original mode but not in the new mode, reload the whole
address.
testsuite/:
PR target/28675
* gcc.c-torture/compile/pr28675.c: New test.
From-SVN: r124211
* tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
(remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
(cleanup_control_expr_graph): Do not invalidate dominance info.
Record altered blocks.
(cleanup_control_flow, cleanup_forwarder_blocks): Removed.
(cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
cleanup_tree_cfg_bb): New functions.
(remove_forwarder_block): Do not maintain the worklist of blocks.
Record altered blocks.
(cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
not over whole cfg.
(cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1. Only call
delete_unreachable_blocks if dominators are not available.
* tree-inline.c (optimize_inline_calls): Free dominance information
earlier.
* tree-flow.h (remove_edge_and_dominated_blocks,
cfgcleanup_altered_bbs): Altered.
* tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
blocks.
(get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
functions.
(tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
do not invalidate dominators.
From-SVN: r124203
2007-04-26 Richard Guenther <rguenther@suse.de>
PR tree-optimization/31703
* tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
the right type for the target of the bittest.
* gcc.c-torture/compile/pr31703.c: New testcase.
* gcc.dg/tree-ssa/ssa-lim-1.c: Adjust pattern.
* gcc.dg/tree-ssa/ssa-lim-2.c: Likewise.
From-SVN: r124190
gcc/
200x-xx-xx Richard Sandiford <richard@codesourcery.com>
Mark Mitchell <mark@codesourcery.com>
* config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
* config/i386/i386.c (ix86_sol10_return_in_memory): New function.
* config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
Co-Authored-By: Mark Mitchell <mark@codesourcery.com>
From-SVN: r124176
gcc/
PR driver/31107
* doc/invoke.texi (%:print-asm-header): Document.
* gcc.c (asm_options): Use %:print-asm-header() for --target-help
and -ftarget-help.
(static_spec_functions): Add print-asm-header.
(main): Print a banner before the --target-help linker options.
(print_asm_header_spec_function): New function.
From-SVN: r124175
* real.c (mpfr_from_real): Handle Inf and NaN, and allow the
rounding mode to be specified by the caller.
(real_to_mpfr) Likewise.
* real.h: Update mpfr_from_real, mpfr_to_real prototypes to
include new arguments.
* builtins.c: Update mpfr_from_real, mpfr_to_real calls.
From-SVN: r124139
./: PR tree-optimization/31605
* tree-vrp.c (set_value_range): Check that min and max are not
both overflow infinities.
(set_value_range_to_value): New static function.
(extract_range_from_binary_expr): Call set_value_range_to_value.
(extract_range_from_cond_expr): Likewise.
(extract_range_from_expr): Likewise.
(extract_range_from_unary_expr): Likewise. Don't create a range
which overflows on both sides.
(vrp_meet): Check for a useless range.
(vrp_visit_phi_node): If we see a constant which looks like an
overflow infinity, turn off the TREE_OVERFLOW flag.
testsuite/:
PR tree-optimizatoin/31605
* gcc.c-torture/execute/pr31605.c: New test.
From-SVN: r124128
2007-04-24 Simon Martin <simartin@users.sourceforge.net>
PR diagnostic/25923
* tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
diagnostic message is being built.
* tree-pretty-print.c (dump_generic_node): Only write the formatted text
into BUFFER's stream if we are not building a diagnostic message.
* toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
dump_generic_node.
* Makefile.in (toplev.o): Depend on tree-pass.h.
From-SVN: r124121
./: PR tree-optimization/31602
* tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
conditionals in the copied loop header.
* tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
warnings if TREE_NO_WARNING is set.
* doc/invoke.texi (Warning Options): Clarify that
-Wstrict-overflow does not warn about loops.
testsuite/:
PR tree-optimization/31602
* gcc.dg/Wstrict-overflow-11.c: We no longer issue a warning.
From-SVN: r124120
* config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
expand on the comment about _Decimal128 arguments and check the
integer result of the modulus operation; for 64-bit ELF ABI, ensure
that _Decimal128 argument uses even/odd register pair.
(function_arg): For 32-bit ELF ABI, expand on the comment about
_Decimal128 arguments and check the integer result of the modulus
operation; for 64-bit ELF ABI, ensure that _Decimal128 argument
uses even/odd register pair.
testsuite/
* gcc.target/powerpc/ppc32-abi-dfp-1.c: New test.
* gcc.target/powerpc/ppc64-abi-dfp-1.c: New test.
From-SVN: r124116
2007-04-24 Hui-May Chang <hm.chang@apple.com>
* reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
* gcc.target/i386/reload-1.c. New.
From-SVN: r124115
* libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
IS_IBM_EXTENDED. Also define in terms of WIDEST_HARDWARE_FP_SIZE.
* libgcc2.c (__floatdisf): Avoid double-word arithmetic when
looking for non-zero bits shifted out. Avoid a recursive call
when constructing the scalar.
(__floatundisf): Likewise.
From-SVN: r124106
* dwarf2out.c (field_byte_offset): Move the existing logic
under the control of PCC_BITFIELD_TYPE_MATTERS and just use
the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
From-SVN: r124104
2007-04-24 Andreas Krebbel <krebbel1@de.ibm.com>
PR target/31641
* config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length
argument of 0 for memset.
(s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
unsigned shift instead of the signed variant.
2007-04-24 Andreas Krebbel <krebbel1@de.ibm.com>
PR target/31641
* gcc.c-torture/compile/pr31641.c: New testcase.
From-SVN: r124099
gcc/
2007-xx-xx Chao-ying Fu <fu@mips.com>
Richard Sandiford <richard@nildram.co.uk>
* doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
* optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
(smadd_widen_optab, umadd_widen_optab): Define.
* optabs.c (init_optabs): Initialize smadd_widen_optab and
umadd_widen_optab.
* genopinit.c (optabs): Fill in smadd_widen_optab and
umadd_widen_optab.
* expr.c (expand_expr_real_1): Try to use smadd_widen_optab
and umadd_widen_optab to implement multiply-add sequences.
* config/mips/mips.md (*<su>mul_acc_di): Rename to...
(<u>maddsidi4): ...this. Extend condition to include
GENERATE_MADD_MSUB and TARGET_DSPR2. Change the constraint
of operand 0 to "ka" and use the three-operand form of madd<u>
for TARGET_DSPR2.
* config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
to define_expands.
* config/mips/constraints.md (ka): New register constraint.
gcc/testsuite/
2007-xx-xx Richard Sandiford <richard@nildram.co.uk>
* gcc.target/mips/madd-1.c, gcc.target/mips/madd-2.c,
* gcc.target/mips/madd-3.c, gcc.target/mips/madd-4.c,
* gcc.target/mips/maddu-1.c, gcc.target/mips/maddu-2.c,
* gcc.target/mips/maddu-3.c, gcc.target/mips/maddu-4.c: New tests.
From-SVN: r124095