Commit Graph

154808 Commits

Author SHA1 Message Date
Jonathan Wakely 32aaf6ef10 Fix memory leaks in libstdc++ tests
* 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
2017-07-06 13:42:51 +01:00
Jonathan Wakely 4f7c2c7ff2 Fix memory leaks in libstdc++ ABI tests
* 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
2017-07-06 13:42:46 +01:00
Jonathan Wakely 318c48e304 Prevent __uses_alloc from holding dangling references
* 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
2017-07-06 12:54:10 +01:00
Sebastian Peryt 68d872d728 Add missing intrinsics for VGETMANT[SD,SS] and VGETEXP[SD,SS]
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
2017-07-06 11:52:05 +00:00
Julia Koval 81bfefba7f Remove old rounding code
gcc/
	* gcc/config/i386/i386.c (ix86_erase_embedded_rounding):
	Remove code for old rounding pattern.

From-SVN: r250017
2017-07-06 11:03:35 +00:00
Richard Earnshaw af5b71c248 [arm] Fix warning in parsecpu.awk
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
2017-07-06 10:00:44 +00:00
Richard Earnshaw ad0f66e07b [arm] Fix cross-native builds
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
2017-07-06 09:49:19 +00:00
Christophe Lyon 9e00a39737 [testsuite] Add dg-require-stack-check
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
2017-07-06 10:12:33 +02:00
GCC Administrator b32d067bbc Daily bump.
From-SVN: r250012
2017-07-06 00:16:26 +00:00
Kelvin Nilsen 38e6cc4da1 re PR target/80103 (ICE in output_1144, at config/rs6000/vsx.md:2298)
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
2017-07-05 20:51:37 +00:00
Sebastian Peryt f8aa2b2c43 Scalar mask and round RTL templates
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
2017-07-05 16:44:18 +00:00
Richard Earnshaw 75e2d19bc7 [ARM] Implement TARGET_FIXED_CONDITION_CODE_REGS
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
2017-07-05 15:32:47 +00:00
Richard Sandiford d8448c583e Use SET_DECL_MODE in libcc1
2017-07-05  Richard Sandiford  <richard.sandiford@linaro.org>

libcc1/
	* libcp1plugin.cc (plugin_build_field): Use SET_DECL_MODE.

From-SVN: r250004
2017-07-05 15:32:37 +00:00
Richard Sandiford b8506a8ac0 Remove enum before machine_mode
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
2017-07-05 15:29:27 +00:00
Georg-Johann Lay 98f9d0ca90 Graceful degrade if Binutils PR21472 is not available.
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
2017-07-05 13:57:28 +00:00
Ramana Radhakrishnan e60226ffa0 [Patch ARM] Remove %? string from some Advanced SIMD patterns.
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
2017-07-05 12:58:46 +00:00
Georg-Johann Lay e483b7b46f Move ChangeLog entry to testsuite.
From-SVN: r249997
2017-07-05 12:38:51 +00:00
Georg-Johann Lay 64723ef40f re PR target/81305 ([avr] avrtiny uses LDS for SREG in ISR routines which is out of range of LDS.)
gcc/
	PR target/81305
	* testsuite/gcc.target/avr/isr-test.h: New file.

From-SVN: r249996
2017-07-05 12:34:36 +00:00
Georg-Johann Lay 5c4feb2d1a re PR target/81305 ([avr] avrtiny uses LDS for SREG in ISR routines which is out of range of LDS.)
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
2017-07-05 12:28:19 +00:00
Bin Cheng a8745cc231 tree-loop-distribution.c: Add general explanantion on the pass.
* 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
2017-07-05 12:08:28 +00:00
Bin Cheng 4a52eb194c tree-loop-distribution.c (classify_partition): New parameter and better handle reduction statement.
* 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
2017-07-05 12:05:44 +00:00
Bin Cheng f1eb462193 tree-loop-distribution.c (enum partition_type): New.
* 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
2017-07-05 12:02:21 +00:00
Bin Cheng 17c5cbdf0f tree-loop-distribution.c (struct ddr_hasher): New.
* 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
2017-07-05 12:01:03 +00:00
Bin Cheng 95f7d11b0a tree-loop-distribution.c (ref_base_address): Delete.
* 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
2017-07-05 11:59:40 +00:00
Bin Cheng a7a44c0736 tree-loop-distribution.c (struct partition): New field recording its data reference.
* 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
2017-07-05 11:57:44 +00:00
Bin Cheng 9fafb14af6 tree-loop-distribution.c (params.h): Include header file.
* 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
2017-07-05 11:56:04 +00:00
Bin Cheng 4084ea5fc5 tree-loop-distribution.c (loop_nest): New global var.
* 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
2017-07-05 11:54:34 +00:00
Bin Cheng 821dbeef4b tree-loop-distribution.c (enum fuse_type, [...]): New.
* 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
2017-07-05 11:52:24 +00:00
Bin Cheng 3be57c5600 tree-loop-distribution.c (bb_top_order_index): New.
* 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
2017-07-05 11:51:22 +00:00
Bin Cheng 773d92175e tree-loop-distribution.c (pass_loop_distribution::execute): Skip if no loops.
* tree-loop-distribution.c (pass_loop_distribution::execute): Skip
	if no loops.

