1. 15 Jan, 2018 15 commits
    • re PR target/83850 (Spills on vector extract, gcc.target/i386/pr80846-1.c FAILs) · e8f3b70d
      2018-01-15  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/83850
      	* expmed.c (extract_bit_field_1): Fix typo.
      
      From-SVN: r256700
      Richard Biener committed
    • Missing vect_double in gcc.dg/vect/pr79920.c (PR83836) · fc58f4ae
      2018-01-15  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/testsuite/
      	PR testsuite/79920
      	* gcc.dg/vect/pr79920.c: Restrict reduction test to vect_double
      
      From-SVN: r256698
      Richard Sandiford committed
    • [arm] PR target/83687: Fix invalid combination of VSUB + VABS into VABD · d0b6b5a7
      In this wrong-code bug we combine a VSUB.I8 and a VABS.S8
      into a VABD.S8 instruction . This combination is not valid
      for integer operands because in the VABD instruction the semantics
      are that the difference is computed in notionally infinite precision
      and the absolute difference is computed on that, whereas for a
      VSUB.I8 + VABS.S8 sequence the VSUB operation will perform any
      wrapping that's needed for the 8-bit signed type before the VABS
      gets its hands on it.
      
      This leads to the wrong-code in the PR where the expected
      sequence from the intrinsics:
      VSUB + VABS of two vectors {-100, -100, -100...}, {100, 100, 100...}
      gives a result of {56, 56, 56...} (-100 - 100)
      
      but GCC optimises it into a single
      VABD of {-100, -100, -100...}, {100, 100, 100...}
      which produces a result of {200, 200, 200...}
      
      The transformation is still valid for floating-point operands,
      which is why it was added in the first place I believe (r178817)
      but this patch disables it for integer operands.
      The HFmode variants though only exist for TARGET_NEON_FP16INST, so
      this patch adds the appropriate guards to the new mode iterator
      
      Bootstrapped and tested on arm-none-linux-gnueabihf.
      
      	PR target/83687
      	* config/arm/iterators.md (VF): New mode iterator.
      	* config/arm/neon.md (neon_vabd<mode>_2): Use the above.
      	Remove integer-related logic from pattern.
      	(neon_vabd<mode>_3): Likewise.
      
      	* gcc.target/arm/neon-combine-sub-abs-into-vabd.c: Delete integer
      	tests.
      	* gcc.target/arm/pr83687.c: New test.
      
      From-SVN: r256696
      Kyrylo Tkachov committed
    • Make optional conditionally trivially_{copy,move}_{constructible,assignable} · c89f2d24
      * include/std/optional (_Optional_payload): Fix the comment in
      the class head and turn into a primary and one specialization.
      (_Optional_payload::_M_engaged): Strike the NSDMI.
      (_Optional_payload<_Tp, false>::operator=(const _Optional_payload&)):
      New.
      (_Optional_payload<_Tp, false>::operator=(_Optional_payload&&)):
      Likewise.
      (_Optional_payload<_Tp, false>::_M_get): Likewise.
      (_Optional_payload<_Tp, false>::_M_reset): Likewise.
      (_Optional_base_impl): Likewise.
      (_Optional_base): Turn into a primary and three specializations.
      (optional(nullopt)): Change the base init.
      * testsuite/20_util/optional/assignment/8.cc: New.
      * testsuite/20_util/optional/cons/trivial.cc: Likewise.
      * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
      
      From-SVN: r256694
      Ville Voutilainen committed
    • Adjust tests to AVR_TINY. · 1759d116
      	* gcc.target/avr/progmem.h (pgm_read_char): Handle AVR_TINY.
      	* gcc.target/avr/pr52472.c: Add "! avr_tiny" target filter.
      	* gcc.target/avr/pr71627.c: Same.
      	* gcc.target/avr/torture/addr-space-1-0.c: Same.
      	* gcc.target/avr/torture/addr-space-1-1.c: Same.
      	* gcc.target/avr/torture/addr-space-1-x.c: Same.
      	* gcc.target/avr/torture/addr-space-2-0.c: Same.
      	* gcc.target/avr/torture/addr-space-2-1.c: Same.
      	* gcc.target/avr/torture/addr-space-2-x.c: Same.
      	* gcc.target/avr/torture/sat-hr-plus-minus.c: Same.
      	* gcc.target/avr/torture/sat-k-plus-minus.c: Same.
      	* gcc.target/avr/torture/sat-llk-plus-minus.c: Same.
      	* gcc.target/avr/torture/sat-r-plus-minus.c: Same.
      	* gcc.target/avr/torture/sat-uhr-plus-minus.c: Same.
      	* gcc.target/avr/torture/sat-uk-plus-minus.c: Same.
      	* gcc.target/avr/torture/sat-ullk-plus-minus.c: Same.
      	* gcc.target/avr/torture/sat-ur-plus-minus.c: Same.
      	* gcc.target/avr/torture/pr61055.c: Same.
      	* gcc.target/avr/torture/builtins-3-absfx.c: Only use __flash if
      	available.
      	* gcc.target/avr/torture/int24-mul.c: Same.
      	* gcc.target/avr/torture/pr51782-1.c: Same.
      	* gcc.target/avr/torture/pr61443.c: Same.
      	* gcc.target/avr/torture/builtins-2.c: Factor out addr-space stuff...
      	* gcc.target/avr/torture/builtins-2-flash.c: ...to this new test.
      
      From-SVN: r256690
      Georg-Johann Lay committed
    • PR libstdc++/80276 fix template argument handling in type printers · bab0a26d
      	PR libstdc++/80276
      	* python/libstdcxx/v6/printers.py (strip_inline_namespaces): New.
      	(get_template_arg_list): New.
      	(StdVariantPrinter._template_args): Remove, use get_template_arg_list
      	instead.
      	(TemplateTypePrinter): Rewrite to work with gdb.Type objects instead
      	of strings and regular expressions.
      	(add_one_template_type_printer): Adapt to new TemplateTypePrinter.
      	(FilteringTypePrinter): Add docstring. Match using startswith. Use
      	strip_inline_namespaces instead of strip_versioned_namespace.
      	(add_one_type_printer): Prepend namespace to match argument.
      	(register_type_printers): Add type printers for char16_t and char32_t
      	string types and for types using cxx11 ABI. Update calls to
      	add_one_template_type_printer to provide default argument dicts.
      	* testsuite/libstdc++-prettyprinters/80276.cc: New test.
      	* testsuite/libstdc++-prettyprinters/whatis.cc: Remove tests for
      	basic_string<unsigned char> and basic_string<signed char>.
      	* testsuite/libstdc++-prettyprinters/whatis2.cc: Duplicate whatis.cc
      	to test local variables, without overriding _GLIBCXX_USE_CXX11_ABI.
      
      From-SVN: r256689
      Jonathan Wakely committed
    • Correct earlier ChangeLog entry · ed99ae13
      Add Juraj Oršulić as original patch author.
      
      From-SVN: r256688
      Juraj Oršulić committed
    • re PR c/83801 ([avr] String constant in __flash not put into .progmem) · 93c74e59
      	PR c/83801
      	PR c/83729
      	* gcc.target/avr/torture/pr83729.c: New test.
      	* gcc.target/avr/torture/pr83801.c: New test.
      
      From-SVN: r256687
      Georg-Johann Lay committed
    • re PR middle-end/82694 (Linux kernel miscompiled since r250765) · 3fccbb9e
      	PR middle-end/82694
      	* common.opt (fstrict-overflow): No longer an alias.
      	(fwrapv-pointer): New option.
      	* tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
      	also for pointer types based on flag_wrapv_pointer.
      	* opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
      	opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
      	opts->x_flag_wrapv got set.
      	* fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
      	changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
      	POINTER_TYPE_OVERFLOW_UNDEFINED.
      	* match.pd: Likewise in address comparison pattern.
      	* doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
      
      	* gcc.dg/no-strict-overflow-7.c: Revert 2017-08-01 changes.
      	* gcc.dg/tree-ssa/pr81388-1.c: Likewise.
      
      From-SVN: r256686
      Jakub Jelinek committed
    • re PR lto/83804 ([meta] LTO memory consumption) · 2aa89839
      2018-01-15  Richard Biener  <rguenther@suse.de>
      
      	PR lto/83804
      	* tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
      	from TYPE_FIELDS.  Free TYPE_BINFO if not used by devirtualization.
      	Reset type names to their identifier if their TYPE_DECL doesn't
      	have linkage (and thus is used for ODR and devirt).
      	(save_debug_info_for_decl): Remove.
      	(save_debug_info_for_type): Likewise.
      	(add_tree_to_fld_list): Adjust.
      	* tree-pretty-print.c (dump_generic_node): Make dumping of
      	type names more robust.
      
      From-SVN: r256685
      Richard Biener committed
    • BASE-VER: Bump to 8.0.1. · a55e8b53
      2018-01-15  Richard Biener  <rguenther@suse.de>
      
      	* BASE-VER: Bump to 8.0.1.
      
      From-SVN: r256684
      Richard Biener committed
    • re PR other/83508 ([arm] c-c++-common/Wrestrict.c fails since r255836) · e0676e2e
      	PR other/83508
      	* builtins.c (check_access): Avoid warning when the no-warning bit
      	is set.
      
      	PR other/83508
      	* gcc.dg/Wstringop-overflow-2.c: New test.
      
      From-SVN: r256683
      Martin Sebor committed
    • tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort. · 5804f627
      	* tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
      	* ira-color (allocno_hard_regs_compare): Likewise.
      
      From-SVN: r256682
      Cory Fields committed
    • re PR target/83013 (MicroBlaze - #ident - Error: operation combines symbols in different segments) · aba0d181
              PR target/83013
              * config/microblaze/microblaze.c (microblaze_asm_output_ident):
              Use .pushsection/.popsection.
      
      From-SVN: r256681
      Nathan Rossi committed
    • Daily bump. · 42d3f20a
      From-SVN: r256680
      GCC Administrator committed
  2. 14 Jan, 2018 20 commits
    • PR c++/81327 - cast to void* does not suppress -Wclass-memaccess · 656280b0
      gcc/ChangeLog:
      	PR c++/81327
      	* doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
      
      From-SVN: r256677
      Martin Sebor committed
    • Fix date in log. · ba791a6c
      From-SVN: r256676
      Jerry DeLisle committed
    • Fix date in Changelog · 511f5ccf
      From-SVN: r256674
      Jerry DeLisle committed
    • Correct ChangeLog of x86: Add -mfunction-return= · 616ef62f
      From-SVN: r256673
      H.J. Lu committed
    • Correct ChangeLog of x86: Add -mindirect-branch= · dfc358bf
      From-SVN: r256672
      H.J. Lu committed
    • re PR libfortran/83811 (fortran 'e' format broken for single digit exponents) · 33b2b069
      2018-01-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
              PR libgfortran/83811
              * write.c (select_buffer): Adjust buffer size up by 1.
      
              * gfortran.dg/fmt_e.f90: New test.
      
      From-SVN: r256669
      Jerry DeLisle committed
    • re PR libstdc++/81092 (Missing symbols for new std::wstring constructors) · a61bac1e
      PR libstdc++/81092
      * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
      
      From-SVN: r256668
      Andreas Schwab committed
    • config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h entry from extra_headers. · 2abaf67e
      	* config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
      	entry from extra_headers.
      	(x86_64-*-*): Remove two duplicate gfniintrin.h entries from
      	extra_headers, make the list bitwise identical to the i?86-*-* one.
      
      From-SVN: r256667
      Jakub Jelinek committed
    • x86: Disallow -mindirect-branch=/-mfunction-return= with -mcmodel=large · 95d11c17
      Since the thunk function may not be reachable in large code model,
      -mcmodel=large is incompatible with -mindirect-branch=thunk,
      -mindirect-branch=thunk-extern, -mfunction-return=thunk and
      -mfunction-return=thunk-extern.  Issue an error when they are used with
      -mcmodel=large.
      
      gcc/
      
      	* config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
      	-mcmodel=large with -mindirect-branch=thunk,
      	-mindirect-branch=thunk-extern, -mfunction-return=thunk and
      	-mfunction-return=thunk-extern.
      	* doc/invoke.texi: Document -mcmodel=large is incompatible with
      	-mindirect-branch=thunk, -mindirect-branch=thunk-extern,
      	-mfunction-return=thunk and -mfunction-return=thunk-extern.
      
      gcc/testsuite/
      
      	* gcc.target/i386/indirect-thunk-10.c: New test.
      	* gcc.target/i386/indirect-thunk-8.c: Likewise.
      	* gcc.target/i386/indirect-thunk-9.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-10.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-11.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-9.c: Likewise.
      	* gcc.target/i386/ret-thunk-17.c: Likewise.
      	* gcc.target/i386/ret-thunk-18.c: Likewise.
      	* gcc.target/i386/ret-thunk-19.c: Likewise.
      	* gcc.target/i386/ret-thunk-20.c: Likewise.
      	* gcc.target/i386/ret-thunk-21.c: Likewise.
      
      From-SVN: r256664
      H.J. Lu committed
    • x86: Add 'V' register operand modifier · 6abe11c1
      Add 'V', a special modifier which prints the name of the full integer
      register without '%'.  For
      
      extern void (*func_p) (void);
      
      void
      foo (void)
      {
        asm ("call __x86_indirect_thunk_%V0" : : "a" (func_p));
      }
      
      it generates:
      
      foo:
      	movq	func_p(%rip), %rax
      	call	__x86_indirect_thunk_rax
      	ret
      
      gcc/
      
      	* config/i386/i386.c (print_reg): Print the name of the full
      	integer register without '%'.
      	(ix86_print_operand): Handle 'V'.
      	 * doc/extend.texi: Document 'V' modifier.
      
      gcc/testsuite/
      
      	* gcc.target/i386/indirect-thunk-register-4.c: New test.
      
      From-SVN: r256663
      H.J. Lu committed
    • x86: Add -mindirect-branch-register · d543c04b
      Add -mindirect-branch-register to force indirect branch via register.
      This is implemented by disabling patterns of indirect branch via memory,
      similar to TARGET_X32.
      
      -mindirect-branch= and -mfunction-return= tests are updated with
      -mno-indirect-branch-register to avoid false test failures when
      -mindirect-branch-register is added to RUNTESTFLAGS for "make check".
      
      gcc/
      
      	* config/i386/constraints.md (Bs): Disallow memory operand for
      	-mindirect-branch-register.
      	(Bw): Likewise.
      	* config/i386/predicates.md (indirect_branch_operand): Likewise.
      	(GOT_memory_operand): Likewise.
      	(call_insn_operand): Likewise.
      	(sibcall_insn_operand): Likewise.
      	(GOT32_symbol_operand): Likewise.
      	* config/i386/i386.md (indirect_jump): Call convert_memory_address
      	for -mindirect-branch-register.
      	(tablejump): Likewise.
      	(*sibcall_memory): Likewise.
      	(*sibcall_value_memory): Likewise.
      	Disallow peepholes of indirect call and jump via memory for
      	-mindirect-branch-register.
      	(*call_pop): Replace m with Bw.
      	(*call_value_pop): Likewise.
      	(*sibcall_pop_memory): Replace m with Bs.
      	* config/i386/i386.opt (mindirect-branch-register): New option.
      	* doc/invoke.texi: Document -mindirect-branch-register option.
      
      gcc/testsuite/
      
      	* gcc.target/i386/indirect-thunk-1.c (dg-options): Add
      	-mno-indirect-branch-register.
      	* gcc.target/i386/indirect-thunk-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-3.c: Likewise.
      	* gcc.target/i386/indirect-thunk-4.c: Likewise.
      	* gcc.target/i386/indirect-thunk-5.c: Likewise.
      	* gcc.target/i386/indirect-thunk-6.c: Likewise.
      	* gcc.target/i386/indirect-thunk-7.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-1.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-3.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-4.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-5.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-6.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-7.c: Likewise.
      	* gcc.target/i386/indirect-thunk-bnd-1.c: Likewise.
      	* gcc.target/i386/indirect-thunk-bnd-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-bnd-3.c: Likewise.
      	* gcc.target/i386/indirect-thunk-bnd-4.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-1.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-3.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-4.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-5.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-6.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-7.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-1.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-3.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-4.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-5.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-6.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-7.c: Likewise.
      	* gcc.target/i386/ret-thunk-10.c: Likewise.
      	* gcc.target/i386/ret-thunk-11.c: Likewise.
      	* gcc.target/i386/ret-thunk-12.c: Likewise.
      	* gcc.target/i386/ret-thunk-13.c: Likewise.
      	* gcc.target/i386/ret-thunk-14.c: Likewise.
      	* gcc.target/i386/ret-thunk-15.c: Likewise.
      	* gcc.target/i386/ret-thunk-9.c: Likewise.
      	* gcc.target/i386/indirect-thunk-register-1.c: New test.
      	* gcc.target/i386/indirect-thunk-register-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-register-3.c: Likewise.
      
      From-SVN: r256662
      H.J. Lu committed
    • x86: Add -mfunction-return= · 45e14019
      Add -mfunction-return= option to convert function return to call and
      return thunks.  The default is 'keep', which keeps function return
      unmodified.  'thunk' converts function return to call and return thunk.
      'thunk-inline' converts function return to inlined call and return thunk.
      'thunk-extern' converts function return to external call and return
      thunk provided in a separate object file.  You can control this behavior
      for a specific function by using the function attribute function_return.
      
      Function return thunk is the same as memory thunk for -mindirect-branch=
      where the return address is at the top of the stack:
      
      __x86_return_thunk:
      	call L2
      L1:
      	pause
      	lfence
      	jmp L1
      L2:
      	lea 8(%rsp), %rsp|lea 4(%esp), %esp
      	ret
      
      and function return becomes
      
      	jmp __x86_return_thunk
      
      -mindirect-branch= tests are updated with -mfunction-return=keep to
      avoid false test failures when -mfunction-return=thunk is added to
      RUNTESTFLAGS for "make check".
      
      gcc/
      
      	* config/i386/i386-protos.h (ix86_output_function_return): New.
      	* config/i386/i386.c (ix86_set_indirect_branch_type): Also
      	set function_return_type.
      	(indirect_thunk_name): Add ret_p to indicate thunk for function
      	return.
      	(output_indirect_thunk_function): Pass false to
      	indirect_thunk_name.
      	(ix86_output_indirect_branch): Likewise.
      	(output_indirect_thunk_function): Create alias for function
      	return thunk if regno < 0.
      	(ix86_output_function_return): New function.
      	(ix86_handle_fndecl_attribute): Handle function_return.
      	(ix86_attribute_table): Add function_return.
      	* config/i386/i386.h (machine_function): Add
      	function_return_type.
      	* config/i386/i386.md (simple_return_internal): Use
      	ix86_output_function_return.
      	(simple_return_internal_long): Likewise.
      	* config/i386/i386.opt (mfunction-return=): New option.
      	(indirect_branch): Mention -mfunction-return=.
      	* doc/extend.texi: Document function_return function attribute.
      	* doc/invoke.texi: Document -mfunction-return= option.
      
      gcc/testsuite/
      
      	* gcc.target/i386/indirect-thunk-1.c (dg-options): Add
      	-mfunction-return=keep.
      	* gcc.target/i386/indirect-thunk-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-3.c: Likewise.
      	* gcc.target/i386/indirect-thunk-4.c: Likewise.
      	* gcc.target/i386/indirect-thunk-5.c: Likewise.
      	* gcc.target/i386/indirect-thunk-6.c: Likewise.
      	* gcc.target/i386/indirect-thunk-7.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-1.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-3.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-4.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-5.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-6.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-7.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-8.c: Likewise.
      	* gcc.target/i386/indirect-thunk-bnd-1.c: Likewise.
      	* gcc.target/i386/indirect-thunk-bnd-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-bnd-3.c: Likewise.
      	* gcc.target/i386/indirect-thunk-bnd-4.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-1.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-3.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-4.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-5.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-6.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-7.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-1.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-3.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-4.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-5.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-6.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-7.c: Likewise.
      	* gcc.target/i386/ret-thunk-1.c: New test.
      	* gcc.target/i386/ret-thunk-10.c: Likewise.
      	* gcc.target/i386/ret-thunk-11.c: Likewise.
      	* gcc.target/i386/ret-thunk-12.c: Likewise.
      	* gcc.target/i386/ret-thunk-13.c: Likewise.
      	* gcc.target/i386/ret-thunk-14.c: Likewise.
      	* gcc.target/i386/ret-thunk-15.c: Likewise.
      	* gcc.target/i386/ret-thunk-16.c: Likewise.
      	* gcc.target/i386/ret-thunk-2.c: Likewise.
      	* gcc.target/i386/ret-thunk-3.c: Likewise.
      	* gcc.target/i386/ret-thunk-4.c: Likewise.
      	* gcc.target/i386/ret-thunk-5.c: Likewise.
      	* gcc.target/i386/ret-thunk-6.c: Likewise.
      	* gcc.target/i386/ret-thunk-7.c: Likewise.
      	* gcc.target/i386/ret-thunk-8.c: Likewise.
      	* gcc.target/i386/ret-thunk-9.c: Likewise.
      
      From-SVN: r256661
      H.J. Lu committed
    • x86: Add -mindirect-branch= · da99fd4a
      Add -mindirect-branch= option to convert indirect call and jump to call
      and return thunks.  The default is 'keep', which keeps indirect call and
      jump unmodified.  'thunk' converts indirect call and jump to call and
      return thunk.  'thunk-inline' converts indirect call and jump to inlined
      call and return thunk.  'thunk-extern' converts indirect call and jump to
      external call and return thunk provided in a separate object file.  You
      can control this behavior for a specific function by using the function
      attribute indirect_branch.
      
      2 kinds of thunks are geneated.  Memory thunk where the function address
      is at the top of the stack:
      
      __x86_indirect_thunk:
      	call L2
      L1:
      	pause
      	lfence
      	jmp L1
      L2:
      	lea 8(%rsp), %rsp|lea 4(%esp), %esp
      	ret
      
      Indirect jmp via memory, "jmp mem", is converted to
      
      	push memory
      	jmp __x86_indirect_thunk
      
      Indirect call via memory, "call mem", is converted to
      
      	jmp L2
      L1:
      	push [mem]
      	jmp __x86_indirect_thunk
      L2:
      	call L1
      
      Register thunk where the function address is in a register, reg:
      
      __x86_indirect_thunk_reg:
      	call	L2
      L1:
      	pause
      	lfence
      	jmp	L1
      L2:
      	movq	%reg, (%rsp)|movl    %reg, (%esp)
      	ret
      
      where reg is one of (r|e)ax, (r|e)dx, (r|e)cx, (r|e)bx, (r|e)si, (r|e)di,
      (r|e)bp, r8, r9, r10, r11, r12, r13, r14 and r15.
      
      Indirect jmp via register, "jmp reg", is converted to
      
      	jmp __x86_indirect_thunk_reg
      
      Indirect call via register, "call reg", is converted to
      
      	call __x86_indirect_thunk_reg
      
      gcc/
      
      	* config/i386/i386-opts.h (indirect_branch): New.
      	* config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
      	* config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
      	with local indirect jump when converting indirect call and jump.
      	(ix86_set_indirect_branch_type): New.
      	(ix86_set_current_function): Call ix86_set_indirect_branch_type.
      	(indirectlabelno): New.
      	(indirect_thunk_needed): Likewise.
      	(indirect_thunk_bnd_needed): Likewise.
      	(indirect_thunks_used): Likewise.
      	(indirect_thunks_bnd_used): Likewise.
      	(INDIRECT_LABEL): Likewise.
      	(indirect_thunk_name): Likewise.
      	(output_indirect_thunk): Likewise.
      	(output_indirect_thunk_function): Likewise.
      	(ix86_output_indirect_branch): Likewise.
      	(ix86_output_indirect_jmp): Likewise.
      	(ix86_code_end): Call output_indirect_thunk_function if needed.
      	(ix86_output_call_insn): Call ix86_output_indirect_branch if
      	needed.
      	(ix86_handle_fndecl_attribute): Handle indirect_branch.
      	(ix86_attribute_table): Add indirect_branch.
      	* config/i386/i386.h (machine_function): Add indirect_branch_type
      	and has_local_indirect_jump.
      	* config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
      	to true.
      	(tablejump): Likewise.
      	(*indirect_jump): Use ix86_output_indirect_jmp.
      	(*tablejump_1): Likewise.
      	(simple_return_indirect_internal): Likewise.
      	* config/i386/i386.opt (mindirect-branch=): New option.
      	(indirect_branch): New.
      	(keep): Likewise.
      	(thunk): Likewise.
      	(thunk-inline): Likewise.
      	(thunk-extern): Likewise.
      	* doc/extend.texi: Document indirect_branch function attribute.
      	* doc/invoke.texi: Document -mindirect-branch= option.
      
      gcc/testsuite/
      
      	* gcc.target/i386/indirect-thunk-1.c: New test.
      	* gcc.target/i386/indirect-thunk-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-3.c: Likewise.
      	* gcc.target/i386/indirect-thunk-4.c: Likewise.
      	* gcc.target/i386/indirect-thunk-5.c: Likewise.
      	* gcc.target/i386/indirect-thunk-6.c: Likewise.
      	* gcc.target/i386/indirect-thunk-7.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-1.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-3.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-4.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-5.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-6.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-7.c: Likewise.
      	* gcc.target/i386/indirect-thunk-attr-8.c: Likewise.
      	* gcc.target/i386/indirect-thunk-bnd-1.c: Likewise.
      	* gcc.target/i386/indirect-thunk-bnd-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-bnd-3.c: Likewise.
      	* gcc.target/i386/indirect-thunk-bnd-4.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-1.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-3.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-4.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-5.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-6.c: Likewise.
      	* gcc.target/i386/indirect-thunk-extern-7.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-1.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-2.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-3.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-4.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-5.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-6.c: Likewise.
      	* gcc.target/i386/indirect-thunk-inline-7.c: Likewise.
      
      From-SVN: r256660
      H.J. Lu committed
    • re PR ipa/83051 (ICE on valid code at -O3: in edge_badness, at ipa-inline.c:1024) · 3f05a4f0
      
      	PR ipa/83051
      	* gcc.c-torture/compile/pr83051.c: New testcase.
      	* ipa-inline.c (edge_badness): Tolerate roundoff errors.
      
      From-SVN: r256659
      Jan Hubicka committed
    • inline_small_functions speedup · 01b9bf06
      After inlining A into B, inline_small_functions updates the information
      for (most) callees and callers of the new B:
      
      	  update_callee_keys (&edge_heap, where, updated_nodes);
            [...]
            /* Our profitability metric can depend on local properties
      	 such as number of inlinable calls and size of the function body.
      	 After inlining these properties might change for the function we
      	 inlined into (since it's body size changed) and for the functions
      	 called by function we inlined (since number of it inlinable callers
      	 might change).  */
            update_caller_keys (&edge_heap, where, updated_nodes, NULL);
      
      These functions in turn call can_inline_edge_p for most of the associated
      edges:
      
      	    if (can_inline_edge_p (edge, false)
      		&& want_inline_small_function_p (edge, false))
      	      update_edge_key (heap, edge);
      
      can_inline_edge_p indirectly calls estimate_calls_size_and_time
      on the caller node, which seems to recursively process all callee
      edges rooted at the node.  It looks from this like the algorithm
      can be at least quadratic in the worst case.
      
      Maybe there's something we can do to make can_inline_edge_p cheaper, but
      since neither of these two calls is responsible for reporting an inline
      failure reason, it seems cheaper to test want_inline_small_function_p
      first, so that we don't calculate an estimate for something that we
      already know isn't a "small function".  I think the only change
      needed to make that work is to check for CIF_FINAL_ERROR in
      want_inline_small_function_p; at the moment we rely on can_inline_edge_p
      to make that check.
      
      This cuts the time to build optabs.ii by over 4% with an
      --enable-checking=release compiler on x86_64-linux-gnu.  I've seen more
      dramatic wins on aarch64-linux-gnu due to the NUM_POLY_INT_COEFFS==2
      thing.  The patch doesn't affect the output code.
      
      2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* ipa-inline.c (want_inline_small_function_p): Return false if
      	inlining has already failed with CIF_FINAL_ERROR.
      	(update_caller_keys): Call want_inline_small_function_p before
      	can_inline_edge_p.
      	(update_callee_keys): Likewise.
      
      From-SVN: r256658
      Richard Sandiford committed
    • re PR tree-optimization/83501 (strlen(a) not folded after strcpy(a, "...")) · 61760b92
      2018-01-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      	PR tree-optimization/83501
      	* gcc.dg/strlenopt-39.c: Restrict to i?86 and x86_64-*-* targets.
      
      From-SVN: r256657
      Prathamesh Kulkarni committed
    • rs6000-p8swap.c (rs6000_sum_of_two_registers_p): New function. · a3a821c9
      gcc/ChangeLog:
      
      2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
      
      	* config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
      	New function.
      	(rs6000_quadword_masked_address_p): Likewise.
      	(quad_aligned_load_p): Likewise.
      	(quad_aligned_store_p): Likewise.
      	(const_load_sequence_p): Add comment to describe the outer-most loop.
      	(mimic_memory_attributes_and_flags): New function.
      	(rs6000_gen_stvx): Likewise.
      	(replace_swapped_aligned_store): Likewise.
      	(rs6000_gen_lvx): Likewise.
      	(replace_swapped_aligned_load): Likewise.
      	(replace_swapped_load_constant): Capitalize argument name in
      	comment describing this function.
      	(rs6000_analyze_swaps): Add a third pass to search for vector loads
      	and stores that access quad-word aligned addresses and replace
      	with stvx or lvx instructions when appropriate.
      	* config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
      	New function prototype.
      	(rs6000_quadword_masked_address_p): Likewise.
      	(rs6000_gen_lvx): Likewise.
      	(rs6000_gen_stvx): Likewise.
      	* config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
      	VSX_D (V2DF, V2DI), modify this split to select lvx instruction
      	when memory address is aligned.
      	(*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
      	this split to select lvx instruction when memory address is aligned.
      	(*vsx_le_perm_load_v8hi): Modify this split to select lvx
      	instruction when memory address is aligned.
      	(*vsx_le_perm_load_v16qi): Likewise.
      	(four unnamed splitters): Modify to select the stvx instruction
      	when memory is aligned.
      
      gcc/testsuite/ChangeLog:
      
      2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
      
      	* gcc.target/powerpc/pr48857.c: Modify dejagnu directives to look
      	for lvx and stvx instead of lxvd2x and stxvd2x and require
      	little-endian target.  Add comments.
      	* gcc.target/powerpc/swaps-p8-28.c: Add functions for more
      	comprehensive testing.
      	* gcc.target/powerpc/swaps-p8-29.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-30.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-31.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-32.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-33.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-34.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-35.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-36.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-37.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-38.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-39.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-40.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-41.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-42.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-43.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-44.c: Likewise.
      	* gcc.target/powerpc/swaps-p8-45.c: Likewise.
      	* gcc.target/powerpc/vec-extract-2.c: Add comment and remove
      	scan-assembler-not directives that forbid lvx and xxpermdi.
      	* gcc.target/powerpc/vec-extract-3.c: Likewise.
      	* gcc.target/powerpc/vec-extract-5.c: Likewise.
      	* gcc.target/powerpc/vec-extract-6.c: Likewise.
      	* gcc.target/powerpc/vec-extract-7.c: Likewise.
      	* gcc.target/powerpc/vec-extract-8.c: Likewise.
      	* gcc.target/powerpc/vec-extract-9.c: Likewise.
      	* gcc.target/powerpc/vsx-vector-6-le.c: Change
      	scan-assembler-times directives to reflect different numbers of
      	expected xxlnor, xxlor, xvcmpgtdp, and xxland instructions.
      
      libcpp/ChangeLog:
      
      2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
      
      	* lex.c (search_line_fast): Remove illegal coercion of an
      	unaligned pointer value to vector pointer type and replace with
      	use of __builtin_vec_vsx_ld () built-in function, which operates
      	on unaligned pointer values.
      
      From-SVN: r256656
      Kelvin Nilsen committed
    • go/types: implement SizesFor for gccgo · ffad1c54
          
          Move the architecture-specific settings out of configure.ac into a new
          shell script goarch.sh.  Use the new script to collect the values for
          all architectures to make them available in go/types.
          
          Also fix cmd/vet to pass the right compiler when it calls SizesFor.
          
          This fixes cmd/vet for systems that are not implemented in the gc
          toolchain, such as alpha and ia64.
          
          Reviewed-on: https://go-review.googlesource.com/87635
      
      From-SVN: r256655
      Ian Lance Taylor committed
    • re PR libstdc++/83601 (std::regex_replace C++14 conformance issue: escaping in SED mode) · 8532713f
      	PR libstdc++/83601
      	* include/bits/regex.tcc (regex_replace): Fix escaping in sed.
      	* testsuite/28_regex/algorithms/regex_replace/char/pr83601.cc: Tests.
      	* testsuite/28_regex/algorithms/regex_replace/wchar_t/pr83601.cc: Tests.
      
      From-SVN: r256654
      Tim Shen committed
    • Daily bump. · 8bc5a5c5
      From-SVN: r256653
      GCC Administrator committed
  3. 13 Jan, 2018 5 commits
    • Allow for lack of VM_MEMORY_OS_ALLOC_ONCE on Mac OS X (PR sanitizer/82824) · 1f7273e5
      	PR sanitizer/82824
      	* lsan/lsan_common_mac.cc: Cherry-pick upstream r322437.
      
      From-SVN: r256650
      Rainer Orth committed
    • re PR fortran/82007 (DTIO write format stored in a string leads to severe errors) · f208c5cc
      2018-01-13  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
              PR fortran/82007
              * resolve.c (resolve_transfer): Delete code looking for 'DT'
              format specifiers in format strings. Set formatted to true if a
              format string or format label is present.
              * trans-io.c (get_dtio_proc): Likewise. (transfer_expr): Fix
              whitespace.
      
      From-SVN: r256649
      Jerry DeLisle committed
    • predict.c (determine_unlikely_bbs): Handle correctly BBs which appears in the queue multiple times. · f36180f4
      	* predict.c (determine_unlikely_bbs): Handle correctly BBs
      	which appears in the queue multiple times.
      
      From-SVN: r256648
      Jan Hubicka committed
    • re PR fortran/83744 (ICE in ../../gcc/gcc/fortran/dump-parse-tree.c:3093 while… · 39f309ac
      re PR fortran/83744 (ICE in ../../gcc/gcc/fortran/dump-parse-tree.c:3093 while using -fc-prototypes)
      
      2018-01-13  Thomas Koenig <tkoenig@gcc.gnu.org>
      
      	PR fortran/83744
      	* dump-parse-tree.c (get_c_type_name): Remove extra line.
      	Change for loop to use declaration in for loop. Handle BT_LOGICAL
      	and BT_CHARACTER.
      	(write_decl): Add where argument. Fix indentation. Replace
      	assert with error message. Add typename to warning
      	in comment.
      	(write_type): Adjust locus to call of write_decl.
      	(write_variable): Likewise.
      	(write_proc): Likewise. Replace assert with error message.
      
      From-SVN: r256645
      Thomas Koenig committed
    • Support for aliasing with variable strides · a57776a1
      This patch adds runtime alias checks for loops with variable strides,
      so that we can vectorise them even without a restrict qualifier.
      There are several parts to doing this:
      
      1) For accesses like:
      
           x[i * n] += 1;
      
         we need to check whether n (and thus the DR_STEP) is nonzero.
         vect_analyze_data_ref_dependence records values that need to be
         checked in this way, then prune_runtime_alias_test_list records a
         bounds check on DR_STEP being outside the range [0, 0].
      
      2) For accesses like:
      
           x[i * n] = x[i * n + 1] + 1;
      
         we simply need to test whether abs (n) >= 2.
         prune_runtime_alias_test_list looks for cases like this and tries
         to guess whether it is better to use this kind of check or a check
         for non-overlapping ranges.  (We could do an OR of the two conditions
         at runtime, but that isn't implemented yet.)
      
      3) Checks for overlapping ranges need to cope with variable strides.
         At present the "length" of each segment in a range check is
         represented as an offset from the base that lies outside the
         touched range, in the same direction as DR_STEP.  The length
         can therefore be negative and is sometimes conservative.
      
         With variable steps it's easier to reaon about if we split
         this into two:
      
           seg_len:
             distance travelled from the first iteration of interest
             to the last, e.g. DR_STEP * (VF - 1)
      
           access_size:
             the number of bytes accessed in each iteration
      
         with access_size always being a positive constant and seg_len
         possibly being variable.  We can then combine alias checks
         for two accesses that are a constant number of bytes apart by
         adjusting the access size to account for the gap.  This leaves
         the segment length unchanged, which allows the check to be combined
         with further accesses.
      
         When seg_len is positive, the runtime alias check has the form:
      
              base_a >= base_b + seg_len_b + access_size_b
           || base_b >= base_a + seg_len_a + access_size_a
      
         In many accesses the base will be aligned to the access size, which
         allows us to skip the addition:
      
              base_a > base_b + seg_len_b
           || base_b > base_a + seg_len_a
      
         A similar saving is possible with "negative" lengths.
      
         The patch therefore tracks the alignment in addition to seg_len
         and access_size.
      
      2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* tree-vectorizer.h (vec_lower_bound): New structure.
      	(_loop_vec_info): Add check_nonzero and lower_bounds.
      	(LOOP_VINFO_CHECK_NONZERO): New macro.
      	(LOOP_VINFO_LOWER_BOUNDS): Likewise.
      	(LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
      	* tree-data-ref.h (dr_with_seg_len): Add access_size and align
      	fields.  Make seg_len the distance travelled, not including the
      	access size.
      	(dr_direction_indicator): Declare.
      	(dr_zero_step_indicator): Likewise.
      	(dr_known_forward_stride_p): Likewise.
      	* tree-data-ref.c: Include stringpool.h, tree-vrp.h and
      	tree-ssanames.h.
      	(runtime_alias_check_p): Allow runtime alias checks with
      	variable strides.
      	(operator ==): Compare access_size and align.
      	(prune_runtime_alias_test_list): Rework for new distinction between
      	the access_size and seg_len.
      	(create_intersect_range_checks_index): Likewise.  Cope with polynomial
      	segment lengths.
      	(get_segment_min_max): New function.
      	(create_intersect_range_checks): Use it.
      	(dr_step_indicator): New function.
      	(dr_direction_indicator): Likewise.
      	(dr_zero_step_indicator): Likewise.
      	(dr_known_forward_stride_p): Likewise.
      	* tree-loop-distribution.c (data_ref_segment_size): Return
      	DR_STEP * (niters - 1).
      	(compute_alias_check_pairs): Update call to the dr_with_seg_len
      	constructor.
      	* tree-vect-data-refs.c (vect_check_nonzero_value): New function.
      	(vect_preserves_scalar_order_p): New function, split out from...
      	(vect_analyze_data_ref_dependence): ...here.  Check for zero steps.
      	(vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
      	(vect_vfa_access_size): New function.
      	(vect_vfa_align): Likewise.
      	(vect_compile_time_alias): Take access_size_a and access_b arguments.
      	(dump_lower_bound): New function.
      	(vect_check_lower_bound): Likewise.
      	(vect_small_gap_p): Likewise.
      	(vectorizable_with_step_bound_p): Likewise.
      	(vect_prune_runtime_alias_test_list): Ignore cross-iteration
      	depencies if the vectorization factor is 1.  Convert the checks
      	for nonzero steps into checks on the bounds of DR_STEP.  Try using
      	a bunds check for variable steps if the minimum required step is
      	relatively small. Update calls to the dr_with_seg_len
      	constructor and to vect_compile_time_alias.
      	* tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
      	function.
      	(vect_loop_versioning): Call it.
      	* tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
      	when retrying.
      	(vect_estimate_min_profitable_iters): Account for any bounds checks.
      
      gcc/testsuite/
      	* gcc.dg/vect/bb-slp-cond-1.c: Expect loop vectorization rather
      	than SLP vectorization.
      	* gcc.dg/vect/vect-alias-check-10.c: New test.
      	* gcc.dg/vect/vect-alias-check-11.c: Likewise.
      	* gcc.dg/vect/vect-alias-check-12.c: Likewise.
      	* gcc.dg/vect/vect-alias-check-8.c: Likewise.
      	* gcc.dg/vect/vect-alias-check-9.c: Likewise.
      	* gcc.target/aarch64/sve/strided_load_8.c: Likewise.
      	* gcc.target/aarch64/sve/var_stride_1.c: Likewise.
      	* gcc.target/aarch64/sve/var_stride_1.h: Likewise.
      	* gcc.target/aarch64/sve/var_stride_1_run.c: Likewise.
      	* gcc.target/aarch64/sve/var_stride_2.c: Likewise.
      	* gcc.target/aarch64/sve/var_stride_2_run.c: Likewise.
      	* gcc.target/aarch64/sve/var_stride_3.c: Likewise.
      	* gcc.target/aarch64/sve/var_stride_3_run.c: Likewise.
      	* gcc.target/aarch64/sve/var_stride_4.c: Likewise.
      	* gcc.target/aarch64/sve/var_stride_4_run.c: Likewise.
      	* gcc.target/aarch64/sve/var_stride_5.c: Likewise.
      	* gcc.target/aarch64/sve/var_stride_5_run.c: Likewise.
      	* gcc.target/aarch64/sve/var_stride_6.c: Likewise.
      	* gcc.target/aarch64/sve/var_stride_6_run.c: Likewise.
      	* gcc.target/aarch64/sve/var_stride_7.c: Likewise.
      	* gcc.target/aarch64/sve/var_stride_7_run.c: Likewise.
      	* gcc.target/aarch64/sve/var_stride_8.c: Likewise.
      	* gcc.target/aarch64/sve/var_stride_8_run.c: Likewise.
      	* gfortran.dg/vect/vect-alias-check-1.F90: Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r256644
      Richard Sandiford committed