OSDN Git Service

PR tree-optimization/50693
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 539551a..25eb1ce 100644 (file)
@@ -1,3 +1,260 @@
+2011-11-05  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/50693
+       * tree-cfg.c (gimple_can_merge_blocks_p): Allow merging with
+       non-forced user labels.
+       (gimple_merge_blocks): Turn non-forced user labels into
+       debug bind stmt with the label as first operand and reset value.
+       (gimple_duplicate_bb): Don't duplicate label debug stmts.
+       * dwarf2out.c (gen_label_die): Handle NOTE_INSN_DELETED_DEBUG_LABEL.
+       * final.c (final_scan_insn): Likewise.
+       (rest_of_clean_state): Don't dump NOTE_INSN_DELETED_DEBUG_LABEL.
+       * var-tracking.c (debug_label_num): New variable.
+       (delete_debug_insns): Don't delete DEBUG_INSNs for LABEL_DECLs,
+       instead turn them into NOTE_INSN_DELETED_DEBUG_LABEL notes.
+       * cfglayout.c (skip_insns_after_block, duplicate_insn_chain): Handle
+       NOTE_INSN_DELETED_DEBUG_LABEL.
+       (duplicate_insn_chain): Don't duplicate LABEL_DECL DEBUG_INSNs.
+       * insn-notes.def (DELETED_DEBUG_LABEL): New note kind.
+       * print-rtl.c (print_rtx): Handle NOTE_INSN_DELETED_DEBUG_LABEL.
+       * gengtype.c (adjust_field_rtx_def): Likewise.
+       * config/i386/i386.c (ix86_output_function_epilogue): For MachO
+       clear CODE_LABEL_NUMBER of NOTE_INSN_DELETED_DEBUG_LABEL
+       if their are at the end of function and nop hasn't been emitted.
+       * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Likewise.
+
+2011-11-05  Georg-Johann Lay  <avr@gjlay.de>
+
+       PR rtl-optimization/50448
+       * cprop.c (try_replace_reg): Also try to replace uses of FROM that
+       appear in SET_DEST.
+
+2011-11-05  Peter Dufault  <dufault@hda.com>,
+           Sebastian Huber  <sebastian.huber@embedded-brains.de>
+
+       * config/rs6000/rtems.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
+       Extend rs6000_spe handling.
+
+2011-11-05  Ralf Corsépius  <ralf.corsepius@rtems.org>
+
+       * config/rs6000/t-rtems: Add -mcpu=8540/-mfloat-gprs=double multilib.
+       Remove -mcpu=601 multilib.
+       Remove -Dmpc8260 multilib.
+       * config/rs6000/rtems.h: Allow --float-gprs=... to override grps
+       on E500 targets.        
+
+2011-11-05  Quentin Neill  <quentin.neill@amd.com>
+
+       Piledriver f16cintrin.h fix.
+       * config/i386/f16cintrin.h: Contents moved from immintrin.h.
+       * config/config.gcc: Add f16cintrin.h.
+
+2011-11-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR c++/50608
+       * c-parser.c (c_parser_postfix_expression) <RID_OFFSETOF>: Adjust call
+       to fold_offsetof.
+       * c-typeck.c (build_unary_op) <ADDR_EXPR>: Call fold_offsetof_1.
+
+2011-11-04  Alan Modra  <amodra@gmail.com>
+
+       * reload1.c (gen_reload): Don't use REGNO on SUBREGs.
+       * print-rtl.c (print_rtx): Don't segfault on negative regno.
+
+2011-11-04  David S. Miller  <davem@davemloft.net>
+
+       PR target/49965
+       * config/sparc/sparc.c (sparc_expand_conditional_move): Handle the
+       fact that sparc_emit_float_lib_cmp modifies the comparison in
+       operands[1].
+
+2011-11-04  Ralf Corsépius  <ralf.corsepius@rtems.org>
+
+       * config/lm32/t-rtems: New.
+       * config.gcc (lm32-*-rtems*): Add t-rtems.
+
+2011-11-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR target/50979
+       * config/sparc/sparc.h (ASM_CPU_SPEC): Pass -Av8 if -mcpu=v8.
+
+2011-11-04  Jiangning Liu  <jiangning.liu@arm.com>
+
+       PR rtl-optimization/38644
+       * config/arm/arm.c (thumb1_expand_epilogue): Add memory barrier
+       for epilogue having stack adjustment.
+
+2011-11-04  Georg-Johann Lay  <avr@gjlay.de>
+
+       PR target/50931
+       * config/avr/avr-modes.def: New file defining PSImode.
+       * config/avr/avr-c.c (__INT24_MAX__, __INT24_MIN__,
+       __UINT24_MAX__): New built-in defines.
+       * config/avr/avr.md (adjust_len): Add tstpsi, mov24,  reload_in24,
+       ashlpsi, ashrpsi, lshrpsi.
+       (QISI, QIDI, HISI, HIDI, MPUSH, rotx, rotsmode): Add PSI.
+       (MOVMODE): New mode iterator.
+       (movpsi): New expander.
+       (movqi, movhi, movsi, movsf, movpsi): Write as one using MOVMODE.
+       (*reload_inpsi, *movpsi): New insns.
+       (*reload_inpsi): New RTL peephole.
+       (addpsi3, *addpsi3_zero_extend.qi, *addpsi3_zero_extend.hi,
+       *addpsi3_sign_extend.hi): New insns.
+       (subpsi3, *subpsi3_zero_extend.qi, *subpsi3_zero_extend.hi,
+       *subpsi3_sign_extend.hi): New insns.
+       (divmodpsi4, udivmodpsi4): New define insn-and-split.
+       (*divmodpsi4_call, *udivmodpsi4_call): New insns.
+       (andpsi3, iorpsi3, xorpsi3): New insns.
+       (*rotlpsi2.1, *rotlpsi2.23): New insns.
+       (*rotw<mode>): Insn condition only allow even-sized modes.
+       (*rotb<mode>): Insn condition allows odd-sized modes.
+       (ashlpsi3, ashrpsi3, lshrpsi3, *addpsi3.lt0): New insns.
+       (negpsi2, one_cmplpsi2): New insns.
+       (extendqipsi2, extendhipsi2, extendpsisi2): New insns.
+       (zero_extendqipsi2, zero_extendhipsi2, zero_extendpsisi2): New
+       insn-and-splits.
+       (*cmppsi, *negated_tstpsi, *reversed_tstpsi): New insns.
+       (cbranchpsi4): New expander.
+       * config/avr/constraints.md (Ca3, Co3, Cx3): New constraints.
+       * config/avr/avr-protos.h (avr_out_tstpsi, avr_out_movpsi,
+       avr_out_ashlpsi3, avr_out_ashrpsi3, avr_out_lshrpsi3,
+       avr_out_reload_inpsi): New prototypes.
+
+       * config/avr/avr.c (TARGET_SCALAR_MODE_SUPPORTED_P): Define to...
+       (avr_scalar_mode_supported_p): ...this new static function.
+       (avr_asm_len): Always return "".
+       (avr_out_load_psi, avr_out_store_psi): New static functions.
+       (avr_out_movpsi, avr_out_reload_inpsi): New functions.
+       (avr_out_tstpsi): New function.
+       (avr_out_ashlpsi3, avr_out_ashrpsi3, avr_out_lshrpsi3): New functions.
+       (avr_out_plus_1, output_reload_in_const): Handle 3-byte types.
+       (avr_simplify_comparison_p): Ditto.
+       (adjust_insn_length): Handle ADJUST_LEN_RELOAD_IN24,
+       ADJUST_LEN_MOV24, ADJUST_LEN_TSTPSI, ADJUST_LEN_ASHLPSI,
+       ADJUST_LEN_ASHRPSI, ADJUST_LEN_LSHRPSI.
+       (avr_rtx_costs_1): Report PSI costs.
+       (avr_libcall_value): Handle odd-sized parameters.
+       (avr_init_builtin_int24): New static function to define built-in
+       24-bit types __int24 and __uint24.
+       (avr_init_builtins): Use it.
+
+2011-11-04  Thomas Doerfler <thomas.doerfler@embedded-brains.de>
+
+       PR target/50989
+       * config/arm/rtems-elf.h, config/arm/t-rtems: Add optional
+       support for VFP floating point model.
+
+2011-11-04  Tristan Gingold  <gingold@adacore.com>
+
+       * config/alpha/vms.h (ASM_OUTPUT_DEF): Do not switch section.
+
+2011-11-04  Ira Rosen  <ira.rosen@linaro.org>
+
+       Unrevert:
+       2011-10-24  Ira Rosen  <ira.rosen@linaro.org>
+
+       PR tree-optimization/50730
+       * tree-vect-data-refs.c (vect_analyze_data_refs): Stop basic block
+       analysis if encountered unsupported data-ref.
+
+2011-11-04  Jakub Jelinek  <jakub@redhat.com>
+
+       * config/i386/i386.c (ix86_expand_vector_convert_uns_vsivsf): New
+       function.
+       * config/i386/i386-protos.h (ix86_expand_vector_convert_uns_vsivsf):
+       New prototype.
+       * config/i386/sse.md (floatuns<sseintvecmodelower><mode>2): Use it.
+       For floatunsv8siv8sf2 require TARGET_AVX2.
+
+       * config/i386/i386.c (ix86_expand_adjust_ufix_to_sfix_si): Add
+       XORP argument.  Subtract 0x1p31 instead of 0x1p32.  Use normal
+       signalling comparison instead of non-signalling.  Store into
+       *XORP pseudo holding 0x80000000 integers if 0x1p31 has been
+       subtracted and 0 otherwise.
+       * config/i386/i386-protos.h (ix86_expand_adjust_ufix_to_sfix_si):
+       Adjust prototype.
+       * config/i386/sse.md (fixuns_trunc<mode><sseintvecmodelower>2): Enable
+       already for TARGET_SSE2.  Xor in vector initialized by
+       ix86_expand_adjust_ufix_to_sfix_si at the end.
+       (vec_pack_ufix_trunc_<mode>): Likewise.
+
+       * tree-vect-stmts.c (vectorizable_conversion): Rewritten to handle
+       not just FLOAT_EXPR and FIX_TRUNC_EXPR, but also CONVERT_EXPR_CODE_P,
+       WIDEN_MULT_EXPR and WIDEN_LSHIFT_EXPR to handle what
+       vectorizable_type_demotion and vectorizable_type_promotion did.
+       Additionally handle FLOAT_EXPR and FIX_TRUNC_EXPR where the integer
+       is {,un}signed {char,short}.
+       (vect_create_vectorized_demotion_stmts): Fix comment typo.  For
+       recursive calls unconditionally use VEC_PACK_TRUNC_EXPR.
+       Push vec_dest back to the vec_dsts vector at the end.
+       (vect_create_vectorized_promotion_stmts): Don't recurse, do just
+       one step.  Removed multi_step_cvt, vec_dsts, slp_node and
+       prev_stmt_info arguments, add vec_dest argument.  Push always
+       into vec_tmp, not just when multi_step_cvt != 0, replace *vec_oprdn0
+       with vec_tmp at the end after freeing old *vec_oprnd0 vector.
+       (vectorizable_type_demotion, vectorizable_type_promotion): Removed.
+       (vect_analyze_stmt): Don't call vectorizable_type_demotion and
+       vectorizable_type_promotion.  Call vectorizable_conversion even
+       for SLP bb vectorization.
+       (vect_transform_stmt): Call vectorizable_conversion instead of
+       vectorizable_type_demotion and vectorizable_type_promotion.
+       (supportable_widening_operation): Clear *multi_step_cvt first,
+       simplify c1/c2 computation, free *interm_types vector on failure.
+       (supportable_narrowing_operation): Clear *multi_step_cvt first,
+       free *interm_types vector on failure, handle multi-step
+       FIX_TRUNC_EXPR.
+
+2011-11-04  Tristan Gingold  <gingold@adacore.com>
+
+       * config/alpha/alpha.c (alpha_write_linkage): Remove fundecl
+       argument.  Conditionally generate crash debug info.  Adjust
+       for alpha_funcs_tree removal.
+       (machine_function): Add links field.
+       (alpha_start_function): Conditionally generate crash debug info.
+       (alpha_end_function): Adjust call to alpha_write_linkage.
+       (alpha_funcs): Remove.
+       (links_kind): Remove.
+       (alpha_links): Remove num, target and lkind field.  Add func field.
+       (alpha_links_tree): Remove.
+       (alpha_funcs_tree): Remove.
+       (alpha_need_linkage): Remove.
+       (alpha_use_linkage): Change prototype.  Adjust.
+       (alpha_write_one_linkage): Use ASM_OUTPUT_INTERNAL_LABEL.
+       Use SYMBOL_REF_EXTERNAL_P and SYMBOL_REF_LOCAL_P macro.
+       * config/alpha/alpha-protos.h (alpha_use_linkage): Update.
+       (alpha_need_linkage): Remove.
+       * config/alpha/alpha.md: Update calls to alpha_use_linkage.
+       Adjust calls to alpha_need_linkage.
+
+2011-11-03  Uros Bizjak  <ubizjak@gmail.com>
+
+       * sched-vis.c (print_value): Handle STRICT_LOW_PART.
+
+2011-11-03  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.md (lround<X87MODEF:mode><SWI248x:mode>2,
+       rint<mode>2, floor<mode>2, lfloor<MODEF:mode><SWI48:mode>2,
+       btrunc<mode>2, lwp_lwpval<mode>3): Use operands[N] instead of operandN.
+
+2011-11-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       PR target/50978
+       * config/arm/t-bpabi: New file.
+       * config.gcc (arm*-*-linux*): Add arm/t-bpabi to tmake_file for
+       arm*-*-linux-*eabi.
+       (arm*-*-uclinux*): Add arm/t-bpabi to tmake_file for
+       arm*-*-uclinux*eabi.
+       (arm*-*-eabi*, arm*-*-symbianelf*): Add arm/t-bpabi to tmake_file
+       for arm*-*-eabi*.
+
+2011-11-03  Michael Matz  <matz@suse.de>
+
+       PR bootstrap/50857
+       * configure.ac: Check for -fno-exceptions -fno-rtti.
+       * configure: Regenerate.
+       * Makefile.in (NOEXCEPTION_FLAGS): New flag.
+       (ALL_CXXFLAGS): Use it.
+
 2011-11-03  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/i386.md: Use {} for multi-line preparation statements.
        known_current_type and multiple_types_encountered.
        (extr_type_from_vtbl_ptr_store): New function.
        (check_stmt_for_type_change): Use it, set multiple_types_encountered if
-        the result is different from the previous one.
+       the result is different from the previous one.
        (detect_type_change): Renamed to detect_type_change_1. New parameter
        comp_type.  Set up new fields in tci, build known type jump
        functions if the new type can be identified.