re PR middle-end/31530 (Incorrect folding of multiplication and sign change when...
[gcc.git] / gcc / ChangeLog
index 00d1e9e96a90beb213f5e3a018233cd5bf4d4d4c..7d85c96bd313c53bb072aa3451b3a3e83726b7a2 100644 (file)
@@ -1,3 +1,387 @@
+2007-04-11  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/31530
+       * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
+       a * -b + c as c - a * b if we honor sign dependent rounding.
+
+2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
+       bfin_expand_strmov.
+       * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
+       bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
+       variables.
+       (initialize_trampoline): Don't use old-style function definition.
+       (bfin_secondary_reload): Mark IN_P argument as unused.
+
+2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
+
+       PR tree-optimization/31343
+       * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
+       (build_polynomial_chrec): Return a scalar when the evolution is zero.
+       * testsuite/gcc.dg/vect/pr31343.c: New.
+
+2007-04-10  Eric Christopher  <echristo@apple.com>
+
+       * config/i386/i386.h (X87_FLOAT_MODE_P): New.
+       * config/i386/i386.md (*cmpfp0): Use.
+       (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
+       (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
+       (fix_trunc<mode>_i386_fisttp): Ditto.
+       (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
+       (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
+       (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
+       (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
+       (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
+       (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
+       (unnamed_splitters): Ditto.
+       * config/i386/i386.c (output_fix_trunc): Assert that
+       we're not being passed a TFmode operand.
+
+2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
+
+       PR tree-optimization/31526
+       * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
+       n_basic_blocks to find newly added blocks.
+
+2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
+       alternative.
+       (fix_trunc<mode>si_sse): Ditto.
+       (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
+       (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
+       (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
+       (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
+       (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
+       expander using SSEMODEF mode macro.
+       (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
+       expander using SSEMODEF mode macro.
+       (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
+       *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
+       (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
+       *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
+       (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
+       *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
+       (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
+       Macroize insn using X87MODEF mode macro.
+
+2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/i386/sse.md (sse2_pinsrw): Removed.
+       (sse2_pextrw): Renamed to ...
+       (*sse2_pextrw): This.
+
+2007-04-09  Jan Hubicka  <jh@suse.cz>
+
+       PR target/27869
+       * config/i386/sse.md
+       (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
+       (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
+       (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
+       (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
+
+2007-04-09  Jan Hubicka  <jh@suse.cz>
+
+       * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
+       multiple fields of union.
+
+2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
+
+       * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
+       (create_preheaders): Check that loops are available.
+       (fix_loop_structure): Clean up, improve comments.
+       * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
+       Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
+       state flags.
+       * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
+       * predict.c (tree_estimate_probability): Do not call
+       calculate_dominance_info.  Call create_preheaders.
+       * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
+       rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
+       flags.
+       * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
+       * cfgloop.h (LOOP_CLOSED_SSA): New constant.
+       * tree-cfg.c (tree_split_edge): Make an assert more precise.
+       * tree-ssa-threadedge.c (thread_across_edge): Comment the function
+       arguments.
+
+2007-04-08  Jan Hubicka  <jh@suse.cz>
+
+       * tree.h (maybe_fold_offset_to_component_ref): Declare.
+       * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
+       * fold-const.c (fold_unary): Use it.
+
+2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+       * varasm.c (assemble_variable): Remove call to
+       lang_hooks.decls.prepare_assemble_variable.
+       * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
+       (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
+       * langhooks.h (lang_hooks_for_decls): Remove
+       prepare_assemble_variable.
+
+2007-04-08  Mike Stump  <mrs@apple.com>
+
+       * config/i386/i386.c: Use inc/dec on Core2.
+
+2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
+
+       * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
+       lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
+       lhd_tree_inlining_end_inlining): Remove.
+       * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
+       add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
+       end_inlining hooks.
+       * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
+       lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
+       lhd_tree_inlining_end_inlining): Remove prototypes.
+       (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
+       LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
+       LANG_HOOKS_TREE_INLINING_START_INLINING,
+       LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
+
+       * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
+       not set it.
+
+2007-04-08  Anatoly Sokolov <aesok@post.ru>
+
+       PR target/29932
+       * config/avr/predicates.md (io_address_operand): Delete predicate.
+       (low_io_address_operand): Don't use 'mode' argument.
+       (higth_io_address_operand): Rename ...
+       (high_io_address_operand): ... to this. Don't use 'mode' argument.
+       * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
+       for above change.
+
+2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
+
+       Revert change removing staticp.
+
+2007-04-07  Anatoly Sokolov <aesok@post.ru>
+
+       PR target/30289
+       * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
+       earlyclobber.
+
+2007-04-07  Bruce Korb  <bkorb@gnu.org>
+
+       * c.opt: Add -Wformat-contains-nul.
+       * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
+         -Wformat setting.
+       (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
+       the NUL byte warning.
+
+2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
+
+2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
+
+       * tree.c (staticp): No longer use staticp langhook.
+       * langhooks.c (lhd_staticp): Removed.
+       * langhooks.h (struct lang_hooks): Remove staticp.
+       * c-common.c (c_staticp): Remove.
+       * c-common.h (c_staticp): Ditto.
+       * langhooks-defs.h (lhd_staticp): Ditto.
+       (LHD_HOOKS_STATICP): Ditto
+       * tree.h (gcc_assert_lowered): New macro.
+
+2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
+
+       * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
+       argument "reliable".
+       (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
+       Add argument "reliable".  Propagate it through calls.
+       (infer_loop_bounds_from_undefined):  Derive number of iterations
+       estimates from references in blocks that do not dominate loop latch.
+       (gcov_type_to_double_int): New function.
+       (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
+       and expected_loop_iterations_unbounded.
+       * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
+       (expected_loop_iterations): Use expected_loop_iterations_unbounded.
+       * tree-data-ref.c (estimated_loop_iterations): Export.
+       (get_references_in_stmt): Fix -- do not return addresses of local
+       objects.
+       * cfgloop.h (expected_loop_iterations_unbounded,
+       estimated_loop_iterations): Declare.
+
+2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
+
+       * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
+
+2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
+       and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
+       (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
+       Use output_387_reg_move().
+       (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
+       expander using X87MODEF12 mode macro.
+       (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
+       choosing register preferences.  Use output_387_reg_move().
+       (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
+       instead of "x".  Use output_387_reg_move().
+       (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
+       *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
+       (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
+       *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
+       Use output_387_reg_move().
+       (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
+       mode macro.
+       (*truncxf?f_i387 splitter): Ditto.
+
+2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
+
+       * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
+       LANG_HOOKS_SAFE_FROM_P.
+       * expr.c (safe_from_p): Remove langhook call.
+       * langhooks.h (lang_hooks): Remove safe_from_p.
+       (lhd_safe_from_p): Remove prototype.
+       * langhooks.c (lhd_safe_from_p): Remove.
+
+2007-04-06  Jan Hubicka  <jh@suse.cz>
+
+       * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
+       functions.
+
+2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
+       * config/i386/i386.md (*movsf_1, *movdf_nointeger,
+       *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
+       *movxf_integer): Use output_387_reg_move() for x87 reg->mem
+       alternative.
+       (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
+       *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
+
+2007-04-05  Richard Henderson  <rth@redhat.com>
+
+       * config/alpha/alpha.c (print_operand) [+]: Remove.
+       (alpha_end_function): Print nop if call at end of function.
+       * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
+       * config/alpha/alpha.md (UNSPEC_LDGP1): New.
+       (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
+       (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
+       (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
+       the call pattern. Update peepholes to match.
+
+2007-04-05  Janis Johnson  <janis187@us.ibm.com>
+
+       * doc/extend.texi (Other Builtins): Add decimal float variants
+       of signbit.
+       * builtins.def: Ditto.
+       * builtins.c (expand_builtin): Ditto.
+
+2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
+           H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/31478
+       * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
+       of V8HImode when calling ix86_binary_operator_ok.
+       (sse2_pmaddwd): Call ix86_binary_operator_ok.
+       (sdot_prodv8hi): Operands 1 and 2 must be register.
+
+2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
+
+       * tree-sra.c (try_instantiate_multiple_fields): Needlessly
+       initialize align to silence bogus warning.
+
+2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR middle-end/22156
+       * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
+       all_no_warning.
+       (struct sra_walk_fns): Remove use_all parameter from use.
+       (sra_hash_tree): Handle BIT_FIELD_REFs.
+       (sra_elt_hash): Don't hash bitfld blocks.
+       (sra_elt_eq): Skip them in parent compares as well.  Handle
+       BIT_FIELD_REFs.
+       (sra_walk_expr): Don't maintain or pass down use_all_p.
+       (scan_use): Remove use_all parameter.
+       (scalarize_use): Likewise.  Re-expand assignment to
+       BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
+       output, and re-scalarize after output.  Don't mark anything
+       for no warning.
+       (scalarize_ldst): Adjust.
+       (scalarize_walk_gimple_modify_statement): Likewise.
+       (build_element_name_1): Handle BIT_FIELD_REFs.
+       (instantiate_element): Don't warn for any element whose parent
+       is used as a whole.
+       (instantiate_missing_elements_1): Return the sra_elt.
+       (canon_type_for_field): New.
+       (try_instantiate_multiple_fields): New.
+       (instantiate_missing_elemnts): Use them.
+       (mark_no_warning): Removed.
+       (generate_one_element_ref): Handle BIT_FIELD_REFs.
+       (REPLDUP, sra_build_elt_assignment): New.
+       (generate_copy_inout): Use them.
+       (generate_element_copy): Likewise.  Handle bitfld differences.
+       (generate_element_zero): Don't recurse for blocks.  Use
+       sra_build_elt_assignment.
+       (generate_one_element_int): Take elt instead of var.  Use
+       sra_build_elt_assignment.
+       (generate_element_init_1): Adjust.
+       (scalarize_use, scalarize_copy): Use REPLDUP.
+       (scalarize_ldst): Move assert before dereference.
+       (dump_sra_elt_name): Handle BIT_FIELD_REFs.
+
+2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
+
+       * regmove.c: Fix unused variable warnings due to previous commit.
+
+2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
+
+       * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
+       (regmove_bb_head): Remove.
+       (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
+       (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
+       problems with fixup_match_1.
+       Don't initialize/free regmove_bb_head.
+
+       (reg_is_remote_constant_p): If an insn is in the same basic block
+       but not before INSN, consider it remote, too.
+
+2007-04-05  Anatoly Sokolov <aesok@post.ru>
+
+       PR target/25448
+       * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
+       DECL_ASSEMBLER_NAME, not the DECL_NAME.
+
+2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
+       (CONDITIONAL_REGISTER_USAGE): Likewise.
+
+2007-04-04  Richard Henderson  <rth@redhat.com>
+
+       * config/alpha/lib1funcs.asm: Remove unused file.
+
+2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
+
+       PR other/31356
+       * opts.c (print_specific_help): Fix --help=<language>
+       header line.
+       (common_handle_option): Support --help=common.
+
+2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
+
+       PR other/31353
+       * gcc.c (main): Do not run the linker if
+       print_subprocess_help indicates that it shouldn't be
+       run.
+
+2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
+
+       PR doc/31355
+       * doc/invoke.texi (--help=): Document <languages> value, fix
+       formatting in tables of values.
+
+2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
+
+       * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
+       dllimport attribute of virtual methods.
+
 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
 
         * config/score/crti.asm: Change _bss_start to __bss_start.
 
 2007-03-30  Jan Hubicka  <jh@suse.cz>
 
-       PR middle-end/PR30700
+       PR middle-end/30700
        * dwarf2out.c (reference_to_unused): Ask cgraph for functions
        availablility; add more sanity checking; ask varpool only about
        VAR_DECL.