From-SVN: r249984
2017-07-05 11:50:09 +00:00
Bin Cheng 542e7230c0 cfgloop.h (struct loop): Add comment.
* 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
2017-07-05 11:49:02 +00:00
GCC Administrator 3d07163dd2 Daily bump.
From-SVN: r249982
2017-07-05 00:16:30 +00:00
Uros Bizjak 45bb7d5907 re PR target/81300 (-fpeephole2 breaks __builtin_ia32_sbb_u64, _subborrow_u64 on AMD64)
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
2017-07-04 22:52:32 +02:00
Uros Bizjak 1fcfac88de re PR target/81294 (_subborrow_u64 argument order inconsistent with intrinsic reference, icc)
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
2017-07-04 22:46:38 +02:00
Jakub Jelinek 06a1b23340 re PR debug/81278 (-fcompare-debug failure (length))
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
2017-07-04 20:51:02 +02:00
Thomas Preud'homme 242ae26aef [ARM] Add MIDR info for ARM Cortex-R7 and Cortex-R8
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
2017-07-04 17:44:38 +00:00
Jan Hubicka fd78e43e0d ipa-utils.c (ipa_merge_profiles): Fix merging when dst is uninitialized while src is not.
* ipa-utils.c (ipa_merge_profiles): Fix merging when dst is
	uninitialized while src is not.

From-SVN: r249973
2017-07-04 17:05:26 +00:00
Kyrylo Tkachov a4187dab52 [AArch64] Fix strict aliasing issue in gcc.target/aarch64/simd/vminmaxnm_1.c
While doing some unrelated work the gcc.target/aarch64/simd/vminmaxnm_1.c testcase started failing for me.
Upon investigation it turns out that it breaks the C strict aliasing rules in the CHECK macro by casting
a pointer to an incompatible type and dereferencing it. GCC even warns about it if compiled with -Wstrict-aliasing.

This patch fixes the testcase by making it use memcmp to compare the vector elements.
This avoids the undefined behaviour.

The testcase still passes on trunk.

    * gcc.target/aarch64/simd/vminmaxnm_1.c: Fix strict aliasing issues.

