Commit Graph

147101 Commits

Author SHA1 Message Date
Peter Bergner 77d93c476d re PR target/71656 (ICE in reload when generating code for -mcpu=power9 -mpower9-dform-vector)
PR target/71656
	* gcc.target/powerpc/pr71656-2.c: Fix syntax errors.

From-SVN: r237823
2016-06-28 10:49:10 -05:00
Wilco Dijkstra f6922a5660 This patch fixes a bug in the bswap pass.
This patch fixes a bug in the bswap pass.  In big-endian BIT_FIELD_REF uses
big-endian bit numbering so we need to adjust the bit position.
The existing version could potentially generate incorrect code however GCC
doesn't emit a BIT_FIELD_REF to access the low byte in a register, so the
symbolic number never matches in big-endian.

    gcc/
	* tree-ssa-math-opts.c (find_bswap_or_nop_1): Adjust bitnumbering
	for big-endian BIT_FIELD_REF.

From-SVN: r237822
2016-06-28 13:57:47 +00:00
Pat Haugen eda328bf1d rs6000.md ('type' attribute): Add htmsimple/dfp types.
* config/rs6000/rs6000.md ('type' attribute): Add htmsimple/dfp types.
	('size' attribute): Add '128'.
	Include power9.md.
	(*mov<mode>_hardfloat32, *mov<mode>_hardfloat64, *movdi_internal32,
	*movdi_internal64, *movdf_update1): Set size attribute to '64'.
	(add<mode>3, sub<mode>3, mul<mode>3, div<mode>3, sqrt<mode>2,
	copysign<mode>3, neg<mode>2_hw, abs<mode>2_hw, *nabs<mode>2_hw,
	*fma<mode>4_hw, *fms<mode>4_hw, *nfma<mode>4_hw, *nfms<mode>4_hw,
	extend<SFDF:mode><IEEE128:mode>2_hw, trunc<mode>df2_hw,
	*xscvqp<su>wz_<mode>, *xscvqp<su>dz_<mode>, *xscv<su>dqp_<mode>,
	*trunc<mode>df2_odd): Set size attribute to '128'.
	(*cmp<mode>_hw): Change type to veccmp and set size attribute to '128'.
	* config/rs6000/power6.md (power6-fp): Include dfp type.
	* config/rs6000/power7.md (power7-fp): Likewise.
	* config/rs6000/power8.md (power8-fp): Likewise.
	* config/rs6000/power9.md: New file.
	* config/rs6000/t-rs6000 (MD_INCLUDES): Add power9.md.
	* config/rs6000/htm.md (*tabort, *tabort<wd>c, *tabort<wd>ci,
	*trechkpt, *treclaim, *tsr, *ttest): Change type attribute to
	htmsimple.
	* config/rs6000/dfp.md (extendsddd2, truncddsd2, extendddtd2,
	trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
	divtd3, *cmpdd_internal1, *cmptd_internal1, floatdidd2, floatditd2,
	ftruncdd2, fixdddi2, ftrunctd2, fixtddi2, dfp_ddedpd_<mode>,
	dfp_denbcd_<mode>, dfp_dxex_<mode>, dfp_diex_<mode>, dfp_dscli_<mode>,
	dfp_dscri_<mode>): Change type attribute to dfp.
	* config/rs6000/crypto.md (crypto_vshasigma<CR_char>): Change type
	attribute to vecsimple.
	* config/rs6000/rs6000.c (power9_cost): Update costs, cache size
	and prefetch streams.
	(rs6000_option_override_internal): Remove temporary code setting
	tuning to power8.  Don't set rs6000_sched_groups for power9.
	(last_scheduled_insn): Change to rtx_insn *.
	(divide_cnt, vec_load_pendulum): New variables.
	(rs6000_adjust_cost): Add Power9 to test for store->load separation.
	(rs6000_issue_rate): Set issue rate for Power9.
	(is_power9_pairable_vec_type): New.
	(power9_sched_reorder2): New.
	(rs6000_sched_reorder2): Call new function for Power9 specific
	reordering.
	(insn_must_be_first_in_group): Remove Power9.
	(insn_must_be_last_in_group): Likewise.
	(force_new_group): Likewise.
	(rs6000_sched_init): Fix initialization of last_scheduled_insn.
	Initialize divide_cnt/vec_load_pendulum.
	(_rs6000_sched_context, rs6000_init_sched_context,
	rs6000_set_sched_context): Handle context save/restore of new
	variables.

From-SVN: r237820
2016-06-28 13:33:03 +00:00
Richard Biener 7d4cdbd485 tree-ssa-alias.c (nonoverlapping_component_refs_of_decl_p): Properly handle DECL_BIT_FIELD_REPRESENTATIVE occuring as COMPONENT_REF operand.
2016-06-28  Richard Biener  <rguenther@suse.de>

	* tree-ssa-alias.c (nonoverlapping_component_refs_of_decl_p):
	Properly handle DECL_BIT_FIELD_REPRESENTATIVE occuring as
	COMPONENT_REF operand.
	(nonoverlapping_component_refs_p): Likewise.
	* stor-layout.c (start_bitfield_representative): Mark
	DECL_BIT_FIELD_REPRESENTATIVE as DECL_NONADDRESSABLE_P.

From-SVN: r237818
2016-06-28 11:55:19 +00:00
Jakub Jelinek e9ac1f86bf Makefile.in: Don't cat ../stage_current if it does not exist.
* Makefile.in: Don't cat ../stage_current if it does not exist.
c/
	* Make-lang.in: Don't cat ../stage_current if it does not exist.
cp/
	* Make-lang.in: Don't cat ../stage_current if it does not exist.
lto/
	* Make-lang.in: Don't cat ../stage_current if it does not exist.

From-SVN: r237817
2016-06-28 10:38:38 +02:00
Jakub Jelinek 35ca24a2d1 extend.texi (__builtin_add_overflow_p): Clarify behavior when last argument is a bit-field.
* doc/extend.texi (__builtin_add_overflow_p): Clarify behavior when
	last argument is a bit-field.

