1. 06 Jul, 2017 13 commits
    • Add support for ARMv8-R architecture · 9296dd9b
      2017-07-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>
      
          gcc/
          * config/arm/arm-cpus.in (armv8-r): Add new entry.
          * config/arm/arm-isa.h (ISA_ARMv8r): Define macro.
          * config/arm/arm-tables.opt: Regenerate.
          * config/arm/arm.h (enum base_architecture): Add BASE_ARCH_8R
          enumerator.
          * doc/invoke.texi: Mention -march=armv8-r and its extensions.
      
          gcc/testsuite/
          * lib/target-supports.exp: Generate
          check_effective_target_arm_arch_v8r_ok, add_options_for_arm_arch_v8r
          and check_effective_target_arm_arch_v8r_multilib.
      
          libgcc/
          * config/arm/lib1funcs.S: Defined __ARM_ARCH__ to 8 for ARMv8-R.
      
      From-SVN: r250025
      Thomas Preud'homme committed
    • ChangeLog: Clean up from mid air collision · d87f00ba
      gcc/ChangeLog:
      
      2017-07-06  Carl Love  <cel@us.ibm.com>
      
       	* ChangeLog: Clean up from mid air collision
      	
      gcc/testsuite/ChangeLog:
      
      2017-07-06  Carl Love  <cel@us.ibm.com>
      
       	* ChangeLog: Clean up from mid air collision
      
      From-SVN: r250024
      Carl Love committed
    • rs6000-c.c: Add support for built-in functions vector signed int vec_subc (vector signed int... · 08e60e19
      gcc/ChangeLog:
      
      2017-07-06  Carl Love  <cel@us.ibm.com>
      
      	* config/rs6000/rs6000-c.c: Add support for built-in functions
      	vector signed int vec_subc (vector signed int, vector signed int);
      	vector signed __int128 vec_subc (vector signed __int128,
      					 vector signed __int128);
      	vector unsigned __int128 vec_subc (vector unsigned __int128,
      					   vector unsigned __int128);
      	vector signed int vec_sube (vector signed int, vector signed int,
      				    vector signed int);
      	vector unsigned int vec_sube (vector unsigned int,
      				      vector unsigned int,
      				      vector unsigned int);
      	vector signed __int128 vec_sube (vector signed __int128,
      					 vector signed __int128,
      					 vector signed__int128);
      	vector unsigned __int128 vec_sube (vector unsigned __int128,
      					   vector unsigned __int128,
      					   vector unsigned __int128);
      	vector signed int vec_subec (vector signed int, vector signed int,
      				     vector signed int);
      	vector unsigned int vec_subec (vector unsigned int,
      				       vector unsigned int,
      				       vector unsigned int);
      	vector signed __int128 vec_subec (vector signed __int128,
      					  vector signed __int128,
      					  vector signed__int128);
      	vector unsigned __int128 vec_subec (vector unsigned __int128,
      					    vector unsigned __int128,
      					    vector unsigned __int128);
      	* config/rs6000/rs6000.c (ALTIVEC_BUILTIN_VEC_SUBE,
      	ALTIVEC_BUILTIN_VEC_SUBEC): Add ef_builtins.
      	* config/rs6000/rs6000-builtin.def (SUBE, SUBEC): Add
      	BU_ALTIVEC_OVERLOAD_X definitions.
      	* config/rs6000/altivec.h (vec_sube, vec_subec): Add builtin defines.
      	* doc/extend.texi: Update the built-in documentation file for the new
      	built-in functions.
      
      gcc/testsuite/ChangeLog:
      
      2017-07-06  Carl Love  <cel@us.ibm.com>
      
      	* gcc.target/powerpc/p8vector-builtin-8.c (foo): Add test cases for
      	the new vec_subc, vec_sube, vec_subec built-ins.  Add the missing test
      	cases for vec_addc, adde and addec builtins.
      
      From-SVN: r250023
      Carl Love committed
    • diagnostics: fix end-points of ranges within macros (PR c++/79300) · c471c6ed
      gcc/ChangeLog:
      	PR c++/79300
      	* diagnostic-show-locus.c (layout::layout): Use start and finish
      	spelling location for the start and finish of each range.
      	* genmatch.c (linemap_client_expand_location_to_spelling_point):
      	Add unused aspect param.
      	* input.c (expand_location_1): Add "aspect" param, and use it
      	to access the correct part of the location.
      	(expand_location): Pass LOCATION_ASPECT_CARET to new param of
      	expand_location_1.
      	(expand_location_to_spelling_point): Likewise.
      	(linemap_client_expand_location_to_spelling_point): Add "aspect"
      	param, and pass it to expand_location_1.
      
      gcc/testsuite/ChangeLog:
      	PR c++/79300
      	* c-c++-common/Wmisleading-indentation-3.c (fn_14): Update
      	expected underlining within macro expansion.
      	* c-c++-common/pr70264.c: Likewise.
      	* g++.dg/plugin/diagnostic-test-expressions-1.C
      	(test_within_macro_1): New test.
      	(test_within_macro_2): Likewise.
      	(test_within_macro_3): Likewise.
      	(test_within_macro_4): Likewise.
      	* gcc.dg/format/diagnostic-ranges.c (test_macro_3): Update
      	expected underlining within macro expansion.
      	(test_macro_4): Likewise.
      	* gcc.dg/plugin/diagnostic-test-expressions-1.c
      	(test_within_macro_1): New test.
      	(test_within_macro_2): Likewise.
      	(test_within_macro_3): Likewise.
      	(test_within_macro_4): Likewise.
      	* gcc.dg/spellcheck-fields-2.c (test_macro): Update expected
      	underlining within macro expansion.
      
      libcpp/ChangeLog:
      	PR c++/79300
      	* include/line-map.h (enum location_aspect): New enum.
      	(linemap_client_expand_location_to_spelling_point): Add
      	enum location_aspect param.
      	* line-map.c (rich_location::get_expanded_location): Update for
      	new param of linemap_client_expand_location_to_spelling_point.
      	(rich_location::maybe_add_fixit): Likewise.
      	(fixit_hint::affects_line_p): Likewise.
      
      From-SVN: r250022
      David Malcolm committed
    • Fix memory leaks in libstdc++ tests · 32aaf6ef
      	* testsuite/20_util/specialized_algorithms/memory_management_tools/
      	1.cc: Free memory.
      	* testsuite/22_locale/locale/cons/5.cc: Remove redundant restoration
      	of original environment and free memory.
      
      From-SVN: r250021
      Jonathan Wakely committed
    • Fix memory leaks in libstdc++ ABI tests · 4f7c2c7f
      	* testsuite/abi/pr42230.cc: Free memory.
      	* testsuite/util/testsuite_abi.cc (demangle): Return std::string
      	instead of pointer that might need freeing.
      	* testsuite/util/testsuite_abi.h (demangle): Likewise.
      	* testsuite/util/testsuite_hooks.cc (verify_demangle): Free memory.
      
      From-SVN: r250020
      Jonathan Wakely committed
    • Prevent __uses_alloc from holding dangling references · 318c48e3
      	* include/bits/uses_allocator.h (__use_alloc(const _Alloc&&)): Add
      	deleted overload to prevent dangling references to rvalues.
      	* include/experimental/memory_resource
      	(polymorphic_allocator::construct): Do not call __use_alloc with
      	rvalue arguments.
      
      From-SVN: r250019
      Jonathan Wakely committed
    • Add missing intrinsics for VGETMANT[SD,SS] and VGETEXP[SD,SS] · 68d872d7
      gcc/
      	* config/i386/avx512fintrin.h (_mm_mask_getexp_round_ss, 
      	_mm_maskz_getexp_round_ss,	_mm_mask_getexp_round_sd, 
      	_mm_maskz_getexp_round_sd, _mm_mask_getmant_round_sd,
      	_mm_maskz_getmant_round_sd, _mm_mask_getmant_round_ss, 
      	_mm_maskz_getmant_round_ss, _mm_mask_getexp_ss, _mm_maskz_getexp_ss, 
      	_mm_mask_getexp_sd, _mm_maskz_getexp_sd, _mm_mask_getmant_sd, 
      	_mm_maskz_getmant_sd, _mm_mask_getmant_ss, 
      	_mm_maskz_getmant_ss): New intrinsics.
      	(__builtin_ia32_getexpss128_mask): Changed to ...
      	__builtin_ia32_getexpss128_round ... this.
      	(__builtin_ia32_getexpsd128_mask): Changed to ...
      	__builtin_ia32_getexpsd128_round ... this.
      	* config/i386/i386-builtin-types.def 
      	((V2DF, V2DF, V2DF, INT, V2DF, UQI, INT),
      	(V4SF, V4SF, V4SF, INT, V4SF, UQI, INT)): New function type aliases.
      	* config/i386/i386-builtin.def (__builtin_ia32_getexpsd_mask_round, 
      	__builtin_ia32_getexpss_mask_round,	__builtin_ia32_getmantsd_mask_round, 
      	__builtin_ia32_getmantss_mask_round): New builtins.
      	* config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_INT_V2DF_UQI_INT,
      	V4SF_FTYPE_V4SF_V4SF_INT_V4SF_UQI_INT): Handle new types.
      	(CODE_FOR_avx512f_vgetmantv2df_mask_round, 
      	CODE_FOR_avx512f_vgetmantv4sf_mask_round): New cases.
      	* config/i386/sse.md 
      	(avx512f_sgetexp<mode><round_saeonly_name>): Changed to ...
      	avx512f_sgetexp<mode><mask_scalar_name>
      	<round_saeonly_scalar_name> ... this.
      	(vgetexp<ssescalarmodesuffix>\t{<round_saeonly_op3>%2, %1, %0|
      	%0, %1, %2<round_saeonly_op3>}): Changed to ...
      	vgetexp<ssescalarmodesuffix>
      	\t{<round_saeonly_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
      	%0<mask_scalar_operand3>, %1, %2<round_saeonly_scalar_mask_op3>} ... this.
      	(avx512f_vgetmant<mode><round_saeonly_name>): Changed to ...
      	avx512f_vgetmant<mode><mask_scalar_name>
      	<round_saeonly_scalar_name> ... this.
      	(vgetmant<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
      	%0, %1, %2<round_saeonly_op4>, %3}): Changed to ...
      	vgetmant<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.
      	* config/i386/subst.md (mask_scalar_operand4, 
      	round_saeonly_scalar_mask_operand4,	round_saeonly_scalar_mask_op4, 
      	round_saeonly_scalar_nimm_predicate): New subst attributes.
      
      gcc/testsuite/
      	* gcc.target/i386/avx512f-vgetexpsd-1.c (_mm_mask_getexp_sd, 
      	_mm_maskz_getexp_sd, _mm_mask_getexp_round_sd, 
      	_mm_maskz_getexp_round_sd): Test new intrinsics.
      	* gcc.target/i386/avx512f-vgetexpss-1.c (_mm_mask_getexp_ss, 
      	_mm_maskz_getexp_ss, _mm_mask_getexp_round_ss, 
      	_mm_maskz_getexp_round_ss): Ditto.
      	* gcc.target/i386/avx512f-vgetmantsd-1.c (_mm_mask_getmant_sd, 
      	_mm_maskz_getmant_sd, _mm_mask_getmant_round_sd, 
      	_mm_maskz_getmant_round_sd): Ditto.
      	* gcc.target/i386/avx512f-vgetmantss-1.c (_mm_mask_getmant_ss, 
      	_mm_maskz_getmant_ss, _mm_mask_getmant_round_ss, 
      	_mm_maskz_getmant_round_ss): Ditto.
      	* gcc.target/i386/avx512f-vgetexpsd-2.c (_mm_mask_getexp_sd, 
      	_mm_maskz_getexp_sd, _mm_getexp_round_sd, _mm_mask_getexp_round_sd, 
      	_mm_maskz_getexp_round_sd): New runtime tests.
      	* gcc.target/i386/avx512f-vgetexpss-2.c (_mm_mask_getexp_ss, 
      	_mm_maskz_getexp_ss, _mm_getexp_round_ss, _mm_mask_getexp_round_ss, 
      	_mm_maskz_getexp_round_ss): Ditto.
      	* gcc.target/i386/avx512f-vgetmantsd-2.c (_mm_mask_getmant_sd, 
      	_mm_maskz_getmant_sd, _mm_getmant_round_sd, _mm_mask_getmant_round_sd, 
      	_mm_maskz_getmant_round_sd): Ditto.
      	* gcc.target/i386/avx512f-vgetmantss-2.c (_mm_mask_getmant_ss, 
      	_mm_maskz_getmant_ss, _mm_getmant_round_ss, _mm_mask_getmant_round_ss, 
      	_mm_maskz_getmant_round_ss): Ditto.
      	* gcc.target/i386/avx-1.c (__builtin_ia32_getexpsd_mask_round, 
      	__builtin_ia32_getexpss_mask_round,	__builtin_ia32_getmantsd_mask_round, 
      	__builtin_ia32_getmantss_mask_round): Test new builtins.
      	* gcc.target/i386/sse-13.c : Ditto.
      	* gcc.target/i386/sse-23.c: Ditto. 
      	* gcc.target/i386/sse-14.c (_mm_maskz_getexp_round_sd, 
      	_mm_maskz_getexp_round_ss, _mm_mask_getmant_round_sd, 
      	_mm_maskz_getmant_round_sd, _mm_mask_getmant_round_ss,
      	_mm_maskz_getmant_round_ss, _mm_mask_getexp_round_sd, 
      	_mm_mask_getexp_round_ss): Test new intrinsics.
      	* gcc.target/i386/testround-1.c: Ditto.
      	* gcc.target/i386/sse-22.c (_mm_maskz_getmant_round_sd, 
      	_mm_maskz_getmant_round_ss, _mm_mask_getmant_round_sd, 
      	_mm_mask_getmant_round_ss): Test new intrinsics 
      	* gcc.target/i386/testimm-10.c (_mm_mask_getmant_sd, 
      	_mm_maskz_getmant_sd, _mm_mask_getmant_ss, 
      	_mm_maskz_getmant_ss): Test new intrinsics.
      
      From-SVN: r250018
      Sebastian Peryt committed
    • Remove old rounding code · 81bfefba
      gcc/
      	* gcc/config/i386/i386.c (ix86_erase_embedded_rounding):
      	Remove code for old rounding pattern.
      
      From-SVN: r250017
      Julia Koval committed
    • [arm] Fix warning in parsecpu.awk · af5b71c2
      In awk, single quotes within a quoted string do not need escaping.
      The existing code causes awk to grumble in the build logs.
      
      	* config/arm/parsecpu.awk (gen_comm_data): Do not escape single quotes
      	in quoted strings.
      
      From-SVN: r250016
      Richard Earnshaw committed
    • [arm] Fix cross-native builds · ad0f66e0
      The patch I committed yesterday to remove some generated headers from
      the source tree unfortunately has a dependency missing that is only
      revealed when doing a cross-native or full Canadian cross build.  The
      gen* programs were missing a dependency on one of the generated
      headers.
      
      Fixed by adding an explicit dependency rule for GTM_H in the same way
      as we do for TM_H.
      
      	* config/arm/t-arm (GTM_H): Add arm-cpu.h.
      
      Checked that this restores cross-native building.
      
      From-SVN: r250015
      Richard Earnshaw committed
    • [testsuite] Add dg-require-stack-check · 9e00a397
      2017-07-06  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	gcc/
      	* doc/sourcebuild.texi (Test Directives, Variants of
      	dg-require-support): Add documentation for dg-require-stack-check.
      
      	gcc/testsuite/
      	* lib/target-supports-dg.exp (dg-require-stack-check): New.
      	* lib/target-supports.exp (check_stack_check_available): New.
      	* g++.dg/other/i386-9.C: Add dg-require-stack-check.
      	* gcc.c-torture/compile/stack-check-1.c: Likewise.
      	* gcc.dg/graphite/run-id-pr47653.c: Likewise.
      	* gcc.dg/pr47443.c: Likewise.
      	* gcc.dg/pr48134.c: Likewise.
      	* gcc.dg/pr70017.c: Likewise.
      	* gcc.target/aarch64/stack-checking.c: Likewise.
      	* gcc.target/arm/stack-checking.c: Likewise.
      	* gcc.target/i386/pr48723.c: Likewise.
      	* gcc.target/i386/pr55672.c: Likewise.
      	* gcc.target/i386/pr67265-2.c: Likewise.
      	* gcc.target/i386/pr67265.c: Likewise.
      	* gnat.dg/opt49.adb: Likewise.
      	* gnat.dg/stack_check1.adb: Likewise.
      	* gnat.dg/stack_check2.adb: Likewise.
      	* gnat.dg/stack_check3.adb: Likewise.
      
      From-SVN: r250013
      Christophe Lyon committed
    • Daily bump. · b32d067b
      From-SVN: r250012
      GCC Administrator committed
  2. 05 Jul, 2017 23 commits
    • re PR target/80103 (ICE in output_1144, at config/rs6000/vsx.md:2298) · 38e6cc4d
      gcc/testsuite/ChangeLog:
      
      2017-07-05  Kelvin Nilsen  <kelvin@gcc.gnu.org>
      
      	PR target/80103
      	* gcc.target/powerpc/pr80103-1.c (void b): Correct spelling of
      	__attribute__.
      
      From-SVN: r250008
      Kelvin Nilsen committed
    • Scalar mask and round RTL templates · f8aa2b2c
      gcc/
      	* config/i386/subst.md (mask_scalar, round_scalar,
      	round_saeonly_scalar): New meta-templates.
      	(mask_scalar_name, mask_scalar_operand3, round_scalar_name,
      	round_scalar_mask_operand3, round_scalar_mask_op3,
      	round_scalar_constraint, round_scalar_prefix, round_saeonly_scalar_name,
      	round_saeonly_scalar_mask_operand3, round_saeonly_scalar_mask_op3,
      	round_saeonly_scalar_constraint,
      	round_saeonly_scalar_prefix): New subst attribute.
      	* config/i386/sse.md
      	(<sse>_vm<plusminus_insn><mode>3<mask_name><round_name>): Renamed to ...
      	<sse>_vm<plusminus_insn><mode>3<mask_scalar_name>
      	<round_scalar_name> ... this.
      	(<sse>_vm<multdiv_mnemonic><mode>3<mask_name><round_name>): Renamed to ...
      	<sse>_vm<multdiv_mnemonic><mode>3<mask_scalar_name>
      	<round_scalar_name> ... this.
      	(<sse>_vm<code><mode>3<mask_name><round_saeonly_name>): Renamed to ...
      	<sse>_vm<code><mode>3<mask_scalar_name>
      	<round_saeonly_scalar_name> ... this.
      	(v<plusminus_mnemonic><ssescalarmodesuffix>
      	\t{<round_mask_op3>%2, %1, %0<mask_operand3>|
      	%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ...
      	v<plusminus_mnemonic><ssescalarmodesuffix>
      	\t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
      	%0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this.
      	(v<multdiv_mnemonic><ssescalarmodesuffix>
      	\t{<round_mask_op3>%2, %1, %0<mask_operand3>|
      	%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ...
      	v<multdiv_mnemonic><ssescalarmodesuffix>
      	\t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
      	%0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this.
      	(v<maxmin_float><ssescalarmodesuffix>
      	\t{<round_saeonly_mask_op3>%2, %1, %0<mask_operand3>|
      	%0<mask_operand3>, %1, %<iptr>2<round_saeonly_mask_op3>}): Changed to ...
      	v<maxmin_float><ssescalarmodesuffix>
      	\t{<round_saeonly_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
      	%0<mask_scalar_operand3>, %1, %<iptr>2
      	<round_saeonly_scalar_mask_op3>} ... this.
      
      gcc/testsuite/
      	* gcc.target/i386/avx512f-vaddsd-3.c: New test for mask 0 verification.
      	* gcc.target/i386/avx512f-vaddss-3.c: Ditto.
      	* gcc.target/i386/avx512f-vdivsd-3.c: Ditto.
      	* gcc.target/i386/avx512f-vdivss-3.c: Ditto.
      	* gcc.target/i386/avx512f-vmaxsd-3.c: Ditto.
      	* gcc.target/i386/avx512f-vmaxss-3.c: Ditto.
      	* gcc.target/i386/avx512f-vminsd-3.c: Ditto.
      	* gcc.target/i386/avx512f-vminss-3.c: Ditto.
      	* gcc.target/i386/avx512f-vmulsd-3.c: Ditto.
      	* gcc.target/i386/avx512f-vmulss-3.c: Ditto.
      	* gcc.target/i386/avx512f-vsubsd-3.c: Ditto.
      	* gcc.target/i386/avx512f-vsubss-3.c: Ditto.
      
      From-SVN: r250006
      Sebastian Peryt committed
    • [ARM] Implement TARGET_FIXED_CONDITION_CODE_REGS · 75e2d19b
      This patch implements TARGET_FIXED_CONDITION_CODE_REGS on ARM.
      
      We have two main cases to consider: in Thumb1 code there are no
      condition code registers, so we simply return false.  For other
      cases we set the the first pointer to CC_REGNUM and the second to
      VFPCC_REGNUM iff generating hard-float code.
      
      Running the CSiBE benchmark I see a couple of cases (both in the same
      file) where this feature kicks in, so it's not a major change.
      
      	* config/arm/arm.c (arm_fixed_condition_code_regs): New function.
      	(TARGET_FIXED_CONDITION_CODE_REGS): Redefine.
      
      From-SVN: r250005
      Richard Earnshaw committed
    • Use SET_DECL_MODE in libcc1 · d8448c58
      2017-07-05  Richard Sandiford  <richard.sandiford@linaro.org>
      
      libcc1/
      	* libcp1plugin.cc (plugin_build_field): Use SET_DECL_MODE.
      
      From-SVN: r250004
      Richard Sandiford committed
    • Remove enum before machine_mode · b8506a8a
      r216834 did a mass removal of "enum" before "machine_mode".  This patch
      removes some new uses that have been added since then.
      
      2017-07-05  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* combine.c (simplify_if_then_else): Remove "enum" before
      	"machine_mode".
      	* compare-elim.c (can_eliminate_compare): Likewise.
      	* config/aarch64/aarch64-builtins.c (aarch64_simd_builtin_std_type):
      	Likewise.
      	(aarch64_lookup_simd_builtin_type): Likewise.
      	(aarch64_simd_builtin_type): Likewise.
      	(aarch64_init_simd_builtin_types): Likewise.
      	(aarch64_simd_expand_args): Likewise.
      	* config/aarch64/aarch64-protos.h (aarch64_simd_attr_length_rglist):
      	Likewise.
      	(aarch64_reverse_mask): Likewise.
      	(aarch64_simd_emit_reg_reg_move): Likewise.
      	(aarch64_gen_adjusted_ldpstp): Likewise.
      	(aarch64_ccmp_mode_to_code): Likewise.
      	(aarch64_operands_ok_for_ldpstp): Likewise.
      	(aarch64_operands_adjust_ok_for_ldpstp): Likewise.
      	* config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
      	Likewise.
      	(aarch64_min_divisions_for_recip_mul): Likewise.
      	(aarch64_reassociation_width): Likewise.
      	(aarch64_get_condition_code_1): Likewise.
      	(aarch64_simd_emit_reg_reg_move): Likewise.
      	(aarch64_simd_attr_length_rglist): Likewise.
      	(aarch64_reverse_mask): Likewise.
      	(aarch64_operands_ok_for_ldpstp): Likewise.
      	(aarch64_operands_adjust_ok_for_ldpstp): Likewise.
      	(aarch64_gen_adjusted_ldpstp): Likewise.
      	* config/aarch64/cortex-a57-fma-steering.c (fma_node::rename):
      	Likewise.
      	* config/arc/arc.c (legitimate_offset_address_p): Likewise.
      	* config/arm/arm-builtins.c (arm_simd_builtin_std_type): Likewise.
      	(arm_lookup_simd_builtin_type): Likewise.
      	(arm_simd_builtin_type): Likewise.
      	(arm_init_simd_builtin_types): Likewise.
      	(arm_expand_builtin_args): Likewise.
      	* config/arm/arm-protos.h (arm_expand_builtin): Likewise.
      	* config/ft32/ft32.c (ft32_libcall_value): Likewise.
      	(ft32_setup_incoming_varargs): Likewise.
      	(ft32_function_arg): Likewise.
      	(ft32_function_arg_advance): Likewise.
      	(ft32_pass_by_reference): Likewise.
      	(ft32_arg_partial_bytes): Likewise.
      	(ft32_valid_pointer_mode): Likewise.
      	(ft32_addr_space_pointer_mode): Likewise.
      	(ft32_addr_space_legitimate_address_p): Likewise.
      	* config/i386/i386-protos.h (ix86_operands_ok_for_move_multiple):
      	Likewise.
      	* config/i386/i386.c (ix86_setup_incoming_vararg_bounds): Likewise.
      	(ix86_emit_outlined_ms2sysv_restore): Likewise.
      	(iamcu_alignment): Likewise.
      	(canonicalize_vector_int_perm): Likewise.
      	(ix86_noce_conversion_profitable_p): Likewise.
      	(ix86_mpx_bound_mode): Likewise.
      	(ix86_operands_ok_for_move_multiple): Likewise.
      	* config/microblaze/microblaze-protos.h
      	(microblaze_expand_conditional_branch_reg): Likewise.
      	* config/microblaze/microblaze.c
      	(microblaze_expand_conditional_branch_reg): Likewise.
      	* config/powerpcspe/powerpcspe.c (rs6000_init_hard_regno_mode_ok):
      	Likewise.
      	(rs6000_reassociation_width): Likewise.
      	(rs6000_invalid_binary_op): Likewise.
      	(fusion_p9_p): Likewise.
      	(emit_fusion_p9_load): Likewise.
      	(emit_fusion_p9_store): Likewise.
      	* config/riscv/riscv-protos.h (riscv_regno_mode_ok_for_base_p):
      	Likewise.
      	(riscv_hard_regno_mode_ok_p): Likewise.
      	(riscv_address_insns): Likewise.
      	(riscv_split_symbol): Likewise.
      	(riscv_legitimize_move): Likewise.
      	(riscv_function_value): Likewise.
      	(riscv_hard_regno_nregs): Likewise.
      	(riscv_expand_builtin): Likewise.
      	* config/riscv/riscv.c (riscv_build_integer_1): Likewise.
      	(riscv_build_integer): Likewise.
      	(riscv_split_integer): Likewise.
      	(riscv_legitimate_constant_p): Likewise.
      	(riscv_cannot_force_const_mem): Likewise.
      	(riscv_regno_mode_ok_for_base_p): Likewise.
      	(riscv_valid_base_register_p): Likewise.
      	(riscv_valid_offset_p): Likewise.
      	(riscv_valid_lo_sum_p): Likewise.
      	(riscv_classify_address): Likewise.
      	(riscv_legitimate_address_p): Likewise.
      	(riscv_address_insns): Likewise.
      	(riscv_load_store_insns): Likewise.
      	(riscv_force_binary): Likewise.
      	(riscv_split_symbol): Likewise.
      	(riscv_force_address): Likewise.
      	(riscv_legitimize_address): Likewise.
      	(riscv_move_integer): Likewise.
      	(riscv_legitimize_const_move): Likewise.
      	(riscv_legitimize_move): Likewise.
      	(riscv_address_cost): Likewise.
      	(riscv_subword): Likewise.
      	(riscv_output_move): Likewise.
      	(riscv_canonicalize_int_order_test): Likewise.
      	(riscv_emit_int_order_test): Likewise.
      	(riscv_function_arg_boundary): Likewise.
      	(riscv_pass_mode_in_fpr_p): Likewise.
      	(riscv_pass_fpr_single): Likewise.
      	(riscv_pass_fpr_pair): Likewise.
      	(riscv_get_arg_info): Likewise.
      	(riscv_function_arg): Likewise.
      	(riscv_function_arg_advance): Likewise.
      	(riscv_arg_partial_bytes): Likewise.
      	(riscv_function_value): Likewise.
      	(riscv_pass_by_reference): Likewise.
      	(riscv_setup_incoming_varargs): Likewise.
      	(riscv_print_operand): Likewise.
      	(riscv_elf_select_rtx_section): Likewise.
      	(riscv_save_restore_reg): Likewise.
      	(riscv_for_each_saved_reg): Likewise.
      	(riscv_register_move_cost): Likewise.
      	(riscv_hard_regno_mode_ok_p): Likewise.
      	(riscv_hard_regno_nregs): Likewise.
      	(riscv_class_max_nregs): Likewise.
      	(riscv_memory_move_cost): Likewise.
      	* config/rl78/rl78-protos.h (rl78_split_movsi): Likewise.
      	* config/rl78/rl78.c (rl78_split_movsi): Likewise.
      	(rl78_addr_space_address_mode): Likewise.
      	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
      	Likewise.
      	* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise.
      	(rs6000_reassociation_width): Likewise.
      	(rs6000_invalid_binary_op): Likewise.
      	(fusion_p9_p): Likewise.
      	(emit_fusion_p9_load): Likewise.
      	(emit_fusion_p9_store): Likewise.
      	* config/visium/visium-protos.h (prepare_move_operands): Likewise.
      	(ok_for_simple_move_operands): Likewise.
      	(ok_for_simple_move_strict_operands): Likewise.
      	(ok_for_simple_arith_logic_operands): Likewise.
      	(visium_legitimize_reload_address): Likewise.
      	(visium_select_cc_mode): Likewise.
      	(output_cbranch): Likewise.
      	(visium_split_double_move): Likewise.
      	(visium_expand_copysign): Likewise.
      	(visium_expand_int_cstore): Likewise.
      	(visium_expand_fp_cstore): Likewise.
      	* config/visium/visium.c (visium_pass_by_reference): Likewise.
      	(visium_function_arg): Likewise.
      	(visium_function_arg_advance): Likewise.
      	(visium_libcall_value): Likewise.
      	(visium_setup_incoming_varargs): Likewise.
      	(visium_legitimate_constant_p): Likewise.
      	(visium_legitimate_address_p): Likewise.
      	(visium_legitimize_address): Likewise.
      	(visium_secondary_reload): Likewise.
      	(visium_register_move_cost): Likewise.
      	(visium_memory_move_cost): Likewise.
      	(prepare_move_operands): Likewise.
      	(ok_for_simple_move_operands): Likewise.
      	(ok_for_simple_move_strict_operands): Likewise.
      	(ok_for_simple_arith_logic_operands): Likewise.
      	(visium_function_value_1): Likewise.
      	(rtx_ok_for_offset_p): Likewise.
      	(visium_legitimize_reload_address): Likewise.
      	(visium_split_double_move): Likewise.
      	(visium_expand_copysign): Likewise.
      	(visium_expand_int_cstore): Likewise.
      	(visium_expand_fp_cstore): Likewise.
      	(visium_split_cstore): Likewise.
      	(visium_select_cc_mode): Likewise.
      	(visium_split_cbranch): Likewise.
      	(output_cbranch): Likewise.
      	(visium_print_operand_address): Likewise.
      	* expmed.c (flip_storage_order): Likewise.
      	* expmed.h (emit_cstore): Likewise.
      	(flip_storage_order): Likewise.
      	* genrecog.c (validate_pattern): Likewise.
      	* hsa-gen.c (gen_hsa_addr): Likewise.
      	* internal-fn.c (expand_arith_overflow): Likewise.
      	* ira-color.c (allocno_copy_cost_saving): Likewise.
      	* lra-assigns.c (find_hard_regno_for_1): Likewise.
      	* lra-constraints.c (prohibited_class_reg_set_mode_p): Likewise.
      	(process_invariant_for_inheritance): Likewise.
      	* lra-eliminations.c (move_plus_up): Likewise.
      	* omp-low.c (lower_oacc_reductions): Likewise.
      	* simplify-rtx.c (simplify_subreg): Likewise.
      	* target.def (TARGET_SETUP_INCOMING_VARARG_BOUNDS): Likewise.
      	(TARGET_CHKP_BOUND_MODE): Likewise..
      	* targhooks.c (default_chkp_bound_mode): Likewise.
      	(default_setup_incoming_vararg_bounds): Likewise.
      	* targhooks.h (default_chkp_bound_mode): Likewise.
      	(default_setup_incoming_vararg_bounds): Likewise.
      	* tree-ssa-math-opts.c (divmod_candidate_p): Likewise.
      	* tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
      	(have_whole_vector_shift): Likewise.
      	* tree-vect-stmts.c (vectorizable_load): Likewise.
      	* doc/tm.texi: Regenerate.
      
      gcc/brig/
      	* brig-c.h (brig_type_for_mode): Remove "enum" before "machine_mode".
      	* brig-lang.c (brig_langhook_type_for_mode): Likewise.
      
      gcc/jit/
      	* dummy-frontend.c (jit_langhook_type_for_mode): Remove "enum" before
      	"machine_mode".
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r250003
      Richard Sandiford committed
    • Graceful degrade if Binutils PR21472 is not available. · 98f9d0ca
      gcc/
      	Graceful degrade if Binutils PR21472 is not available.
      	PR target/81072
      	* configure.ac [target=avr]: WARN instead of ERROR if avrxmega3
      	.rodata in flash test fails.
      	(HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH): Define it if test passes.
      	* confgure: Regenerate.
      	* config.in: Regenerate.
      	* config/avr/avr.c (avr_asm_named_section)
      	[HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH]: Only trigger
      	__do_copy_data for stuff in .rodata if flash_pm_offset = 0.
      	(avr_asm_init_sections): Same.
      
      From-SVN: r250000
      Georg-Johann Lay committed
    • [Patch ARM] Remove %? string from some Advanced SIMD patterns. · e60226ff
      Advanced SIMD patterns are not predicable, thus they should not have
      %? in their output templates. Found when auditing the code for
      something else. This has been in my tree for sometime , bootstrapped
      and regression tested on armhf for armv7ve+simd as the architectural
      base.
      
      Applied to trunk
      
      <DATE>  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
      
      	* config/arm/neon.md (fma<VCVTF:mode>4): Remove %?.
      	(fma<VH:mode>4_intrinsic): Likewise.
      	(*fmsub<VCVTF:mode>4): Likewise.
      	(*fmsub<VH:mode>4_intrinsic): Likewise.
      
      regards
      Ramana
      
      From-SVN: r249999
      Ramana Radhakrishnan committed
    • Move ChangeLog entry to testsuite. · e483b7b4
      From-SVN: r249997
      Georg-Johann Lay committed
    • re PR target/81305 ([avr] avrtiny uses LDS for SREG in ISR routines which is out of range of LDS.) · 64723ef4
      gcc/
      	PR target/81305
      	* testsuite/gcc.target/avr/isr-test.h: New file.
      
      From-SVN: r249996
      Georg-Johann Lay committed
    • re PR target/81305 ([avr] avrtiny uses LDS for SREG in ISR routines which is out of range of LDS.) · 5c4feb2d
      gcc/
      	PR target/81305
      	* config/avr/avr.c (avr_out_movhi_mr_r_xmega) [CONSTANT_ADDRESS_P]:
      	Don't depend on "optimize > 0".
      	(out_movhi_r_mr, out_movqi_mr_r): Same.
      	(out_movhi_mr_r, out_movqi_r_mr): Same.
      	(avr_address_cost) [CONSTANT_ADDRESS_P]: Don't depend cost for
      	io_address_operand on "optimize > 0".
      	* testsuite/gcc.target/avr/torture/isr-01-simple.c: New test.
      	* testsuite/gcc.target/avr/torture/isr-02-call.c: New test.
      	* testsuite/gcc.target/avr/torture/isr-03-fixed.c: New test.
      
      From-SVN: r249995
      Georg-Johann Lay committed
    • tree-loop-distribution.c: Add general explanantion on the pass. · a8745cc2
      	* tree-loop-distribution.c: Add general explanantion on the pass.
      	(generate_loops_for_partition): Mark distributed loop.
      	(pg_add_dependence_edges): New parameter.  Handle alias data
      	dependence specially and record it in the parameter if asked.
      	(struct pg_vdata, pg_edata, pg_edge_callback_data): New structs.
      	(init_partition_graph_vertices, add_partition_graph_edge): New.
      	(pg_skip_alias_edge, free_partition_graph_edata_cb): New.
      	(free_partition_graph_vdata, build_partition_graph): New.
      	(sort_partitions_by_post_order, merge_dep_scc_partitions): New.
      	(pg_collect_alias_ddrs, break_alias_scc_partitions): New.
      	(data_ref_segment_size, latch_dominated_by_data_ref): New.
      	(compute_alias_check_pairs, version_loop_by_alias_check): New.
      	(version_for_distribution_p, finalize_partitions): New.
      	(distribute_loop): Handle alias data dependence specially.  Factor
      	out loop fusion code as functions and call these functions.
      
      	gcc/testsuite
      	* gcc.dg/tree-ssa/ldist-4.c: Adjust test string.
      	* gcc.dg/tree-ssa/ldist-12.c: Ditto.
      	* gcc.dg/tree-ssa/ldist-13.c: Ditto.
      	* gcc.dg/tree-ssa/ldist-14.c: Ditto.
      
      From-SVN: r249994
      Bin Cheng committed
    • tree-loop-distribution.c (classify_partition): New parameter and better handle reduction statement. · 4a52eb19
      	* tree-loop-distribution.c (classify_partition): New parameter and
      	better handle reduction statement.
      	(rdg_build_partitions): Revise comment.
      	(distribute_loop): Compute statements in all partitions and pass it
      	to classify_partition.
      
      	gcc/testsuite
      	* gcc.dg/tree-ssa/ldist-26.c: New test.
      
      From-SVN: r249993
      Bin Cheng committed
    • tree-loop-distribution.c (enum partition_type): New. · f1eb4621
      	* tree-loop-distribution.c (enum partition_type): New.
      	(struct partition): New field type.
      	(partition_merge_into): Add parameter.  Update partition type.
      	(data_dep_in_cycle_p, update_type_for_merge): New functions.
      	(build_rdg_partition_for_vertex): Compute partition type.
      	(rdg_build_partitions): Dump partition type.
      	(distribute_loop): Update calls to partition_merge_into.
      
      From-SVN: r249992
      Bin Cheng committed
    • tree-loop-distribution.c (struct ddr_hasher): New. · 17c5cbdf
      	* tree-loop-distribution.c (struct ddr_hasher): New.
      	(ddr_hasher::hash, ::equal, get_data_dependence): New function.
      	(ddrs_table): New.
      	(classify_partition): Call get_data_dependence.
      	(pg_add_dependence_edges): Ditto.
      	(distribute_loop): Release data dependence hash table.
      
      From-SVN: r249991
      Bin Cheng committed
    • tree-loop-distribution.c (ref_base_address): Delete. · 95f7d11b
      	* tree-loop-distribution.c (ref_base_address): Delete.
      	(similar_memory_accesses): Rename ...
      	(share_memory_accesses): ... to this.  Check if partitions access
      	the same memory reference.
      	(distribute_loop): Call share_memory_accesses.
      
      	gcc/testsuite
      	* gcc.dg/tree-ssa/ldist-6.c: XFAIL.
      
      From-SVN: r249990
      Bin Cheng committed
    • tree-loop-distribution.c (struct partition): New field recording its data reference. · a7a44c07
      	* tree-loop-distribution.c (struct partition): New field recording
      	its data reference.
      	(partition_alloc, partition_free): Init and release data refs.
      	(partition_merge_into): Merge data refs.
      	(build_rdg_partition_for_vertex): Collect data refs for partition.
      	(pg_add_dependence_edges): Change parameters from vector to bitmap.
      	Update uses.
      	(distribute_loop): Remve data refs from vertice data of partition
      	graph.
      
      From-SVN: r249989
      Bin Cheng committed
    • tree-loop-distribution.c (params.h): Include header file. · 9fafb14a
      	* tree-loop-distribution.c (params.h): Include header file.
      	(MAX_DATAREFS_NUM, DR_INDEX): New macro.
      	(datarefs_vec): New global var.
      	(create_rdg_vertices): Use datarefs_vec directly.
      	(free_rdg): Don't free data references.
      	(build_rdg): Update use.  Don't free data references.
      	(distribute_loop): Compute global variable for data references.
      	Bail out if there are too many data references.
      
      From-SVN: r249988
      Bin Cheng committed
    • tree-loop-distribution.c (loop_nest): New global var. · 4084ea5f
      	* tree-loop-distribution.c (loop_nest): New global var.
      	(build_rdg): Use loop directly, rather than loop nest.
      	(pg_add_dependence_edges): Remove loop nest parameter.  Use global
      	variable directly.
      	(distribute_loop): Compute global variable loop nest.  Update use.
      
      From-SVN: r249987
      Bin Cheng committed
    • tree-loop-distribution.c (enum fuse_type, [...]): New. · 821dbeef
      	* tree-loop-distribution.c (enum fuse_type, fuse_message): New.
      	(partition_merge_into): New parameter.  Dump reason for fusion.
      	(distribute_loop): Update use of partition_merge_into.
      
      From-SVN: r249986
      Bin Cheng committed
    • tree-loop-distribution.c (bb_top_order_index): New. · 3be57c56
      	* tree-loop-distribution.c (bb_top_order_index): New.
      	(bb_top_order_index_size, bb_top_order_cmp): New.
      	(stmts_from_loop): Use topological order.
      	(pass_loop_distribution::execute): Compute and release topological
      	order for basic blocks.
      
      From-SVN: r249985
      Bin Cheng committed
    • tree-loop-distribution.c (pass_loop_distribution::execute): Skip if no loops. · 773d9217
      	* tree-loop-distribution.c (pass_loop_distribution::execute): Skip
      	if no loops.
      
      From-SVN: r249984
      Bin Cheng committed
    • cfgloop.h (struct loop): Add comment. · 542e7230
      	* cfgloop.h (struct loop): Add comment.  New field orig_loop_num.
      	* cfgloopmanip.c (lv_adjust_loop_entry_edge): Comment change.
      	* internal-fn.c (expand_LOOP_DIST_ALIAS): New function.
      	* internal-fn.def (LOOP_DIST_ALIAS): New.
      	* tree-vectorizer.c (fold_loop_vectorized_call): Rename to ...
      	(fold_loop_internal_call): ... this.
      	(vect_loop_dist_alias_call): New function.
      	(set_uid_loop_bbs): Call fold_loop_internal_call.
      	(vectorize_loops): Fold IFN_LOOP_VECTORIZED and IFN_LOOP_DIST_ALIAS
      	internal calls.
      
      From-SVN: r249983
      Bin Cheng committed
    • Daily bump. · 3d07163d
      From-SVN: r249982
      GCC Administrator committed
  3. 04 Jul, 2017 4 commits
    • re PR target/81300 (-fpeephole2 breaks __builtin_ia32_sbb_u64, _subborrow_u64 on AMD64) · 45bb7d59
      2017-07-04  Uros Bizjak  <ubizjak@gmail.com>
      
      	PR target/81300
      	* config/i386/i386.md (setcc + movzbl/and to xor + setcc peepholes):
      	Require dead FLAGS_REG at the beginning of a peephole.
      
      testsuite/ChangeLog:
      
      	PR target/81300
      	* gcc.target/i386/pr81300.c: New test.
      
      From-SVN: r249977
      Uros Bizjak committed
    • re PR target/81294 (_subborrow_u64 argument order inconsistent with intrinsic reference, icc) · 1fcfac88
      	PR target/81294
      	* config/i386/adxintrin.h (_subborrow_u32): Swap _X and _Y
      	arguments in the call to __builtin_ia32_sbb_u32.
      	(_subborrow_u64): Swap _X and _Y arguments in the call to
      	__builtin_ia32_sbb_u64.
      
      testsuite/ChangeLog:
      
      	PR target/81294
      	* gcc.target/i386/adx-addcarryx32-2.c (adx_test): Swap
      	x and y arguments in the call to _subborrow_u32.
      	* gcc.target/i386/adx-addcarryx64-2.c (adx_test): Swap
      	x and y arguments in the call to _subborrow_u64.
      	* gcc.target/i386/pr81294-1.c: New test.
      	* gcc.target/i386/pr81294-2.c: Ditto.
      
      From-SVN: r249976
      Uros Bizjak committed
    • re PR debug/81278 (-fcompare-debug failure (length)) · 06a1b233
      	PR debug/81278
      	* tree-vrp.c (compare_assert_loc): Turn into a function template
      	with stable template parameter.  Only test if a->e is NULL,
      	!a->e == !b->e has been verified already.  Use e == NULL or
      	e != NULL instead of e or ! e tests.  If stable is true, don't use
      	iterative_hash_expr, on the other side allow a or b or both NULL
      	and sort the NULLs last.
      	(process_assert_insertions): Sort using compare_assert_loc<false>
      	instead of compare_assert_loc, later sort using
      	compare_assert_loc<true> before calling process_assert_insertions_for
      	in a loop.  Use break instead of continue once seen NULL pointer.
      
      From-SVN: r249975
      Jakub Jelinek committed
    • [ARM] Add MIDR info for ARM Cortex-R7 and Cortex-R8 · 242ae26a
      2017-07-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
      
          gcc/
          * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
          Cortex-R7 and Cortex-R8 processors.
      
      From-SVN: r249974
      Thomas Preud'homme committed