From-SVN: r249972
2017-07-04 15:19:30 +00:00
Richard Earnshaw 5006165236 [arm] Move some generated files out of the source tree
When I originally started work on the new options framework for ARM
I'd worked on the assumption that AWK might not be available on every
build machine (only on developer's machines).  However, looking again
I notice that all the options framework relies on it being present for
every build.  This means that some of the generated files that come
from running parsecpu.awk do not need to be kept under revision
control.

Unfortunately, it's not _all_ generated files.  The build
infrastructure assumes that all .md fragments are in the source tree
and similarly that all .opt fragments are there as well.

Still, eliminating the very big .h files is a step forward as they are
very regular in structure and diff/patch/merge tools can sometimes
make mistakes when resolving conflicts.

So this patch removes the generated .h files from the source tree and
tweaks the make rules accordingly.  I've also changed the build rules
to use the stamp technique to eliminate some false dependencies in a
rebuild.

Top-level:

* contrib/gcc_update (files_and_dependencies): Remove stamp rules for
arm-specific auto-generated header files.

gcc:
* common/config/arm/arm-common.c: Adjust include path for
arm-cpu-cdata.h
* t-arm (TM_H): Adjust path for arm-cpu.h.
(arm-cpu.h): Create in build directory.  Adjust dependency rules.
(arm-cpu-data.h): Likewise.
(arm-cpu-cdata.h): Likewise.
* config/arm/arm-cpu.h: Delete.
* config/arm/arm-cpu-cdata.h: Delete.
* config/arm/arm-cpu-data.h: Delete.

From-SVN: r249971
2017-07-04 14:49:38 +00:00
James Greenhalgh 1d79dcb813 [Patch ARM] Add initial tuning for Cortex-A55 and Cortex-A75
Much like my AArch64 patch a few weeks ago, this patch adds support
for the ARM Cortex-A75 and Cortex-A55 processors through the
-mcpu/-mtune values cortex-a55 and cortex-a75, and an
ARM DynamIQ big.LITTLE configuration of these two processors through
the -mcpu/-mtune value cortex-a75.cortex-a55

Both Cortex-A55 and Cortex-A75 support ARMv8-A with the ARM8.1-A and
ARMv8.2-A extensions. This is reflected in the patch, -mcpu=cortex-a75 is
treated as equivalent to passing -mtune=cortex-a75 -march=armv8.2-a+fp16

gcc/

2017-07-04  James Greenhalgh  <james.greenhalgh@arm.com>

	* config/arm/arm-cpus.in (cortex-a55): New.
	(cortex-a75): Likewise.
	(cortex-a75.cortex-a55): Likewise.
	* config/arm/driver-arm.c (arm_cpu_table): Add cortex-a55 and
	cortex-a75.
	* doc/invoke.texi (-mcpu): Document cortex-a55 and cortex-a75.

	* config/arm/arm-cpu-cdata.h: Regenerate.
	* config/arm/arm-cpu-data.h: Regenerate.
	* config/arm/arm-cpu.h: Regenerate.
	* config/arm/arm-tables.opt: Regenerate.
	* config/arm/arm-tune.md: Regenerate.

From-SVN: r249970
2017-07-04 14:05:31 +00:00
Jan Hubicka cea768b0ca * haifa-sched.c (sched_create_recovery_edges): Update profile.
From-SVN: r249967
2017-07-04 13:42:22 +00:00
Jan Hubicka 4741e46d77 bb-reorder.c (better_edge_p): Fix handling of uninitialized probability.
* bb-reorder.c (better_edge_p): Fix handling of uninitialized
	probability.

From-SVN: r249966
2017-07-04 13:41:21 +00:00
Thomas Preud'homme e5d811676f Fix ChangeLog format in r247584
This patch fixes relative pathnames in gcc/ChangeLog for r247584.

From-SVN: r249964
2017-07-04 13:19:23 +00:00
Marek Polacek efbf55b01c re PR c/81231 (ICE with invalid argument to __atomic_*)
PR c/81231
	* c-common.c (sync_resolve_size): Give error for pointers to incomplete
	types.

	* gcc.dg/atomic-pr81231.c: New test.

From-SVN: r249963
2017-07-04 12:17:22 +00:00
Jakub Jelinek f0622a50ee brig-function.cc: Include profile-count.h.
* brigfrontend/brig-function.cc: Include profile-count.h.
	* brigfrontend/brig-to-generic.cc: Likewise.

From-SVN: r249962
2017-07-04 13:53:50 +02:00
Richard Sandiford 1aad71067c PR 81292: ICE on related strlens after r249880
r249880 installed the result of a strlen in a strinfo if the strinfo
wasn't previously a full string.  But as Jakub says in the PR comments,
we can't just do that in isolation, because there are no vdefs on the
call that would invalidate any related strinfos.

This patch updates the related strinfos if the adjustment is simple and
invalidates them otherwise.  As elsewhere, we treat adjustments of the
form strlen +/- INTEGER_CST as simple but anything else as too complex.

2017-07-04  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	PR tree-optimization/81292
	* tree-ssa-strlen.c (handle_builtin_strlen): When setting
	full_string_p, also call adjust_related_strinfos if the adjustment
	is simple, otherwise invalidate related strinfos.

gcc/testsuite/
	PR tree-optimization/81292
	* gcc.dg/pr81292-1.c: New test.
	* gcc.dg/pr81292-2.c: Likewise.

From-SVN: r249961
2017-07-04 11:48:44 +00:00
Martin Liska 7c819e8ae2 Enable addressable params sanitization with --param asan-stack=1.
2017-07-04  Martin Liska  <mliska@suse.cz>

	PR sanitizer/81040
	* sanopt.c (sanitize_rewrite_addressable_params): Mark the
	newly created variable as DECL_IGNORED_P.
2017-07-04  Martin Liska  <mliska@suse.cz>

	PR sanitizer/81040
	* g++.dg/asan/function-argument-1.C: Run the test-case w/o
	use-after-scope sanitization.

From-SVN: r249960
2017-07-04 10:53:18 +00:00
Martin Liska 6abe28643f Use xstrdup_for_dump in ipa-inline.c (PR ipa/81293).
2017-07-04  Martin Liska  <mliska@suse.cz>

	PR ipa/81293
	* ipa-inline.c (inline_small_functions):
	Use xstrdup_for_dump.

From-SVN: r249959
2017-07-04 10:51:25 +00:00
Tom de Vries 1315099e26 Save and restore EDGE_DFS_BACK in draw_cfg_edges
2017-07-04  Tom de Vries  <tom@codesourcery.com>

	* graph.c (draw_cfg_edges): Save and restore EDGE_DFS_BACK.

From-SVN: r249954
2017-07-04 09:44:00 +00:00
Olivier Hainque b85a969e83 Add missing libgcc/ChangeLog entry.
From-SVN: r249953
2017-07-04 08:50:03 +00:00