From-SVN: r237816
2016-06-28 10:30:01 +02:00
Jakub Jelinek 95ef39f441 re PR rtl-optimization/71673 (FAIL: c-c++-common/torture/builtin-arith-overflow-p-19.c -O2 (internal compiler error))
PR rtl-optimization/71673
	* internal-fn.c (expand_arith_overflow_result_store): Use
	OPTAB_LIB_WIDEN instead of OPTAB_DIRECT as last argument to
	expand_simple_binop.

From-SVN: r237815
2016-06-28 10:29:11 +02:00
Jakub Jelinek 849a76a5a2 re PR middle-end/66867 (Suboptimal code generation for atomic_compare_exchange)
PR middle-end/66867
	* builtins.c (expand_ifn_atomic_compare_exchange_into_call,
	expand_ifn_atomic_compare_exchange): New functions.
	* internal-fn.c (expand_ATOMIC_COMPARE_EXCHANGE): New function.
	* tree.h (build_call_expr_internal_loc): Rename to ...
	(build_call_expr_internal_loc_array): ... this.  Fix up type of
	last argument.
	* internal-fn.def (ATOMIC_COMPARE_EXCHANGE): New internal fn.
	* predict.c (expr_expected_value_1): Handle IMAGPART_EXPR of
	ATOMIC_COMPARE_EXCHANGE result.
	* builtins.h (expand_ifn_atomic_compare_exchange): New prototype.
	* gimple-fold.h (optimize_atomic_compare_exchange_p,
	fold_builtin_atomic_compare_exchange): New prototypes.
	* gimple-fold.c (optimize_atomic_compare_exchange_p,
	fold_builtin_atomic_compare_exchange): New functions..
	* tree-ssa.c (execute_update_addresses_taken): If
	optimize_atomic_compare_exchange_p, ignore &var in 2nd argument
	of call when finding addressable vars, and if such var becomes
	non-addressable, call fold_builtin_atomic_compare_exchange.

From-SVN: r237814
2016-06-28 10:27:18 +02:00
Segher Boessenkool a826405801 rs6000: Fix split of ashdi3_extswsli_dot for memory (PR71670)
The splitter for ashdi3_extswsli_dot for cr0 with memory uses emit_insn
gen_ashdi3_extswsli_dot, which does not work because that emits a scratch,
while the splitter runs after reload so there should be a real register
instead.  We can laboriously fix that up, or emit using
gen_ashdi3_extswsli_dot2 instead.  This patch does the latter.


	PR target/71670
	* config/rs6000/rs6000.md (ashdi3_extswsli_dot): Use
	gen_ashdi3_extswsli_dot2 instead of gen_ashdi3_extswsli_dot.

gcc/testsuite/
	PR target/71670
	* gcc.target/powerpc/pr71670.c: New testcase.

From-SVN: r237813
2016-06-28 07:56:41 +02:00
Pat Haugen 7c788ce223 rs6000.md ('type' attribute): Add veclogical,veccmpfx,vecexts,vecmove insn types.
* config/rs6000/rs6000.md ('type' attribute): Add
	veclogical,veccmpfx,vecexts,vecmove insn types.
	(*abs<mode>2_fpr, *nabs<mode>2_fpr, *neg<mode>2_fpr, *extendsfdf2_fpr,
	copysign<mode>3_fcpsgn, trunc<mode>df2_internal1, neg<mode>2_internal,
	p8_fmrgow_<mode>, pack<mode>): Change type to fpsimple.
	(*xxsel<mode>, copysign<mode>3_hard, neg<mode>2_hw, abs<mode>2_hw,
	*nabs<mode>2_hw): Change type to vecmove.
	(*and<mode>3_internal, *bool<mode>3_internal, *boolc<mode>3_internal,
	*boolcc<mode>3_internal, *eqv<mode>3_internal,
	*one_cmpl<mode>3_internal, *ieee_128bit_vsx_neg<mode>2_internal,
	*ieee_128bit_vsx_abs<mode>2_internal,
	*ieee_128bit_vsx_nabs<mode>2_internal, extendkftf2, trunctfkf2,
	*ieee128_mfvsrd_64bit, *ieee128_mfvsrd_32bit, *ieee128_mtvsrd_64bit,
	*ieee128_mtvsrd_32bit): Change type to veclogical.
	(mov<mode>_hardfloat, *mov<mode>_hardfloat32, *mov<mode>_hardfloat64,
	*movdi_internal32, *movdi_internal64): Update insn types.
	* config/rs6000/vsx.md (*vsx_le_undo_permute_<mode>,
	vsx_extract_<mode>): Change type to veclogical.
	(*vsx_xxsel<mode>, *vsx_xxsel<mode>_uns): Change type to vecmove.
	(vsx_sign_extend_qi_<mode>, *vsx_sign_extend_hi_<mode>,
	*vsx_sign_extend_si_v2di): Change type to vecexts.
	* config/rs6000/altivec.md (*altivec_mov<mode>, *altivec_movti): Change
	type to veclogical.
	(*altivec_eq<mode>, *altivec_gt<mode>, *altivec_gtu<mode>,
	*altivec_vcmpequ<VI_char>_p, *altivec_vcmpgts<VI_char>_p,
	*altivec_vcmpgtu<VI_char>_p): Change type to veccmpfx.
	(*altivec_vsel<mode>, *altivec_vsel<mode>_uns): Change type to vecmove.
	* config/rs6000/dfp.md (*negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
	negtd2, *abstd2_fpr, *nabstd2_fpr): Change type to fpsimple.
	* config/rs6000/40x.md (ppc405-float): Add fpsimple.
	* config/rs6000/440.md (ppc440-fp): Add fpsimple.
	* config/rs6000/476.md (ppc476-fp): Add fpsimple.
	* config/rs6000/601.md (ppc601-fp): Add fpsimple.
	* config/rs6000/603.md (ppc603-fp): Add fpsimple.
	* config/rs6000/6xx.md (ppc604-fp): Add fpsimple.
	* config/rs6000/7xx.md (ppc750-fp): Add fpsimple.
	(ppc7400-vecsimple): Add veclogical, vecmove, veccmpfx.
	* config/rs6000/7450.md (ppc7450-fp): Add fpsimple.
	(ppc7450-vecsimple): Add veclogical, vecmove.
	(ppc7450-veccmp): Add veccmpfx.
	* config/rs6000/8540.md (ppc8540_simple_vector): Add veclogical,
	vecmove.
	(ppc8540_vector_compare): Add veccmpfx.
	* config/rs6000/a2.md (ppca2-fp): Add fpsimple.
	* config/rs6000/cell.md (cell-fp): Add fpsimple.
	(cell-vecsimple): Add veclogical, vecmove.
	(cell-veccmp): Add veccmpfx.
	* config/rs6000/e300c2c3.md (ppce300c3_fp): Add fpsimple.
	* config/rs6000/e6500.md (e6500_vecsimple): Add veclogical, vecmove,
	veccmpfx.
	* config/rs6000/mpc.md (mpccore-fp): Add fpsimple.
	 * config/rs6000/power4.md (power4-fp): Add fpsimple.
	(power4-vecsimple): Add veclogical, vecmove.
	(power4-veccmp): Add veccmpfx.
	* config/rs6000/power5.md (power5-fp): Add fpsimple.
	* config/rs6000/power6.md (power6-fp): Add fpsimple.
	(power6-vecsimple): Add veclogical, vecmove.
	(power6-veccmp): Add veccmpfx.
	* config/rs6000/power7.md (power7-fp): Add fpsimple.
	(power7-vecsimple): Add veclogical, vecmove, veccmpfx.
	* config/rs6000/power8.md (power8-fp): Add fpsimple.
	(power8-vecsimple): Add veclogical, vecmove, veccmpfx.
	* config/rs6000/rs64.md (rs64a-fp): Add fpsimple.
	* config/rs6000/titan.md (titan_fp): Add fpsimple.
	* config/rs6000/xfpu.md (fp-default, fp-addsub-s, fp-addsub-d): Add
	fpsimple.
	* config/rs6000/rs6000.c (rs6000_adjust_cost): Add TYPE_FPSIMPLE.

