S/390: Disable prediction of indirect branches
[platform/upstream/gcc.git] / gcc / ChangeLog
index 0d2f6da..c83df97 100644 (file)
@@ -1,3 +1,633 @@
+2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+       * config/s390/s390-opts.h (enum indirect_branch): Define.
+       * config/s390/s390-protos.h (s390_return_addr_from_memory)
+       (s390_indirect_branch_via_thunk)
+       (s390_indirect_branch_via_inline_thunk): Add function prototypes.
+       (enum s390_indirect_branch_type): Define.
+       * config/s390/s390.c (struct s390_frame_layout, struct
+       machine_function): Remove.
+       (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
+       (indirect_branch_table_label_no, indirect_branch_table_name):
+       Define variables.
+       (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
+       (enum s390_indirect_branch_option): Define.
+       (s390_return_addr_from_memory): New function.
+       (s390_handle_string_attribute): New function.
+       (s390_attribute_table): Add new attribute handler.
+       (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
+       (s390_indirect_branch_via_thunk): New function.
+       (s390_indirect_branch_via_inline_thunk): New function.
+       (s390_function_ok_for_sibcall): When jumping via thunk disallow
+       sibling call optimization for non z10 compiles.
+       (s390_emit_call): Force indirect branch target to be a single
+       register.  Add r1 clobber for non-z10 compiles.
+       (s390_emit_epilogue): Emit return jump via return_use expander.
+       (s390_reorg): Handle JUMP_INSNs as execute targets.
+       (s390_option_override_internal): Perform validity checks for the
+       new command line options.
+       (s390_indirect_branch_attrvalue): New function.
+       (s390_indirect_branch_settings): New function.
+       (s390_set_current_function): Invoke s390_indirect_branch_settings.
+       (s390_output_indirect_thunk_function):  New function.
+       (s390_code_end): Implement target hook.
+       (s390_case_values_threshold): Implement target hook.
+       (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
+       macros.
+       * config/s390/s390.h (struct s390_frame_layout)
+       (struct machine_function): Move here from s390.c.
+       (TARGET_INDIRECT_BRANCH_NOBP_RET)
+       (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
+       (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
+       (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
+       (TARGET_INDIRECT_BRANCH_NOBP_CALL)
+       (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
+       (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
+       (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
+       (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
+       * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
+       (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
+       (mnemonic attribute): Add values which aren't recognized
+       automatically.
+       ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
+       pattern for branch conversion.  Fix mnemonic attribute.
+       ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
+       indirect branch via thunk if requested.
+       ("indirect_jump", "<code>"): Expand patterns for branch conversion.
+       ("*indirect_jump"): Disable for branch conversion using out of
+       line thunks.
+       ("indirect_jump_via_thunk<mode>_z10")
+       ("indirect_jump_via_thunk<mode>")
+       ("indirect_jump_via_inlinethunk<mode>_z10")
+       ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
+       ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
+       ("casesi_jump_via_inlinethunk<mode>_z10")
+       ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
+       ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
+       ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
+       ("*indirect2_jump"): Disable for branch conversion.
+       ("casesi_jump"): Turn into expander and expand patterns for branch
+       conversion.
+       ("return_use"): New expander.
+       ("*return"): Emit return via thunk and rename it to ...
+       ("*return<mode>"): ... this one.
+       * config/s390/s390.opt: Add new options and and enum for the
+       option values.
+
+2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * lra-constraints.c (match_reload): Unconditionally use
+       gen_lowpart_SUBREG, rather than selecting between that
+       and equivalent gen_rtx_SUBREG code.
+
+2018-02-08  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/84233
+       * tree-ssa-phiprop.c (propagate_with_phi): Use separate
+       changed flag instead of boguously re-using phi_inserted.
+
+2018-02-08  Martin Jambor  <mjambor@suse.cz>
+
+       * hsa-gen.c (get_symbol_for_decl): Set program allocation for
+       static local variables.
+
+2018-02-08  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/84278
+       * tree-vect-stmts.c (vectorizable_store): When looking for
+       smaller vector types to perform grouped strided loads/stores
+       make sure the mode is supported by the target.
+       (vectorizable_load): Likewise.
+
+2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
+
+       * config/aarch64/aarch64.c (aarch64_components_for_bb):
+       Increase LDP/STP opportunities by adding adjacent callee-saves.
+
+2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
+
+       PR rtl-optimization/84068
+       PR rtl-optimization/83459
+       * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
+
+2018-02-08  Aldy Hernandez  <aldyh@redhat.com>
+
+       PR tree-optimization/84224
+       * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
+       * calls.c (gimple_alloca_call_p): Only return TRUE when we have
+       non-zero arguments.
+
+2018-02-07  Iain Sandoe  <iain@codesourcery.com>
+
+       * config/rs6000/altivec.md (*restore_world): Remove LR use.
+       * config/rs6000/predicates.md (restore_world_operation): Adjust op
+       count, remove one USE.
+
+2018-02-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
+
+       * doc/install.texi (Configuration): Document the
+       --with-long-double-format={ibm,ieee} PowerPC configuration
+       options.
+
+       PR target/84154
+       * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
+       Convert from define_expand to be define_insn_and_split.  Rework
+       float/double/_Float128 conversions to QI/HI/SImode to work with
+       both ISA 2.07 (power8) or ISA 3.0 (power9).  Fix regression where
+       conversions to QI/HImode types did a store and then a load to
+       truncate the value.  For conversions to VSX registers, don't split
+       the insn, instead emit the code directly.  Use the code iterator
+       any_fix to combine signed and unsigned conversions.
+       (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
+       (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
+       (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
+       (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
+       (fix_<mode>di2_hw): Likewise.
+       (fixuns_<mode>di2_hw): Likewise.
+       (fix_<mode>si2_hw): Likewise.
+       (fixuns_<mode>si2_hw): Likewise.
+       (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
+       (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
+       (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
+       fix<uns>_trunc<SFDF:mode>si2_p8.
+       (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer
+       used.
+       (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
+       (fix<uns>_<mode>_mem): Likewise.
+       (fctiw<u>z_<mode>_mem): Likewise.
+       (fix<uns>_<mode>_mem): Likewise.
+       (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
+       the register allocator from doing a direct move to the GPRs to do
+       a store, and instead use the ISA 3.0 store byte/half-word from
+       vector register instruction.  For IEEE 128-bit floating point,
+       also optimize stores of 32-bit ints.
+       (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
+
+2018-02-07  Alan Hayward  <alan.hayward@arm.com>
+
+       * genextract.c (push_pathstr_operand): New function to support
+       [a-zA-Z].
+       (walk_rtx): Call push_pathstr_operand.
+       (print_path): Support [a-zA-Z].
+
+2018-02-07  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/84037
+       * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
+       (cse_and_gimplify_to_preheader): Declare.
+       (vect_get_place_in_interleaving_chain): Likewise.
+       * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
+       ivexpr_map.
+       (_loop_vec_info::~_loop_vec_info): Delete it.
+       (cse_and_gimplify_to_preheader): New function.
+       * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
+       * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
+       (vectorizable_load): Likewise.  For grouped stores always base
+       the IV on the first element.
+       * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
+       condition before gimplifying.
+
+2018-02-07  Jakub Jelinek  <jakub@redhat.com>
+
+       * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
+       *DIV_EXPR and *MOD_EXPR.
+
+2018-02-07  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/84248
+       * config/i386/i386.c (ix86_option_override_internal): Mask out
+       the CF_SET bit when checking -fcf-protection.
+
+2018-02-07  Tom de Vries  <tom@codesourcery.com>
+
+       PR libgomp/84217
+       * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
+       enough.
+
+2018-02-07  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/84204
+       * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
+       this place.
+
+       PR tree-optimization/84205
+       * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
+       special-case isl_ast_op_zdiv_r.
+
+       PR tree-optimization/84223
+       * graphite-scop-detection.c (gather_bbs::before_dom_children):
+       Only add conditions from within the region.
+       (gather_bbs::after_dom_children): Adjust.
+
+2018-02-07  Georg-Johann Lay  <avr@gjlay.de>
+
+       PR target/84209
+       * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
+       * config/avr/avr.md: Only post-reload split REG-REG moves if
+       either register is REGERAL_REG_P.
+
+2018-02-07  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/84235
+       * tree-ssa-scopedtables.c
+       (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
+       if the subtraction is performed in floating point type where NaNs are
+       honored.  For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
+       build 1.  Formatting fix.
+
+2018-02-06  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/84146
+       * config/i386/i386.c (rest_of_insert_endbranch): Only skip
+       NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
+       and skip it regardless of bb boundaries.  Use CALL_P macro,
+       don't test INSN_P (insn) together with CALL_P or JUMP_P check
+       unnecessarily, formatting fix.
+
+2018-02-06  Michael Collison  <michael.collison@arm.com>
+
+       * config/arm/thumb2.md:
+       (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
+       (*thumb_mov_notscc): Ditto.
+
+2018-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
+
+       PR target/84154
+       * config/rs6000/rs6000.md (su code attribute): Use "u" for
+       unsigned_fix, not "s".
+
+2018-02-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * configure.ac (gcc_fn_eh_frame_ro): New function.
+       (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
+       correct .eh_frame permissions.
+       * configure: Regenerate.
+
+2018-02-06  Andrew Jenner  <andrew@codeourcery.com>
+
+       * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
+       irrelevant options.
+
+2018-02-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       * config/rs6000/rs6000.c (rs6000_option_override_internal):
+       Display warning message for -mno-speculate-indirect-jumps.
+
+2018-02-06  Andrew Jenner  <andrew@codesourcery.com>
+
+       * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
+       Undocumented.
+       * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
+
+2018-02-06  Aldy Hernandez  <aldyh@redhat.com>
+
+       PR tree-optimization/84225
+       * tree-eh.c (find_trapping_overflow): Only call
+       operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
+
+2018-02-06  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
+
+       PR target/84145
+       * config/i386/i386.c: Reimplement the check of possible options
+       -mibt/-mshstk conbination. Change error messages.
+       * doc/invoke.texi: Fix a typo: remove extra '='.
+
+2018-02-06  Marek Polacek  <polacek@redhat.com>
+
+       PR tree-optimization/84228
+       * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
+
+2018-02-06  Tamar Christina  <tamar.christina@arm.com>
+
+       PR target/82641
+       * config/arm/arm.c (arm_print_asm_arch_directives): Record already
+       emitted arch directives.
+       * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
+       __ARM_FEATURE_COPROC before changing architectures.
+
+2018-02-06  Richard Biener  <rguenther@suse.de>
+
+       * config/i386/i386.c (print_reg): Fix typo.
+       (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
+
+2018-02-06  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * configure: Regenerate.
+
+2018-02-05  Martin Sebor  <msebor@redhat.com>
+
+       PR tree-optimization/83369
+       * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
+       inlining context.
+
+2018-02-05  Martin Liska  <mliska@suse.cz>
+
+       * doc/invoke.texi: Cherry-pick upstream r323995.
+
+2018-02-05  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * ira.c (ira_init_register_move_cost): Adjust comment.
+
+2018-02-05  Martin Liska  <mliska@suse.cz>
+
+       PR gcov-profile/84137
+       * doc/gcov.texi: Fix typo in documentation.
+
+2018-02-05  Martin Liska  <mliska@suse.cz>
+
+       PR gcov-profile/83879
+       * doc/gcov.texi: Document necessity of --dynamic-list-data when
+       using dlopen functionality.
+
+2018-02-05  Olga Makhotina  <olga.makhotina@intel.com>
+
+       * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
+       _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
+       _mm_maskz_range_ss, _mm_mask_range_round_ss,
+       _mm_maskz_range_round_ss): New intrinsics.
+       (__builtin_ia32_rangesd128_round)
+       (__builtin_ia32_rangess128_round): Remove.
+       (__builtin_ia32_rangesd128_mask_round,
+       __builtin_ia32_rangess128_mask_round): New builtins.
+       * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
+       __builtin_ia32_rangess128_round): Remove.
+       (__builtin_ia32_rangesd128_mask_round,
+       __builtin_ia32_rangess128_mask_round): New builtins.
+       * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
+       (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
+       ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
+       "<round_saeonly_constraint>")): Changed to ...
+       ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
+       "<round_saeonly_scalar_constraint>")): ... this.
+       ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
+       %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
+       ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
+       %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
+       %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
+
+2018-02-02  Andrew Jenner  <andrew@codesourcery.com>
+
+       * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
+       options.
+       * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
+       Remove all values except native, 8540 and 8548.
+
+2018-02-02  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/i386/i386.c (ix86_output_function_return): Pass
+       INVALID_REGNUM, instead of -1, as invalid register number to
+       indirect_thunk_name and output_indirect_thunk.
+
+2018-02-02  Julia Koval  <julia.koval@intel.com>
+
+       * config.gcc: Add -march=icelake.
+       * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
+       * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
+       * config/i386/i386.c (processor_costs): Add m_ICELAKE.
+       (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
+       PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
+       (processor_target_table): Add icelake.
+       (ix86_option_override_internal): Handle new PTAs.
+       (get_builtin_code_for_version): Handle icelake.
+       (M_INTEL_COREI7_ICELAKE): New.
+       (fold_builtin_cpu): Handle icelake.
+       * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
+       * doc/invoke.texi: Add -march=icelake.
+
+2018-02-02  Julia Koval  <julia.koval@intel.com>
+
+       * config/i386/i386.c (ix86_option_override_internal): Change flags type
+       to wide_int_bitmask.
+       * wide-int-bitmask.h: New.
+
+2018-02-02  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
+
+       PR target/84066
+       * config/i386/i386.md: Replace Pmode with word_mode in
+       builtin_setjmp_setup and builtin_longjmp to support x32.
+
+2018-02-01  Peter Bergner  <bergner@vnet.ibm.com>
+
+       PR target/56010
+       PR target/83743
+       * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
+       #include "opts.h".
+       (rs6000_supported_cpu_names): New static variable.
+       (linux_cpu_translation_table): Likewise.
+       (elf_platform) <cpu>: Define new static variable and use it.
+       Translate kernel AT_PLATFORM name to canonical name if needed.
+       Error if platform name is unknown.
+
+2018-02-01  Aldy Hernandez  <aldyh@redhat.com>
+
+       PR target/84089
+       * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
+
+2018-02-01  Jeff Law  <law@redhat.com>
+
+       PR target/84128
+       * config/i386/i386.c (release_scratch_register_on_entry): Add new
+       OFFSET and RELEASE_VIA_POP arguments.  Use SP+OFFSET to restore
+       the scratch if RELEASE_VIA_POP is false.
+       (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
+       If we have to save a temporary register, decrement SIZE appropriately.
+       Pass new arguments to release_scratch_register_on_entry.
+       (ix86_adjust_stack_and_probe): Likewise.
+       (ix86_emit_probe_stack_range): Pass new arguments to
+       release_scratch_register_on_entry.
+
+2018-02-01  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR rtl-optimization/84157
+       * combine.c (change_zero_ext): Use REG_P predicate in
+       front of HARD_REGISTER_P predicate.
+
+2018-02-01  Georg-Johann Lay  <avr@gjlay.de>
+
+       * config/avr/avr.c (avr_option_override): Move disabling of
+       -fdelete-null-pointer-checks to...
+       * common/config/avr/avr-common.c (avr_option_optimization_table):
+       ...here.
+
+2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       PR tree-optimization/81635
+       * tree-data-ref.c (split_constant_offset_1): For types that
+       wrap on overflow, try to use range info to prove that wrapping
+       cannot occur.
+
+2018-02-01  Renlin Li  <renlin.li@arm.com>
+
+       PR target/83370
+       * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
+       TAILCALL_ADDR_REGS.
+       (aarch64_register_move_cost): Likewise.
+       * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
+       TAILCALL_ADDR_REGS.
+       (REG_CLASS_NAMES): Likewise.
+       (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
+       TAILCALL_ADDR_REGS. Remove IP registers.
+       * config/aarch64/aarch64.md (Ucs): Update register constraint.
+
+2018-02-01  Richard Biener  <rguenther@suse.de>
+
+       * domwalk.h (dom_walker::dom_walker): Add additional constructor
+       for specifying RPO order and allow NULL for that.
+       * domwalk.c (dom_walker::dom_walker): Likewise.
+       (dom_walker::walk): Handle NULL RPO order.
+       * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
+       in RPO order.
+       (rewrite_update_dom_walker): Likewise.
+       (mark_def_dom_walker): Likewise.
+
+2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
+       (aarch64_maybe_expand_sve_subreg_move): Declare.
+       * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
+       * config/aarch64/predicates.md (aarch64_any_register_operand): New
+       predicate.
+       * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
+       that are semantically a reverse operation.
+       (*aarch64_sve_mov<mode>_subreg_be): New pattern.
+       * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
+       (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
+       functions.
+       (aarch64_can_change_mode_class): For big-endian, forbid changes
+       between two SVE modes if they have different element sizes.
+
+2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
+       the TImode handling for big-endian targets.
+
+2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
+       (*sve_ld1rq<Vesize>): ... this new pattern.  Handle all element sizes,
+       not just bytes.
+       * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
+       Remove BSWAP handing for big-endian targets and use the form of
+       LD1RQ appropariate for the mode.
+
+2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
+       all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
+       duplicated element.
+
+2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       PR tearget/83845
+       * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
+       check for operands that need to go through aarch64_sve_reload_be.
+
+2018-02-01  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/81661
+       PR tree-optimization/84117
+       * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
+       * tree-eh.c: Include gimplify.h.
+       (find_trapping_overflow, replace_trapping_overflow,
+       rewrite_to_non_trapping_overflow): New functions.
+       * tree-vect-loop.c: Include tree-eh.h.
+       (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
+       * tree-data-ref.c: Include tree-eh.h.
+       (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
+
+2018-01-31  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR rtl-optimization/84123
+       * combine.c (change_zero_ext): Check if hard register satisfies
+       can_change_dest_mode before calling gen_lowpart_SUBREG.
+
+2018-01-31  Vladimir Makarov  <vmakarov@redhat.com>
+
+       PR target/82444
+       * ira.c (ira_init_register_move_cost): Remove assert.
+
+2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR rtl-optimization/84071
+       * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
+       * doc/tm.texi: Regenerate.
+
+2018-01-31  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/84132
+       * tree-data-ref.c (analyze_miv_subscript): Properly
+       check whether evolution_function_is_affine_multivariate_p
+       before calling gcd_of_steps_may_divide_p.
+
+2018-01-31  Julia Koval  <julia.koval@intel.com>
+
+       PR target/83618
+       * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
+       * config/i386/i386.md (rdpid_rex64) New.
+       (rdpid): Make 32bit only.
+
+2018-01-29  Aldy Hernandez  <aldyh@redhat.com>
+
+       PR lto/84105
+       * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
+       an IDENTIFIER_NODE for FUNCTION_TYPE's.
+
+2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
+
+       Revert
+       2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
+
+2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR rtl-optimization/84071
+       * combine.c (record_dead_and_set_regs_1): Record the source unmodified
+       for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
+
+2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
+
+       * config/arc/arc.c (arc_handle_aux_attribute): New function.
+       (arc_attribute_table): Add 'aux' attribute.
+       (arc_in_small_data_p): Consider aux like variables.
+       (arc_is_aux_reg_p): New function.
+       (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
+       (arc_get_aux_arg): New function.
+       (prepare_move_operands): Handle aux-register access.
+       (arc_handle_aux_attribute): New function.
+       * doc/extend.texi (ARC Variable attributes): Add subsection.
+
+2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
+
+       * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
+       * config/arc/arc.c (arc_handle_uncached_attribute): New function.
+       (arc_attribute_table): Add 'uncached' attribute.
+       (arc_print_operand): Print '.di' flag for uncached memory
+       accesses.
+       (arc_in_small_data_p): Do not consider for small data the uncached
+       types.
+       (arc_is_uncached_mem_p): New function.
+       * config/arc/predicates.md (compact_store_memory_operand): Check
+       for uncached memory accesses.
+       (nonvol_nonimm_operand): Likewise.
+       * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
+
+2018-01-31  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/84100
+       * common.opt (falign-functions=, falign-jumps=, falign-labels=,
+       falign-loops=): Add Optimization flag.
+
+2018-01-30  Jeff Law  <law@redhat.com>
+
+       PR target/84064
+       * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
+       INT_REGISTERS_SAVED.  Check it prior to calling
+       get_scratch_register_on_entry.
+       (ix86_adjust_stack_and_probe): Similarly.
+       (ix86_emit_probe_stack_range): Similarly.
+       (ix86_expand_prologue): Corresponding changes.
+
 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
        PR target/40411
        * config/m68k/m68k.c (m68k_promote_function_mode): New function.
        (TARGET_PROMOTE_FUNCTION_MODE): New macro.
 
-2017-01-08  Jeff Law  <law@redhat.com>
+2018-01-24  Jeff Law  <law@redhat.com>
 
        PR target/83994
        * i386.c (get_probe_interval): Move to earlier point.
        * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
        Document new effective target and option set.
 
-2017-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
        * config/arm/arm-cpus.in (armv8_4): New feature.
        (ARMv8_4a): New fgroup.
        of first and second elements in UNSPEC_VPERMR vector.
        (altivec_expand_vec_perm_le): Likewise.
 
-2017-01-08  Jeff Law  <law@redhat.com>
+2018-01-08  Jeff Law  <law@redhat.com>
 
        PR rtl-optimizatin/81308
        * tree-switch-conversion.c (cfg_altered): New file scoped static.
        range_int_cst_p rather than !symbolic_range_p before calling
        extract_range_from_multiplicative_op_1.
 
-2017-01-04  Jeff Law  <law@redhat.com>
+2018-01-04  Jeff Law  <law@redhat.com>
 
        * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
        redundant test in assertion.
        * expmed.c (make_tree): Build VECTOR_CSTs directly from the
        CONST_VECTOR encoding.
 
-2017-01-03  Jakub Jelinek  <jakub@redhat.com>
+2018-01-03  Jakub Jelinek  <jakub@redhat.com>
            Jeff Law  <law@redhat.com>
 
        PR target/83641
        (sprintf_dom_walker::compute_format_length): Same.
        (try_substitute_return_value): Same.
 
-2017-01-03  Jeff Law  <law@redhat.com>
+2018-01-03  Jeff Law  <law@redhat.com>
 
        PR middle-end/83654
        * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a