S/390: movdf improvements
[gcc.git] / gcc / ChangeLog
index 95f52b372a3bfdbbf175ff0806c596b5cf3c035a..bf69f7a4d8dd3c77850c9212ad2663963fe16176 100644 (file)
@@ -1,3 +1,424 @@
+2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+       * config/s390/s390.md ("mov<mode>_64dfp" DD_DF): Use vleig for loading a
+       FP zero.
+       ("*mov<mode>_64" DD_DF): Remove the vector instructions. These
+       will anyway by matched by mov<mode>_64dfp.
+
+2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+       * config/s390/s390.md ("mov<mode>" SD_SF): Change vleg/vsteg to
+       vlef/vstef.  Add missing operand to vleif.
+
+2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+       * config/s390/s390.c (s390_expand_vec_init): Enable vector load
+       pair for all vector types with 64 bit elements.
+       * config/s390/vx-builtins.md (V_HW_64): Move mode iterator to ...
+       * config/s390/vector.md (V_HW_64): ... here.
+       (V_128_NOSINGLE): New mode iterator.
+       ("vec_init<V_HW:mode>"): Use V_128 as mode iterator.
+       ("*vec_splat<mode>"): Use V_128_NOSINGLE mode iterator.
+       ("*vec_tf_to_v1tf", "*vec_ti_to_v1ti"): New pattern definitions.
+       ("*vec_load_pairv2di"): Change to ...
+       ("*vec_load_pair<mode>"): ... this one.
+
+2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+       * config/s390/constraints.md: Add comments.
+       (jKK): Reject element sizes > 8 bytes.
+       * config/s390/s390.c (s390_split_ok_p): Enable splitting also for
+       s_operands.
+       * config/s390/s390.md: Add the s_operand checks formerly in
+       s390_split_ok_p to various splitters where they are still
+       required.
+       * config/s390/vector.md ("mov<mode>" V_128): Add GPR alternatives
+       for 128 bit vectors.  Plus two splitters.
+
+2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+       * config/s390/s390.md: Rename the cpu facilty vec to vx throughout
+       the file.
+
+2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+       PR target/79893
+       * config/s390/s390-c.c (s390_adjust_builtin_arglist): Issue an
+       error if the boundary argument is not constant.
+
+2017-03-24  Jakub Jelinek  <jakub@redhat.com>
+
+       PR rtl-optimization/80112
+       * loop-doloop.c (doloop_condition_get): Don't check condition
+       if cmp isn't SET with IF_THEN_ELSE src.
+
+2017-03-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       PR tree-optimization/80158
+       * gimple-ssa-strength-reduction.c (replace_mult_candidate): When
+       replacing a candidate statement, also replace it for the
+       candidate's alternate interpretation.
+       (replace_rhs_if_not_dup): Likewise.
+       (replace_one_candidate): Likewise.
+
+2017-03-24  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/80167
+       * graphite-isl-ast-to-gimple.c
+       (translate_isl_ast_to_gimple::is_valid_rename): Handle default-defs
+       properly.
+       (translate_isl_ast_to_gimple::get_rename): Likewise.
+
+2017-03-23  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+
+       * config/rs6000/rs6000.c (rs6000_option_override_internal): Change
+       handling of certain combinations of target options, including the
+       combinations -mpower8-vector vs. -mno-vsx, -mpower9-vector vs.
+       -mno-power8-vector, and -mpower9_dform vs. -mno-power9-vector.
+
+2017-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       PR target/71436
+       * config/arm/arm.md (*load_multiple): Add reload_completed to
+       matching condition.
+
+2017-03-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+            Richard Biener  <rguenth@suse.com>
+
+       PR tree-optimization/79908
+       PR tree-optimization/80136
+       * tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has
+       been cast away, gimplify_and_add suffices.
+
+2017-03-23  Markus Trippelsdorf  <markus@trippelsdorf.de> 
+
+       * tree-vrp.c (identify_jump_threads): Delete avail_exprs.
+
+2017-03-23  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/80032
+       * gimplify.c (gimple_push_cleanup): Forced unconditional
+       cleanups still have to go to the conditional_cleanups
+       sequence.
+
+2017-03-22  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/80072
+       * tree-ssa-reassoc.c (struct operand_entry): Change id field type
+       to unsigned int.
+       (next_operand_entry_id): Change type to unsigned int.
+       (sort_by_operand_rank): Make sure to return the right return value
+       even if unsigned fields are bigger than INT_MAX.
+       (struct oecount): Change cnt and id type to unsigned int.
+       (oecount_hasher::equal): Formatting fix.
+       (oecount_cmp): Make sure to return the right return value
+       even if unsigned fields are bigger than INT_MAX.
+       (undistribute_ops_list): Change next_oecount_id type to unsigned int.
+
+       PR c++/80129
+       * gimplify.c (gimplify_modify_expr_rhs) <case COND_EXPR>: Clear
+       TREE_READONLY on result if writing it more than once.
+
+       PR sanitizer/80110
+       * doc/invoke.texi (-fsanitize=thread): Document that with
+       -fnon-call-exceptions atomics are not able to throw
+       exceptions.
+
+       PR sanitizer/80110
+       * tsan.c: Include tree-eh.h.
+       (instrument_builtin_call): Call maybe_clean_eh_stmt or
+       maybe_clean_or_replace_eh_stmt where needed.
+       (instrument_memory_accesses): Add cfg_changed argument.
+       Call gimple_purge_dead_eh_edges on each block and set *cfg_changed
+       if it returned true.
+       (tsan_pass): Adjust caller.  Return TODO_cleanup_cfg if cfg_changed.
+
+       PR rtl-optimization/63191
+       * config/i386/i386.c (ix86_delegitimize_address): Turn into small
+       wrapper function, moved the whole old content into ...
+       (ix86_delegitimize_address_1): ... this.  New inline function.
+       (ix86_find_base_term): Use ix86_delegitimize_address_1 with
+       true as last argument instead of ix86_delegitimize_address.
+
+2017-03-22  Wilco Dijkstra  <wdijkstr@arm.com>
+
+       * config/aarch64/aarch64.c (generic_branch_cost): Copy
+       cortexa57_branch_cost.
+
+2017-03-22  Wilco Dijkstra  <wdijkstr@arm.com>
+
+       * config/aarch64/aarch64.c (generic_tunings): Add AES fusion.
+
+2017-03-21  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
+
+       PR target/80123
+       * doc/md.texi (Constraints): Document wA constraint.
+       * config/rs6000/constraints.md (wA): New.
+       * config/rs6000/rs6000.c (rs6000_debug_reg_global): Add wA reg_class.
+       (rs6000_init_hard_regno_mode_ok): Init wA constraint.
+       * config/rs6000/rs6000.h (RS6000_CONSTRAINT_wA): New.
+       * config/rs6000/vsx.md (vsx_splat_<mode>): Use wA constraint.
+
+2017-03-22  Cesar Philippidis  <cesar@codesourcery.com>
+
+       PR c++/80029
+       * gimplify.c (is_oacc_declared): New function.
+       (oacc_default_clause): Use it to set default flags for acc declared
+       variables inside parallel regions.
+       (gimplify_scan_omp_clauses): Strip firstprivate pointers for acc
+       declared variables.
+       (gimplify_oacc_declare): Gimplify the declare clauses.  Add the
+       declare attribute to any decl as necessary.
+
+2017-03-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+
+       PR target/80082
+       * config/arm/arm-isa.h (isa_bit_lpae): New feature bit.
+       (ISA_ARMv7ve): Add isa_bit_lpae to the definition.
+       * config/arm/arm-protos.h (arm_arch7ve): Rename into ...
+       (arm_arch_lpae): This.
+       * config/arm/arm.c (arm_arch7ve): Rename into ...
+       (arm_arch_lpae): This.  Define it in term of isa_bit_lpae.
+       * config/arm/arm.h (TARGET_HAVE_LPAE): Redefine in term of
+       arm_arch_lpae.
+
+2017-03-22  Martin Liska  <mliska@suse.cz>
+
+       PR target/79906
+       * config/rs6000/rs6000.c (rs6000_inner_target_options): Show
+       error message instead of an ICE.
+
+2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       * doc/extend.texi (6.11 Additional Floating Types): Revise.
+
+2017-03-21  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+
+       * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add
+       comments.
+       * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
+       comments.
+
+2017-03-21  Martin Sebor  <msebor@redhat.com>
+
+       * doc/extend.texi: Use "cannot" instead of "can't."
+       * doc/hostconfig.texi: Same.
+       * doc/install.texi: Same.
+       * doc/invoke.texi: Same.
+       * doc/loop.texi: Same.
+       * doc/md.texi: Same.
+       * doc/objc.texi: Same.
+       * doc/rtl.texi: Same.
+       * doc/tm.texi: Same.
+       * doc/tm.texi.in: Same.
+       * doc/trouble.texi: Same.
+
+2017-03-21  Alexandre Oliva <aoliva@redhat.com>
+
+       PR debug/63238
+       * dwarf2out.c (struct checksum_attributes): Add at_alignment.
+       (collect_checksum_attributes): Set it.
+       (die_checksum_ordered): Use it.
+
+2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       PR tree-optimization/79908
+       * tree-stdarg.c (expand_ifn_va_arg_1): Revert the following
+       change: For a VA_ARG whose LHS has been cast away, use
+       force_gimple_operand to construct the side effects.
+
+2017-03-21  David Malcolm  <dmalcolm@redhat.com>
+
+       PR translation/80001
+       * omp-offload.c (oacc_loop_fixed_partitions): Make diagnostics
+       more amenable to translation.
+       (oacc_loop_auto_partitions): Likewise.
+
+2017-03-21  Marek Polacek  <polacek@redhat.com>
+           Martin Sebor  <msebor@redhat.com>
+
+       PR tree-optimization/80109
+       * gimple-ssa-warn-alloca.c (alloca_call_type): Only call get_range_info
+       on INTEGRAL_TYPE_P.
+
+2017-03-21  Jakub Jelinek  <jakub@redhat.com>
+           Segher Boessenkool  <segher@kernel.crashing.org>
+
+       PR target/80125
+       * combine.c (can_combine_p): Revert the 2017-03-20 change, only
+       check reg_used_between_p between insn and one of succ or succ2
+       depending on if succ is artificial insn not inserted into insn
+       stream.
+
+2017-03-21  Martin Liska  <mliska@suse.cz>
+
+       PR gcov-profile/80081
+       * Makefile.in: Add gcov-dump and fix installation of gcov-tool.
+       * doc/gcc.texi: Include gcov-dump stuff.
+       * doc/gcov-dump.texi: New file.
+
+2017-03-21  Toma Tabacu  <toma.tabacu@imgtec.com>
+
+       PR rtl-optimization/79150
+       * config/mips/mips.c (mips_block_move_loop): Emit a NOP after the
+       conditional jump, if the jump is the last insn of the loop.
+
+2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+            Richard Biener  <rguenth@suse.com>
+
+       PR tree-optimization/79908
+       * tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has
+       been cast away, use force_gimple_operand to construct the side
+       effects.
+
+2017-03-21  Martin Liska  <mliska@suse.cz>
+
+       PR libfortran/79956
+       * simplify-rtx.c (simplify_immed_subreg): Initialize a variable
+       to NULL.
+
+2017-03-21  Brad Spengler <spender@grsecurity.net>
+
+       PR plugins/80094
+       * plugin.c (htab_hash_plugin): New function.
+       (add_new_plugin): Use it and adjust.
+       (parse_plugin_arg_opt): Adjust.
+       (init_one_plugin): Likewise.
+
+2017-03-21  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/80032
+       * gimplify.c (gimple_push_cleanup): Add force_uncond parameter,
+       if set force the cleanup to happen unconditionally.
+       (gimplify_target_expr): Push inserted clobbers with force_uncond
+       to avoid them being removed by control-dependent DCE.
+
+2017-03-21  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/80122
+       * tree-inline.c (copy_bb): Do not expans va-arg packs or
+       va_arg_pack_len when the inlined call stmt requires pack
+       expansion itself.
+       * tree-inline.h (struct copy_body_data): Make call_stmt a gcall *.
+
+2017-03-21  Jakub Jelinek  <jakub@redhat.com>
+
+       PR sanitizer/78158
+       * tsan.c (instrument_builtin_call): If the memory model argument
+       is not a constant, assume it is valid.
+
+       PR c/67338
+       * fold-const.c (round_up_loc): Negate divisor in unsigned type to
+       avoid UB.
+
+2017-03-20  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       PR rtl-optimization/79910
+       * combine.c (can_combine_p): Do not allow combining an I0 or I1
+       if its dest is used by an insn before I2 (other than the combined
+       insns themselves, which are properly handled already).
+
+2017-03-20  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       Revert:
+       2017-03-17  Bernd Schmidt  <bschmidt@redhat.com>
+
+       * combine.c (record_used_regs): New static function.
+       (try_combine): Handle situations where there is an additional
+       instruction between I2 and I3 which needs to have a LOG_LINK
+       updated.
+
+       Revert:
+       2017-03-17  Jim Wilson  <jim.wilson@linaro.org>
+
+       * combine.c (try_combine): Delete redundant i1 test.  Call
+       prev_nonnote_nondebug_insn instead of prev_nonnote_insn.
+
+2017-03-20  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
+
+       PR target/80083
+       * config/rs6000/rs6000.md (*movsi_internal1): Fix constraints for
+       alternatives 13/14.
+
+2017-03-20  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       PR tree-optimization/80054
+       * gimple-ssa-strength-reduction.c (all_phi_incrs_profitable): Fail
+       the optimization if a PHI or any of its arguments is not dominated
+       by the candidate's basis.  Use gphi* rather than gimple* as
+       appropriate.
+       (replace_profitable_candidates): Clean up a gimple* variable that
+       should be a gphi* variable.
+
+2017-03-20  Martin Sebor  <msebor@redhat.com>
+
+       PR c++/52477
+       * doc/extend.texi (attribute constructor): Document present limitation.
+
+2017-03-20  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+
+       PR target/79963
+       * config/rs6000/altivec.h (vec_all_ne): Under __cplusplus__ and
+       __POWER9_VECTOR__ #ifdef control, change template definition to
+       use Power9-specific built-in function.
+       (vec_any_eq): Likewise.
+       * config/rs6000/vector.md (vector_ae_v2di_p): Change the flag used
+       to control outcomes from this test.
+       (vector_ae_<mode>p): For VEC_F modes, likewise.
+
+2017-03-20  Ian Lance Taylor  <iant@google.com>
+
+       * config/i386/i386.c (ix86_function_regparm): Save an extra
+       register for -fsplit-stack with DECL_STATIC_CHAIN.
+
+2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com>
+
+       PR target/79912
+       * config/riscv/riscv.c (riscv_preferred_reload_class): Remove.
+       (TARGET_PREFERRED_RELOAD_CLASS): Likewise.
+
+2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com>
+
+       * config/riscv/riscv.c (riscv_print_operand): Use "fence
+       iorw,ow".
+       * config/riscv/sync.mc (mem_thread_fence_1): Use "fence
+       iorw,iorw".
+
+2017-03-20  Marek Polacek  <polacek@redhat.com>
+
+       PR sanitizer/80063
+       * asan.c (DEF_SANITIZER_BUILTIN): Use do { } while (0).
+
+2017-03-20  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/80113
+       * graphite-isl-ast-to-gimple.c (copy_loop_phi_nodes): Do not
+       allocate extra SSA name for PHI def.
+       (add_close_phis_to_outer_loops): Likewise.
+       (add_close_phis_to_merge_points): Likewise.
+       (copy_loop_close_phi_args): Likewise.
+       (copy_cond_phi_nodes): Likewise.
+
+2017-03-20  Martin Liska  <mliska@suse.cz>
+
+       PR middle-end/79753
+       * tree-chkp.c (chkp_build_returned_bound): Do not build
+       returned bounds for a LHS that's not a BOUNDED_P type.
+
+2017-03-20  Martin Liska  <mliska@suse.cz>
+
+       PR target/79769
+       PR target/79770
+       * tree-chkp.c (chkp_find_bounds_1): Handle REAL_CST,
+       COMPLEX_CST and VECTOR_CST.
+
+2017-03-20  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+       PR target/78857
+       * config/s390/s390.md ("cmp<mode>_ccs_0"): Add a clobber of the
+       target operand.  A new splitter adds the clobber statement in case
+       the target operand is dead anyway.
+
 2017-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
 
        * doc/install.texi (Specific) <sparc-*-linux*>: No longer refer