From-SVN: r237812
2016-06-28 03:14:54 +00:00
Peter Bergner 0dc47331b8 re PR target/71656 (ICE in reload when generating code for -mcpu=power9 -mpower9-dform-vector)
gcc/
	PR target/71656
	* config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Add
	OPTION_MASK_P9_DFORM_VECTOR.
	* config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
	disable -mpower9-dform-vector when using reload.
	(quad_address_p): Remove 'gpr_p' argument and all associated code.
	New 'strict' argument.  Update all callers.  Add strict addressing
	support.
	(rs6000_legitimate_offset_address_p): Remove call to
	virtual_stack_registers_memory_p.
	(rs6000_legitimize_reload_address): Add quad address support.
	(rs6000_legitimate_address_p): Move call to quad_address_p above
	call to virtual_stack_registers_memory_p.  Adjust quad_address_p args
	to account for new strict usage.
	(rs6000_output_move_128bit): Adjust quad_address_p args to account
	for new strict usage.
	* config/rs6000/predicates.md (quad_memory_operand): Likewise.

gcc/testsuite/
	PR target/71656
	* gcc.target/powerpc/pr71656-1.c: New test.
	* gcc.target/powerpc/pr71656-2.c: New test.

From-SVN: r237811
2016-06-27 20:28:28 -05:00
GCC Administrator f0388d837d Daily bump.
From-SVN: r237810
2016-06-28 00:16:18 +00:00
Michael Meissner ac11b8c076 vsx.md (UNSPEC_P9_MEMORY): New unspec to support loading and storing byte/half-word values in the vector...
[gcc]
2016-06-27  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* config/rs6000/vsx.md (UNSPEC_P9_MEMORY): New unspec to support
	loading and storing byte/half-word values in the vector registers.
	(vsx_sign_extend_hi_<mode>): Enable the generator function.
	(p9_lxsi<wd>zx): New insns to load zero-extended bytes and
	half-words on ISA 3.0 to the vector registers.
	(p9_stxsi<wd>zx): New insns to store zero-extended bytes and
	half-words on ISA 3.0 from the vector registers.
	* config/rs6000/rs6000.md (FP_ISA3): New iterator to optimize
	converting char/half-word items to floating point on ISA 3.0.
	(float<QHI:mode><FP_ISA3:mode>2): On ISA 3.0 generate the lxsihzx
	and lxsibzx instructions if we are converting an 8-bit or 16-bit
	item from memory to floating point.
	(float<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
	(floatuns<QHI:mode><FP_ISA3:mode>2): Likewise.
	(floatuns<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
	(fix_trunc<SFDF:mode><QHI:mode>2): On ISA 3.0 generate the stxsihx
	and stxsibx instructions to store floating point values converted
	to 8 or 16-bit integers.
	(fixuns_trunc<mode>si2): Likewise.

[gcc/testsuite]
2016-06-27  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* gcc.target/powerpc/p9-fpcvt-1.c: New test to test ISA 3.0 load
	byte/half-word to vector registers and store byte/half-word from
	vector register instructions.
	* gcc.target/powerpc/p9-fpcvt-2.c: Likewise.

From-SVN: r237806
2016-06-28 00:01:13 +00:00
François Dumont dc448fa03b re PR libstdc++/71640 (include/c++/7.0.0/bits/hashtable.h:293:7: error: too many template parameters in template redeclaration)
2016-06-27  François Dumont  <fdumont@gcc.gnu.org>

	PR libstdc++/71640
	* include/bits/hashtable.h: Remove _Unique_keya parameter in _Insert
	friend declaration.

From-SVN: r237803
2016-06-27 20:41:59 +00:00
Christophe Lyon b65ffc7953 [ARM][testsuite] Add missing guards to fp16 AdvSIMD tests
2016-06-27  Christophe Lyon  <christophe.lyon@linaro.org>

	* gcc.target/aarch64/advsimd-intrinsics/vget_lane.c: Add ifdef
	around fp16 code.
	* gcc.target/aarch64/advsimd-intrinsics/vreinterpret.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vreinterpret_p128.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vreinterpret_p64.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vstX_lane.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vld2_lane_f16_indices_1.c:
	Add arm_neon_fp16_ok effective target.
	* gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_f16_indices_1.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vld3_lane_f16_indices_1.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_f16_indices_1.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vld4_lane_f16_indices_1.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_f16_indices_1.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vst2_lane_f16_indices_1.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_f16_indices_1.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vst3_lane_f16_indices_1.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_f16_indices_1.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vst4_lane_f16_indices_1.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_f16_indices_1.c: Likewise.

From-SVN: r237798
2016-06-27 13:27:17 +02:00
GCC Administrator 74a1b6ffef Daily bump.
From-SVN: r237797
2016-06-27 00:16:21 +00:00
Uros Bizjak fb4f1c0829 i386.c (ix86_spill_class): Disable condition to always return NO_REGS.
* config/i386/i386.c (ix86_spill_class): Disable condition to
	always return NO_REGS.

From-SVN: r237793
2016-06-26 23:29:13 +02:00
Uros Bizjak 6423315e77 re PR rtl-optimization/70902 (GCC freezes while compiling for 'skylake-avx512' target)
PR target/70902
	PR target/71453
	PR target/71555
	PR target/71596
	PR target/71657
	* config/i386/i386.c (TARGET_SPILL_CLASS): #if 0 out the definition.
	(ix86_spill_class): Disable to always return NO_REGS.

From-SVN: r237792
2016-06-26 22:56:34 +02:00
Jan Hubicka 9bb86f403f predict-12.c: New testcase.
* gcc.dg/predict-12.c: New testcase.

	* predict.c: Include gimple-pretty-print.h
	(predicted_by_loop_heuristics_p): Check also
	PRED_LOOP_EXIT_WITH_RECURSION
	(predict_loops): Find self recursive calls and use special purpose
	predictors for them; dump log about decisions.
	(pass_profile::execute): Dump info about #of iterations.
	* predict.def (PRED_LOOP_EXIT_WITH_RECURSION,
	(PRED_LOOP_GUARD_WITH_RECURSION): New predictors.

From-SVN: r237791
2016-06-26 20:03:35 +00:00
John David Anglin 445f9a500d pa.c (pa_output_indirect_call): Rework to combine output_asm_insn calls and shorten long lines.
* config/pa/pa.c (pa_output_indirect_call): Rework to combine
	output_asm_insn calls and shorten long lines.  Output .CALL
	argument descriptor using pa_output_arg_descriptor.  Add various
	inline $$dyncall and other optimizations.
	(pa_attr_length_indirect_call): Adjust ordering and lengths.

From-SVN: r237790
2016-06-26 18:09:01 +00:00
Jerry DeLisle 46db0fd456 re PR fortran/71649 (Internal compiler error)
2016-06-25  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/71649
	* module.c (create_intrinsic_function): Check for NULL values and
	return after giving error.

	PR fortran/71649
	* gfortran.dg/pr71649.f90: New test.

From-SVN: r237789
2016-06-26 01:03:19 +00:00
GCC Administrator 9bbbddab3c Daily bump.
From-SVN: r237788
2016-06-26 00:16:17 +00:00
H.J. Lu b20b79f2d3 Add missing ChangeLog entries for r237765
From-SVN: r237784
2016-06-25 13:41:10 -07:00
Jakub Jelinek f8a06e24da re PR tree-optimization/71643 (internal compiler error: in redirect_eh_edge_1, at tree-eh.c:2318 after r237427)
PR tree-optimization/71643
	* tree-ssa-tail-merge.c (find_clusters_1): Ignore basic blocks with
	EH preds.

	* tree-ssa-tail-merge.c (deps_ok_for_redirect_from_bb_to_bb): Don't
	leak a bitmap if dep_bb is NULL.

	* g++.dg/opt/pr71643.C: New test.

From-SVN: r237783
2016-06-25 19:23:02 +02:00
Jakub Jelinek 2a65e70bcf re PR tree-optimization/71631 (Wrong constant folding)
PR tree-optimization/71631
	* tree-ssa-reassoc.c (reassociate_bb): Pass true as last argument
	to rewrite_expr_tree even if negate_result, move new_lhs var
	declaration and initialization earlier, for powi_result set afterwards
	new_lhs to lhs.  For negate_result, use new_lhs instead of tmp
	if new_lhs != lhs, and don't shadow gsi var.

	* gcc.c-torture/execute/pr71631.c: New test.

From-SVN: r237782
2016-06-25 19:20:15 +02:00
Jan Hubicka 7805417a5d predict.c (predict_paths_leading_to, [...]): Add in_loop parameter.
* predict.c (predict_paths_leading_to, predict_paths_leading_to_edge):
	Add in_loop parameter.
	(predict_loops): Add loop guard heuristics.
	* predict.def (PRED_LOOP_GUARD): New heuristics.

	* gcc.dg/predict-11.c: New testcase.
	* gfortran.dg/predict-2.f90: New testcase.

From-SVN: r237781
2016-06-25 16:52:32 +00:00
Jan Hubicka 888ed1a39a predict.c: Include ipa-utils.h
* predict.c: Include ipa-utils.h
	(tree_bb_level_prediction): Predict recursive calls.
	(tree_estimate_probability_bb): Skip inexpensive calls for call
	predictor.
	* predict.def (PRED_RECURSIVE_CALL): New.

	* gcc.dg/predict-10.c: New test.

From-SVN: r237780
2016-06-25 11:56:52 +00:00
GCC Administrator 1527dee9df Daily bump.
From-SVN: r237779
2016-06-25 00:16:22 +00:00
Jason Merrill a25bd9e6a2 P0145R2: Refining Expression Order for C++ (complex LHS of =).
gcc/c-common/
	* c-common.c (verify_tree) [COMPOUND_EXPR]: Fix handling on LHS of
	MODIFY_EXPR.
gcc/cp/
	* typeck.c (cp_build_modify_expr): Leave COMPOUND_EXPR on LHS.

From-SVN: r237775
2016-06-24 17:57:13 -04:00
Bill Schmidt 53605f35cd rs6000-builtin.def (BU_FLOAT128_2): New #define.
[gcc]

2016-06-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* config/rs6000/rs6000-builtin.def (BU_FLOAT128_2): New #define.
	(BU_FLOAT128_1): Likewise.
	(FABSQ): Likewise.
	(COPYSIGNQ): Likewise.
	(RS6000_BUILTIN_NANQ): Likewise.
	(RS6000_BUILTIN_NANSQ): Likewise.
	(RS6000_BUILTIN_INFQ): Likewise.
	(RS6000_BUILTIN_HUGE_VALQ): Likewise.
	* config/rs6000/rs6000.c (rs6000_fold_builtin): New prototype.
	(TARGET_FOLD_BUILTIN): New #define.
	(rs6000_builtin_mask_calculate): Add TARGET_FLOAT128 entry.
	(rs6000_invalid_builtin): Add handling for RS6000_BTM_FLOAT128.
	(rs6000_fold_builtin): New target hook implementation, handling
	folding of 128-bit NaNs and infinities.
	(rs6000_init_builtins): Initialize const_str_type_node; ensure all
	entries are filled in to avoid problems during bootstrap
	self-test; define builtins for 128-bit NaNs and infinities.
	(rs6000_opt_mask): Add entry for float128.
	* config/rs6000/rs6000.h (RS6000_BTM_FLOAT128): New #define.
	(RS6000_BTM_COMMON): Include RS6000_BTM_FLOAT128.
	(rs6000_builtin_type_index): Add RS6000_BTI_const_str.
	(const_str_type_node): New #define.
	* config/rs6000/rs6000.md (copysign<mode>3 for IEEE128): Convert
	to a define_expand that dispatches to either copysign<mode>3_soft
	or copysign<mode>3_hard.
	(copysign<mode>3_hard): Rename from copysign<mode>3.
	(copysign<mode>3_soft): New define_insn.
	* doc/extend.texi: Document new builtins.

[gcc/testsuite]

2016-06-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* gcc.target/powerpc/abs128-1.c: New.
	* gcc.target/powerpc/copysign128-1.c: New.
	* gcc.target/powerpc/inf128-1.c: New.
	* gcc.target/powerpc/nan128-1.c: New.

From-SVN: r237774
2016-06-24 21:55:40 +00:00
Jason Merrill 6e085858a2 Fix get_target_expr for bit-field expressions.
* tree.c (get_target_expr_sfinae): Handle bit-fields.
	(build_target_expr): Call mark_rvalue_use.

From-SVN: r237773
2016-06-24 17:48:14 -04:00
Jakub Jelinek 65e009bb74 cfgloop.c (flow_loop_dump): Cast nit to uint64_t and print it using PRIu64 instead of lu.
* cfgloop.c (flow_loop_dump): Cast nit to uint64_t and print it using
	PRIu64 instead of lu.

From-SVN: r237772
2016-06-24 21:36:58 +02:00
Eric Botcazou 7b22b4c6c8 re PR debug/71642 (ICE: in gen_type_die_with_usage, at dwarf2out.c:22729)
PR debug/71642
	* tree-inline.c (remap_decl): When fixing up DECL_ORIGINAL_TYPE, just
	copy the type name.

From-SVN: r237771
2016-06-24 19:28:18 +00:00
Jakub Jelinek 37e373c2b8 re PR tree-optimization/71647 (aligned(x:32) in #pragma omp simd does not work)
PR tree-optimization/71647
	* omp-low.c (lower_rec_input_clauses): Convert
	omp_clause_aligned_alignment (c) to size_type_node for the
	last argument of __builtin_assume_aligned.

	* gcc.target/i386/pr71647.c: New test.

From-SVN: r237769
2016-06-24 20:44:11 +02:00
H.J. Lu de86ff8f97 Call tls_get_addr via GOT for GNU TLS if possible
There are extensions to x86-64 psABI:

https://groups.google.com/forum/#!topic/x86-64-abi/de5_KnLHxtI

and i386 psABI:

https://groups.google.com/forum/#!topic/ia32-abi/awsRSvJOJfs

to call tls_get_addr via GOT.  X86 assembler and linker in binutils 2.27
implemented

call *__tls_get_addr@GOTPCREL(%rip)

in 64-bit and

call *___tls_get_addr@GOT(%reg)

in 32-bit to access global and local thread loal variables in shared
library.  We check if 32-bit x86 assembler and linker work with

call *___tls_get_addr@GOT(%reg)

as 32-bit and 64-bit assembler and linker are enabled togther.

In 32-bit, since any integer register except EAX, which is used to pass
parameter to ___tls_get_addr, and ESP, can be used as GOT base, a new
register class, TLS_GOTBASE_REGS, along with a new constraint, Yb, are
added.  They are used to improve register allocation for 32-bit dynamic
TLS patterns.

gcc/

	* configure.ac (calling ___tls_get_addr via GOT): New
	assembler/linker check.
	(HAVE_AS_IX86_TLS_GET_ADDR_GOT): New.  Defined to 1 if 32-bit
	assembler and linker supports calling ___tls_get_addr via GOT.
	Otherise, defined to 0.
	* config.in: Regenerated.
	* configure: Likewise.
	* config/i386/constraints.md (Yb): New constraint.
	* config/i386/i386.h (reg_class): Add TLS_GOTBASE_REGS.
	(REG_CLASS_NAMES): Likewise.
	(REG_CLASS_CONTENTS): Likewise.
	* config/i386/i386.md (*tls_global_dynamic_32_gnu): Replace
	the b constraint with the Yb constraint.  Call ___tls_get_addr
	via GOT for GNU TLS with -fno-plt if HAVE_AS_IX86_TLS_GET_ADDR_GOT
	is 1.
	(*tls_local_dynamic_base_32_gnu): Likewise.
	(*tls_global_dynamic_64_<mode>): Call _tls_get_addr via GOT for
	GNU TLS with -fno-plt if HAVE_AS_IX86_TLS_GET_ADDR_GOT is 1.
	(*tls_local_dynamic_base_64_<mode>): Likewise.

gcc/testsuite/

	* gcc.target/i386/noplt-gd-1.c: New test.
	* gcc.target/i386/noplt-gd-2.c: Likewise.
	* gcc.target/i386/noplt-gd-3.c: Likewise.
	* gcc.target/i386/noplt-ld-1.c: Likewise.
	* gcc.target/i386/noplt-ld-2.c: Likewise.
	* gcc.target/i386/noplt-ld-3.c: Likewise.
	* lib/target-supports.exp
	(check_effective_target_tls_get_addr_via_got): New.

From-SVN: r237765
2016-06-24 10:32:52 -07:00
Uros Bizjak a789818018 * gcc.dg/vect/vect-bool-cmp.c: Revert unwanted change.
From-SVN: r237764
2016-06-24 19:00:23 +02:00
Martin Liska 199b1891cb Dump profile-based number of iterations
* analyze_brprob.py: Parse and display average number
	of loop iterations.
	* cfgloop.c (flow_loop_dump): Dump average number of loop iterations.
	* cfgloop.h: Change 'struct loop' to 'const struct loop' for a
	few functions.
	* cfgloopanal.c (expected_loop_iterations_unbounded): Set a new
	argument to true if the expected number of iterations is
	loop-based.

From-SVN: r237762
2016-06-24 16:22:44 +00:00
Uros Bizjak 04619cb86e vect-nb-iter-ub-1.c: Remove default vector testsuite compile flags.
2016-06-24  Uros Bizjak  <ubizjak@gmail.com>

	* gcc.dg/vect/vect-nb-iter-ub-1.c: Remove default vector
	testsuite compile flags.
	* gcc.dg/vect/vect-nb-iter-ub-2.c: Ditto.
	* gcc.dg/vect/vect-nb-iter-ub-3.c: Ditto.

2016-06-24  Uros Bizjak  <ubizjak@gmail.com>

	* g++dg/vect/pr36684.cc: Add dg-do compile.
	* gcc.dg/vect/O3-pr70130.c: Remove dg-do run.
	* gcc.dg/vect/pr70021.c: Ditto.
	* gcc.dg/vect/pr70138-1.c: Ditto.
	* gcc.dg/vect/pr70138-2.c: Ditto.
	* gcc.dg/vect/pr70354-1.c: Ditto.
	* gcc.dg/vect/pr70354-2.c: Ditto.
	* gcc.dg/vect/pr71259.c: Ditto.
	* gcc.dg/vect/pr71416-1.c: Ditto.
	* gcc.dg/vect/slp-43.c: Ditto.
	* gcc.dg/vect/slp-45.c: Ditto.
	* gcc.dg/vect/vect-nb-iter-ub-1.c: Ditto.
	* gcc.dg/vect/vect-nb-iter-ub-2.c: Ditto.
	* gcc.dg/vect/vect-nb-iter-ub-3.c: Ditto.
	* gfortran.dg/vect/pr69980.f90: Ditto.

2016-06-24  Uros Bizjak  <ubizjak@gmail.com>

	* gcc.dg/vect/O3-pr70130.c: Include tree-vect.h and call check_vect.
	* gcc.dg/vect/bb-slp-30.c: Ditto.
	* gcc.dg/vect/costmodel/i386/costmodel-vect-33.c: Ditto.
	* gcc.dg/vect/fast-math-bb-slp-call-3.c: Ditto.
	* gcc.dg/vect/pr45902.c: Ditto.
	* gcc.dg/vect/pr48172.c: Ditto.
	* gcc.dg/vect/pr48377.c: Ditto.
	* gcc.dg/vect/pr49038.c: Ditto.
	* gcc.dg/vect/pr49771.c: Ditto.
	* gcc.dg/vect/pr52091.c: Ditto.
	* gcc.dg/vect/pr53185-2.c: Ditto.
	* gcc.dg/vect/pr56826.c: Ditto.
	* gcc.dg/vect/pr60276.c: Ditto.
	* gcc.dg/vect/pr62021.c: Ditto.
	* gcc.dg/vect/pr63530.c: Ditto.
	* gcc.dg/vect/pr65518.c: Ditto.
	* gcc.dg/vect/pr65947-1.c: Ditto.
	* gcc.dg/vect/pr65947-10.c: Ditto.
	* gcc.dg/vect/pr65947-11.c: Ditto.
	* gcc.dg/vect/pr65947-12.c: Ditto.
	* gcc.dg/vect/pr65947-13.c: Ditto.
	* gcc.dg/vect/pr65947-2.c: Ditto.
	* gcc.dg/vect/pr65947-3.c: Ditto.
	* gcc.dg/vect/pr65947-4.c: Ditto.
	* gcc.dg/vect/pr65947-5.c: Ditto.
	* gcc.dg/vect/pr65947-6.c: Ditto.
	* gcc.dg/vect/pr65947-7.c: Ditto.
	* gcc.dg/vect/pr65947-8.c: Ditto.
	* gcc.dg/vect/pr65947-9.c: Ditto.
	* gcc.dg/vect/pr71416-1.c: Ditto.
	* gcc.dg/vect/pr71439.c: Ditto.
	* gcc.dg/vect/slp-widen-mult-half.c: Ditto.
	* gcc.dg/vect/vect-bswap16.c: Ditto.
	* gcc.dg/vect/vect-bswap32.c: Ditto.
	* gcc.dg/vect/vect-bswap64.c: Ditto.
	* gcc.dg/vect/vect-live-1.c: Ditto.
	* gcc.dg/vect/vect-live-2.c: Ditto.
	* gcc.dg/vect/vect-live-3.c: Ditto.
	* gcc.dg/vect/vect-live-4.c: Ditto.
	* gcc.dg/vect/vect-live-5.c: Ditto.
	* gcc.dg/vect/vect-live-slp-1.c: Ditto.
	* gcc.dg/vect/vect-live-slp-2.c: Ditto.
	* gcc.dg/vect/vect-live-slp-3.c: Ditto.
	* gcc.dg/vect/vect-nb-iter-ub-1.c: Ditto.
	* gcc.dg/vect/vect-nb-iter-ub-2.c: Ditto.
	* gcc.dg/vect/vect-nb-iter-ub-3.c: Ditto.
	* gcc.dg/vect/vect-neg-store-1.c: Ditto.
	* gcc.dg/vect/vect-neg-store-2.c: Ditto.
	* gcc.dg/vect/vect-outer-pr69720.c: Ditto.
	* gcc.dg/vect/vect-reduc-mul_1.c: Ditto.
	* gcc.dg/vect/vect-reduc-mul_2.c: Ditto.
	* gcc.dg/vect/vect-reduc-or_1.c: Ditto.
	* gcc.dg/vect/vect-reduc-or_2.c: Ditto.
	* gcc.dg/vect/vect-widen-mult-const-s16.c: Ditto.
	* gcc.dg/vect/vect-widen-mult-const-u16.c: Ditto.
	* gcc.dg/vect/vect-widen-mult-half-u8.c: Ditto.
	* gcc.dg/vect/vect-widen-mult-half.c: Ditto.

From-SVN: r237761
2016-06-24 17:46:21 +02:00
Uros Bizjak da224bcb28 float128-cmp-invalid.c (main): Use __builtin_nanq.
* gcc.dg/torture/float128-cmp-invalid.c (main): Use __builtin_nanq.

From-SVN: r237760
2016-06-24 15:55:40 +02:00
Uros Bizjak 936ff03092 tree-vect.h (check_vect): Handle __SSE4_2__.
* gcc.dg/vect/tree-vect.h (check_vect): Handle __SSE4_2__.

From-SVN: r237759
2016-06-24 15:53:13 +02:00
Uros Bizjak e1ebd31d5a configure.ac (HAVE_AS_GOTOF_IN_DATA): Use $as_ix86_gas_32_opt to assemble for 32bit target.
* configure.ac (HAVE_AS_GOTOF_IN_DATA): Use $as_ix86_gas_32_opt to
	assemble for 32bit target.
	(HAVE_AS_IX86_TLSGDPLT): Use $as_ix86_gas_32_opt to assemble
	and $ld_ix86_gld_32_opt to link for 32bit target.
	(HAVE_AS_IX86_TLSLDMPLT): Ditto.
	* configure: Regenerate.

From-SVN: r237758
2016-06-24 15:37:06 +02:00
Kyrylo Tkachov 68a8632380 [ARM][1/4] Replace uses of int_log2 by exact_log2
* config/arm/arm.c (int_log2): Delete definition and prototype.
	(shift_op): Use exact_log2 instead of int_log2.
	(vfp3_const_double_for_fract_bits): Likewise.

From-SVN: r237757
2016-06-24 12:46:19 +00:00
H.J. Lu dfee287036 Enable non-PIC noplt tests on 32-bit x86 target
Since non-PIC noplt works on 32-bit x86 target now with assembler/linker
support, enable non-PIC noplt tests on 32-bit x86 target.  main in
noplt-2.c and noplt-4.c are renamed to bar to avoid stack re-alignment
in main for 32-bit target, which disables tailcall optimization.

	* gcc.target/i386/noplt-1.c: Don't disable for ia32.  Scan for
	ia32 if R_386_GOT32X relocation is supported.
	* gcc.target/i386/noplt-3.c: Likewise.
	* gcc.target/i386/noplt-2.c: Likewise.
	(main): Renamed to ...
	(bar): This.
	* gcc.target/i386/noplt-4.c: Likewise.
	(main): Renamed to ...
	(bar): This.
	* gcc.target/i386/pr67400-3.c: Don't disable for ia32.
	* gcc.target/i386/pr67400-5.c: Likewise.

From-SVN: r237756
2016-06-24 04:17:14 -07:00
Jakub Jelinek 00085092c5 call.c (magic_varargs_p): Return 3 for __builtin_*_overflow_p.
* call.c (magic_varargs_p): Return 3 for __builtin_*_overflow_p.
	(build_over_call): For magic == 3, do no conversion only on 3rd
	argument.

	* c-c++-common/torture/builtin-arith-overflow-p-19.c: Run for C++ too.
	* g++.dg/ext/builtin-arith-overflow-2.C: New test.

From-SVN: r237755
2016-06-24 13:04:29 +02:00
Jakub Jelinek a86451b9b2 internal-fn.c (expand_arith_set_overflow): New function.
* internal-fn.c (expand_arith_set_overflow): New function.
	(expand_addsub_overflow, expand_neg_overflow, expand_mul_overflow):
	Use it.
	(expand_arith_overflow_result_store): Likewise.  Handle precision
	smaller than mode precision.
	* tree-vrp.c (extract_range_basic): For imag part, handle
	properly signed 1-bit precision result.
	* doc/extend.texi (__builtin_add_overflow): Document that last
	argument can't be pointer to enumerated or boolean type.
	(__builtin_add_overflow_p): Document that last argument can't
	have enumerated or boolean type.

	* c-common.c (check_builtin_function_arguments): Require last
	argument of BUILT_IN_*_OVERFLOW_P to have INTEGER_TYPE type.
	Adjust wording of diagnostics for BUILT_IN_*_OVERLFLOW
	if the last argument is pointer to enumerated or boolean type.

	* c-c++-common/builtin-arith-overflow-1.c (generic_wrong_type, f3,
	f4): Adjust expected diagnostics.
	* c-c++-common/torture/builtin-arith-overflow.h (TP): New macro.
	(T): If OVFP is defined, redefine to TP.
	* c-c++-common/torture/builtin-arith-overflow-12.c: Adjust comment.
	* c-c++-common/torture/builtin-arith-overflow-p-1.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-2.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-3.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-4.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-5.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-6.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-7.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-8.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-9.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-10.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-11.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-12.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-13.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-14.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-15.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-16.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-17.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-18.c: New test.
	* c-c++-common/torture/builtin-arith-overflow-p-19.c: New test.
	* g++.dg/ext/builtin-arith-overflow-1.C: Pass 0 instead of C
	as last argument to __builtin_add_overflow_p.

From-SVN: r237754
2016-06-24 13:03:27 +02:00
GCC Administrator 43535362e7 Daily bump.
From-SVN: r237753
2016-06-24 00:16:21 +00:00
François Dumont e615c24c30 array (array<>::swap): Fix noexcept qualificaton for zero-size array.
2016-06-23  François Dumont  <fdumont@gcc.gnu.org>

	* include/debug/array (array<>::swap): Fix noexcept qualificaton for
	zero-size array.

From-SVN: r237747
2016-06-23 20:21:47 +00:00
Uros Bizjak 7bb5d5f42d pr33834_2.cc: Use dg-additional-options instead of dg-options and remove default vector...
* g++.dg/vect/pr33834_2.cc: Use dg-additional-options instead of
	dg-options and remove default vector testsuite compile flags.
	* g++.dg/vect/pr33860a.cc: Ditto.
	* g++.dg/vect/pr45470-a.cc: Ditto.
	* g++.dg/vect/pr45470-b.cc: Ditto.
	* g++.dg/vect/pr60896.cc: Ditto.
	* gcc.dg/vect/no-tree-pre-pr45241.c: Ditto.
	* gcc.dg/vect/pr18308.c: Ditto.
	* gcc.dg/vect/pr24049.c: Ditto.
	* gcc.dg/vect/pr33373.c: Ditto.
	* gcc.dg/vect/pr36228.c: Ditto.
	* gcc.dg/vect/pr42395.c: Ditto.
	* gcc.dg/vect/pr42604.c: Ditto.
	* gcc.dg/vect/pr46663.c: Ditto.
	* gcc.dg/vect/pr48765.c: Ditto.
	* gcc.dg/vect/pr49093.c: Ditto.
	* gcc.dg/vect/pr49352.c: Ditto.
	* gcc.dg/vect/pr52298.c: Ditto.
	* gcc.dg/vect/pr52870.c: Ditto.
	* gcc.dg/vect/pr53185.c: Ditto.
	* gcc.dg/vect/pr53773.c: Ditto.
	* gcc.dg/vect/pr56695.c: Ditto.
	* gcc.dg/vect/pr62171.c: Ditto.
	* gcc.dg/vect/pr63530.c: Ditto.
	* gcc.dg/vect/pr68339.c: Ditto.
	* gcc.dg/vect/pr71259.c: Ditto.
	* gcc.dg/vect/vect-82_64.c: Ditto.
	* gcc.dg/vect/vect-83_64.c: Ditto.
	* gcc.dg/vect/vect-debug-pr41926.c: Ditto.
	* gcc.dg/vect/vect-shift-2-big-array.c: Ditto.
	* gcc.dg/vect/vect-shift-2.c: Ditto.
	* gfortran.dg/vect/fast-math-mgrid-resid.f: Ditto.
	* gfortran.dg/vect/pr39318.f90: Ditto.
	* gfortran.dg/vect/pr45714-a.f: Ditto.
	* gfortran.dg/vect/pr45714-b.f: Ditto.
	* gfortran.dg/vect/pr46213.f90: Ditto.

From-SVN: r237745
2016-06-23 21:58:37 +02:00
Michael Meissner 2d4bb02f62 predicates.md (splat_input_operand): Rework.
[gcc]
2016-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
	    Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* config/rs6000/predicates.md (splat_input_operand): Rework.
	Don't allow constants, since the insns that use this predicate
	don't support constants.  Constants are handled by other insns
	that are created via combine.  During and after register
	allocation, only allow indexed or indirect addresses, and not
	general addresses.  Only allow modes supported by the hardware.
	* config/rs6000/rs6000.c (xxsplitb_constant_p): Update usage
	comment.  Move check for using VSPLTIS<x> to a common location,
	instead of doing it in two different places.

[gcc/testsuite]
2016-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
	    Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* gcc.target/powerpc/p9-splat-5.c: New test.


Co-Authored-By: Bill Schmidt <wschmidt@linux.vnet.ibm.com>

From-SVN: r237743
2016-06-23 19:19:09 +00:00
Jocelyn Mayer a239d46051 driver-i386.c (host_detect_local_cpu): Set PROCESSOR_PENTIUMPRO for signature_CENTAUR_ebx family >= 9.
* config/i386/driver-i386.c (host_detect_local_cpu): Set
	PROCESSOR_PENTIUMPRO for signature_CENTAUR_ebx family >= 9.
	<case PROCESSOR_PENTIMUMPRO>: Pass c7 or nehemiah for
	signature_CENTAUR_ebx.

From-SVN: r237741
2016-06-23 20:06:43 +02:00