Commit Graph

147192 Commits

Author SHA1 Message Date
Michael Meissner
ec5385270a re PR target/71677 (PowerPC ISA 3.0 DImode load/store needs a fix)
2016-06-30  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/71677
	* config/rs6000/constraints.md (wY constraint): New constraint to
	match the requirements for the LXSD and STXSD instructions.
	* config/rs6000/predicates.md (offsettable_mem_14bit_operand): New
	predicate to match the requirements for the LXSD and STXSD
	instructions.
	* config/rs6000/rs6000.md (mov<mode>_hardfloat32, FMOVE64 case):
	Use constaint wY for LXSD/STXSD instructions instead of 'o' or 'Y'
	to make sure that the bottom 2 bits of offset are 0, the address
	form is offsettable, and no updating is done in the address mode.
	(mov<mode>_hardfloat64, FMOVE64 case): Likewise.
	(movdi_internal32): Likewise
	(movdi_internal64): Likewise.

From-SVN: r237898
2016-06-30 21:54:47 +00:00
Jakub Jelinek
55a0f21aba re PR tree-optimization/71707 (ICE in get_stridx_plus_constant)
PR tree-optimization/71707
	* tree-ssa-strlen.c (get_stridx_plus_constant): Handle already present
	strinfo even for ADDR_EXPR ptr.

	* gcc.dg/strlenopt-29.c: New test.

From-SVN: r237889
2016-06-30 20:45:18 +02:00
Jakub Jelinek
6245ad72d2 re PR fortran/71704 (ICE with -fopenmp and some omp constructs)
PR fortran/71704
	* parse.c (matchs, matcho): Move right before decode_omp_directive.
	If spec_only, only gfc_match the keyword and if successful, goto
	do_spec_only.
	(matchds, matchdo): Define.
	(decode_omp_directive): Add spec_only local var and set it.
	Use matchds or matchdo macros instead of matchs or matcho
	for declare target, declare simd, declare reduction and threadprivate
	directives.  Return ST_GET_FCN_CHARACTERISTICS if a non-declarative
	directive could be matched.
	(next_statement): For ST_GET_FCN_CHARACTERISTICS restore
	gfc_current_locus from old_locus even if there is no label.

	* gfortran.dg/gomp/pr71704.f90: New test.

From-SVN: r237888
2016-06-30 19:45:21 +02:00
Jakub Jelinek
351beab7f5 re PR fortran/71705 (ICE in lower_omp_target, at omp-low.c:16136)
PR fortran/71705
	* trans-openmp.c (gfc_trans_omp_clauses): Set TREE_ADDRESSABLE on
	decls in to/from clauses.

	* gfortran.dg/gomp/pr71705.f90: New test.

From-SVN: r237887
2016-06-30 19:39:52 +02:00
Kelvin Nilsen
5a3a6a5eae altivec.md (darn_32): Change the condition to TARGET_P9_MISC instead of TARGET_MODULO.
gcc/ChangeLog:

2016-06-30  Kelvin Nilsen  <kelvin@gcc.gnu.org>

	* config/rs6000/altivec.md (darn_32): Change the condition to
	TARGET_P9_MISC instead of TARGET_MODULO.
	(darn_raw): Replace TARGET_MODULO with TARGET_P9_MISC in the
	condition expression.
	(darn): Replace TARGET_MODULO with TARGET_P9_MISC in the
	condition expression.
	* config/rs6000/dfp.md (UNSPEC_DTSTSFI): New unspec constant.
	(DFP_TEST): New code iterator.
	(dfptstsfi_<code>_mode>): New define_expand.
	(*dfp_sgnfcnc_<mode>): New define_insn.
	* config/rs6000/rs6000-builtin.def (BU_P9_MISC_0): Move this macro
	definition next to BU_P9_MISC_1 definition and change the MASK
	value to RS6000_BTM_P9_MISC.
	(BU_P9_MISC_1): Change the MASK value to RS6000_BTM_P9_MISC.
	(BU_P9_64BIT_MISC_0): Likewise.
	(BU_P9_DFP_MISC_0): New macro definition.
	(BU_P9_DFP_MISC_1): New macro definition.
	(BU_P9_DFP_MISC_2): New macro definition.
	(BU_P9_DFP_OVERLOAD_1): New macro definition.
	(BU_P9_DFP_OVERLOAD_2): New macro definition.
	(BU_P9_DFP_OVERLOAD_3): New macro definition.
	(TSTSFI_LT_DD): New BU_P9_DFP_MISC_2.
	(TSTSFI_LT_TD): Likewise.
	(TSTSFI_EQ_DD): Likewise.
	(TSTSFI_EQ_TD): Likewise.
	(TSTSFI_GT_DD): Likewise.
	(TSTSFI_GT_TD): Likewise.
	(TSTSFI_OV_DD): Likewise.
	(TSTSFI_OV_TD): Likewise.
	(TSTSFI_LT): New BU_P9_DFP_OVERLOAD_2.
	(TSTSFI_LT_DD): Likewise.
	(TSTSFI_LT_TD): Likewise.
	(TSTSFI_EQ): Likewise.
	(TSTSFI_EQ_DD): Likewise.
	(TSTSFI_EQ_TD): Likewise.
	(TSTSFI_GT): Likewise.
	(TSTSFI_GT_DD): Likewise.
	(TSTSFI_GT_TD): Likewise.
	(TSTSFI_OV): Likewise.
	(TSTSFI_OV_DD): Likewise.
	(TSTSFI_OV_TD): Likewise.
	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
	overloaded test significance functions.
	* config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Add
	OPTION_MASK_P9_MISC into the representation of this mask.
	(POWERPC_MASKS): Add OPTION_MASK_P9_MISC into the representation
	of this mask.
	* config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Set the
	RS6000_BTM_P9_MISC flag in the return value if TARGET_P9_MISC is
	non-zero.
	(rs6000_expand_binop_builtin): Enforce that argument 0 of the exp
	argument is a 6-bit unsigned literal value if the icode argument
	represents a DFP test significance built-in call.
	(rs6000_invalid_builtin): Add support for the RS6000_BTM_P9_MISC
	flag used independently and in combination with the
	RS6000_BTM_64BIT flag.
	(rs6000_opt_masks): Add entry for power9-misc command-line option.
	(rs6000_builtin_mask_names): Add entry for power9-misc
	command-line option.
	* config/rs6000/rs6000.h: Redefine TARGET_P9_MISC as 0 if
	HAVE_AS_POWER9 is not a defined macro.  Define MASK_P9_MISC and
	RS6000_BTM_P9_MISC macros.
	* config/rs6000/rs6000.opt: Add support for the -mpower9-misc
	option and change the description of the -mpower9-vector option to
	enable only vector instructions, removing its erroneously claimed
	support for scalar instructions.
	* doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
	the ISA 3.0 digital floating point test significance built-in
	functions.

gcc/testsuite/ChangeLog:

2016-06-30  Kelvin Nilsen  <kelvin@gcc.gnu.org>

	* gcc.target/powerpc/dfp/dfp.exp: New dejagnu test script.
	* gcc.target/powerpc/dfp/dtstsfi-0.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-1.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-10.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-11.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-12.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-13.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-14.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-15.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-16.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-17.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-18.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-19.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-2.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-20.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-21.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-22.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-23.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-24.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-25.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-26.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-27.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-28.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-29.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-3.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-30.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-31.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-32.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-33.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-34.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-35.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-36.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-37.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-38.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-39.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-4.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-40.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-41.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-42.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-43.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-44.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-45.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-46.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-47.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-48.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-49.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-5.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-50.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-51.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-52.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-53.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-54.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-55.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-56.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-57.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-58.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-59.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-6.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-60.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-61.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-62.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-63.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-64.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-65.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-66.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-67.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-68.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-69.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-7.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-70.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-71.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-72.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-73.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-74.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-75.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-76.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-77.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-78.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-79.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-8.c: New test.
	* gcc.target/powerpc/dfp/dtstsfi-9.c: New test.

From-SVN: r237885
2016-06-30 15:59:44 +00:00
Wilco Dijkstra
0bc2433858 This patch sets the branch cost to the same most optimal setting for all Cortex cores...
This patch sets the branch cost to the same most optimal setting for all Cortex
cores, reducing codesize and improving performance due to using more CSEL
instructions.  Set the autoprefetcher model in Cortex-A72 to weak like the
others.  Enable AES fusion in Cortex-A35.  As a result generated code is now
more similar as well as more optimal across Cortex cores.

    gcc/
	* config/aarch64/aarch64.c (cortexa35_tunings):
	Enable AES fusion.  Use cortexa57_branch_cost.
	(cortexa53_tunings): Use cortexa57_branch_cost.
	(cortexa72_tunings): Use cortexa57_branch_cost.
	Use AUTOPREFETCHER_WEAK.
	(cortexa73_tunings): Use cortexa57_branch_cost.

From-SVN: r237884
2016-06-30 15:46:14 +00:00
Kyrylo Tkachov
3dfa80718b [AArch64][2/2] (Re)Implement vcopy<q>_lane<q> intrinsics
2016-06-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
            James Greenhalgh  <james.greenhalgh@arm.com>

	* config/aarch64/arm_neon.h (vcopyq_lane_f32, vcopyq_lane_f64,
	vcopyq_lane_p8, vcopyq_lane_p16, vcopyq_lane_s8, vcopyq_lane_s16,
	vcopyq_lane_s32, vcopyq_lane_s64, vcopyq_lane_u8, vcopyq_lane_u16,
	vcopyq_lane_u32, vcopyq_lane_u64): Reimplement in C.
	(vcopy_lane_f32, vcopy_lane_f64, vcopy_lane_p8, vcopy_lane_p16,
	vcopy_lane_s8, vcopy_lane_s16, vcopy_lane_s32, vcopy_lane_s64,
	vcopy_lane_u8, vcopy_lane_u16, vcopy_lane_u32, vcopy_lane_u64,
	vcopy_laneq_f32, vcopy_laneq_f64, vcopy_laneq_p8, vcopy_laneq_p16,
	vcopy_laneq_s8, vcopy_laneq_s16, vcopy_laneq_s32, vcopy_laneq_s64,
	vcopy_laneq_u8, vcopy_laneq_u16, vcopy_laneq_u32, vcopy_laneq_u64,
	vcopyq_laneq_f32, vcopyq_laneq_f64, vcopyq_laneq_p8, vcopyq_laneq_p16,
	vcopyq_laneq_s8, vcopyq_laneq_s16, vcopyq_laneq_s32, vcopyq_laneq_s64,
	vcopyq_laneq_u8, vcopyq_laneq_u16, vcopyq_laneq_u32, vcopyq_laneq_u64):
	New intrinsics.

	* gcc.target/aarch64/vect_copy_lane_1.c: New test.


Co-Authored-By: James Greenhalgh <james.greenhalgh@arm.com>

From-SVN: r237883
2016-06-30 15:19:45 +00:00
James Greenhalgh
9bd6224272 [AArch64][1/2] Add support INS (element) instruction to copy lanes between vectors
2016-06-30  James Greenhalgh  <james.greenhalgh@arm.com>
            Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

	* config/aarch64/aarch64-simd.md (*aarch64_simd_vec_copy_lane<mode>):
	New define_insn.
	(*aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.

	* gcc.target/aarch64/vget_set_lane_1.c: New test.


Co-Authored-By: Kyrylo Tkachov <kyrylo.tkachov@arm.com>

From-SVN: r237882
2016-06-30 15:15:26 +00:00
David Malcolm
603107fbb0 Fix bogus option suggestions for RejectNegative options (PR driver/71651)
gcc/ChangeLog:
	PR driver/71651
	* gcc.c (driver::build_option_suggestions): Pass "option" to
	add_misspelling_candidates.
	* opts-common.c (add_misspelling_candidates): Add "option" param;
	use it to avoid adding negated forms for options marked with
	RejectNegative.
	* opts.h (add_misspelling_candidates): Add "option" param.

gcc/testsuite/ChangeLog:
	PR driver/71651
	* gcc.dg/spellcheck-options-12.c: New test case.

From-SVN: r237880
2016-06-30 14:28:50 +00:00
Thomas Preud'homme
72fb6bae83 65913.cc: Require atomic-builtins rather than specific target.
2016-06-30  Thomas Preud'homme  <thomas.preudhomme@arm.com>

libstdc++-v3/
    * testsuite/29_atomics/atomic/65913.cc: Require atomic-builtins rather
    than specific target.

From-SVN: r237879
2016-06-30 14:17:47 +00:00
Jakub Jelinek
205cccc7c8 re PR middle-end/71693 (ICE: verify_gimple failed (type mismatch in shift expression, -O0, -O1, -O2, -O3))
PR middle-end/71693
	* fold-const.c (fold_binary_loc) <case RROTATE_EXPR>: Cast
	TREE_OPERAND (arg0, 0) and TREE_OPERAND (arg0, 1) to type
	first when permuting bitwise operation with rotate.  Cast
	TREE_OPERAND (arg0, 0) to type when cancelling two rotations.

	* gcc.c-torture/compile/pr71693.c: New test.

From-SVN: r237875
2016-06-30 10:52:43 +02:00
GCC Administrator
1bcf319ef8 Daily bump.
From-SVN: r237869
2016-06-30 00:16:18 +00:00
David Malcolm
f4452176d8 Offer suggestions for misspelled --param names.
gcc/ChangeLog:
	* opts.c (handle_param): Use find_param_fuzzy to offer suggestions
	for misspelled param names.
	* params.c: Include spellcheck.h.
	(find_param_fuzzy): New function.
	* params.h (find_param_fuzzy): New prototype.
	* spellcheck.c (struct edit_distance_traits<const char *>): Move
	to...
	* spellcheck.h (struct edit_distance_traits<const char *>):
	...here.

gcc/testsuite/ChangeLog:
	* gcc.dg/spellcheck-params.c: New testcase.
	* gcc.dg/spellcheck-params-2.c: New testcase.

From-SVN: r237865
2016-06-30 00:05:39 +00:00
Michael Meissner
c5e74d9d4e predicates.md (const_0_to_7_operand): New predicate, recognize 0..7.
[gcc]
2016-06-29  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* config/rs6000/predicates.md (const_0_to_7_operand): New
	predicate, recognize 0..7.
	* config/rs6000/rs6000.c (rs6000_expand_vector_extract): Add
	support for doing extracts from V16QImode, V8HImode, V4SImode
	under ISA 3.0.
	* config/rs6000/vsx.md (VSX_EXTRACT_I): Mode iterator for ISA 3.0
	vector extract support.
	(VSX_EXTRACT_PREDICATE): Mode attribute to validate element number
	for ISA 3.0 vector extract.
	(VSX_EX): Constraints to use for ISA 3.0 vector extract.
	(vsx_extract_<mode>, VSX_EXTRACT_I): Add support for doing
	extracts of a constant element number from small integer vectors
	on 64-bit ISA 3.0 systems.
	(vsx_extract_<mode>_di): Likewise.
	* config/rs6000/rs6000.h (TARGET_VEXTRACTUB): New target macro to
	say when we can do ISA 3.0 vector extracts.
	* config/rs6000/rs6000.md (stfiwx): Allow DImode in Altivec
	registers, using the stxsiwx instruction.

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

	* gcc.target/powerpc/p9-extract-1.c: New file to test ISA 3.0
	vector extract instructions.
	* gcc.target/powerpc/p9-extract-2.c: Likewise.

From-SVN: r237864
2016-06-29 23:54:12 +00:00
Jerry DeLisle
e44ecbfd9f re PR fortran/71686 (ICE on broken character continuation)
2016-06-29  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/71686
	* gfortran.dg/unexpected_eof_2.f90: New test.
	* gfortran.dg/unexpected_eof_3.f90: New test.

From-SVN: r237861
2016-06-29 19:04:58 +00:00
Jerry DeLisle
b5f58440d2 re PR fortran/71686 (ICE on broken character continuation)
2016-06-29  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/71686
	* scanner.c (gfc_next_char_literal): Only decrement nextc if it
	is not NULL.

From-SVN: r237860
2016-06-29 18:48:37 +00:00
Jim Wilson
ee446d9fbb Add qdf24xx base tuning support.
gcc/
	* config/aarch64/aarch64-cores.def (qdf24xx): Use qdf24xx tuning.
	* config/aarch64/aarch64.c (qdf24xx_addrcost_table,
	qdf24xx_regmove_cost, qdf24xx_tunings): New.
	* config/arm/aarch64-cost-tables.h (qdf24xx_extra_costs): New.
	* config/arm/arm-cores.def (qdf24xx): Use qdf24xx tuning.
	* config/arm/arm.c (arm_qdf24xx_tune): New.

	gcc/testsuite/
	* gcc.dg/asr_div1.c: Add aarch64 specific dg-options.

From-SVN: r237857
2016-06-29 11:01:55 -07:00
Cesar Philippidis
27f6746184 openmp.c (match_oacc_clause_gang): Rename to ...
gcc/fortran/
	* openmp.c (match_oacc_clause_gang): Rename to ...
	(match_oacc_clause_gwv): this.  Add support for OpenACC worker and
	vector clauses.
	(gfc_match_omp_clauses): Use match_oacc_clause_gwv for
	OMP_CLAUSE_{GANG,WORKER,VECTOR}.  Propagate any MATCH_ERRORs for
	invalid OMP_CLAUSE_{ASYNC,WAIT,GANG,WORKER,VECTOR} clauses.
	(gfc_match_oacc_wait): Propagate MATCH_ERROR for invalid
	oacc_expr_lists.  Adjust the first and needs_space arguments to
	gfc_match_omp_clauses.

	gcc/testsuite/
	* gfortran.dg/goacc/asyncwait-2.f95: Updated expected diagnostics.
	* gfortran.dg/goacc/asyncwait-3.f95: Likewise.
	* gfortran.dg/goacc/asyncwait-4.f95: Add test coverage.

From-SVN: r237854
2016-06-29 09:04:42 -07:00
Richard Biener
b1206d294a re PR tree-optimization/15256 ([tree-ssa] Optimize manual bitfield manipilation.)
2016-06-29  Richard Biener  <rguenther@suse.de>

	PR middle-end/15256
	* gcc.dg/tree-ssa/forwprop-34.c: New testcase.

From-SVN: r237852
2016-06-29 13:48:39 +00:00
Wilco Dijkstra
d4407370d9 Increase loop alignment on Cortex cores to 8 and set function alignment to 16.
This makes things consistent across big.LITTLE cores, improves performance of
benchmarks with tight loops and reduces performance variations due to small
changes in code layout.

    gcc/
        * config/aarch64/aarch64.c (cortexa53_tunings):
        Increase loop alignment to 8.  Set function alignment to 16.
        (cortexa35_tunings): Likewise.
        (cortexa57_tunings): Increase loop alignment to 8.
        (cortexa72_tunings): Likewise.
        (cortexa73_tunings): Likewise.

From-SVN: r237851
2016-06-29 13:11:48 +00:00
Eric Botcazou
9182f71840 re PR ada/48835 (porting GNAT to m68k-linux)
PR ada/48835
	PR ada/61954
	* gcc-interface/gigi.h (enum standard_datatypes): Add ADT_realloc_decl
	(realloc_decl): New macro.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Use local
	variable for the entity type and translate it as void pointer if the
	entity has convention C.
	(gnat_to_gnu_entity) <E_Function>: If this is not a definition and the
	external name matches that of malloc_decl or realloc_decl, return the
	correspoding node directly.
	(gnat_to_gnu_subprog_type): Likewise for parameter and return types.
	* gcc-interface/trans.c (gigi): Initialize void_list_node here, not...
	Initialize realloc_decl.
	* gcc-interface/utils.c (install_builtin_elementary_types): ...here.
	(build_void_list_node): Delete.
	* gcc-interface/utils2.c (known_alignment) <CALL_EXPR>: Return the
	alignment of the system allocator for malloc_decl and realloc_decl.
	Do not take alignment from void pointer types either.

From-SVN: r237850
2016-06-29 13:03:22 +00:00
Matthew Wahab
1af21224e4 [ARM] Fix, add tests for FP16 aapcs.
testsuite/
	* gcc.target/arm/aapcs/neon-vect10.c: Require
	-mfloat-ab=hard.  Replace arm_neon_fp16_ok with arm_neon_fp16_hw.
	* gcc.target/arm/aapcs/neon-vect9.c: Likewise.
	* gcc.target/arm/aapcs/vfp18.c: Likewise.
	* gcc.target/arm/aapcs/vfp19.c: Likewise.
	* gcc.target/arm/aapcs/vfp20.c: Likewise.
	* gcc.target/arm/aapcs/vfp21.c: Likewise.
	* gcc.target/arm/fp16-aapcs-1.c: Require
	-mfloat-ab=hard.  Also simplify the test.
	* gcc.target/arm/fp16-aapcs-2.c: New.

From-SVN: r237849
2016-06-29 12:37:00 +00:00
Eric Botcazou
abb67622cf misc.c (LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL): Reorder.
* gcc-interface/misc.c (LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL): Reorder.
	(LANG_HOOKS_INIT_TS): Likewise.

From-SVN: r237848
2016-06-29 12:32:57 +00:00
Matthew Wahab
7fe4375542 [Testsuite] Selectors and options directives for ARM VFP FP16 support.
gcc/
	* doc/sourcebuild.texi (Effective-Target keywords): Add entries
	for arm_fp16_ok and arm_fp16_hw.
	(Add Options): Add entries for arm_fp16, arm_fp16_ieee and
	arm_fp16_alternative.

testsuite/
	* lib/target-supports.exp (add_options_for arm_fp16): Reword
	comment.
	(add_options_for_arm_fp16_ieee): New.
	(add_options_for_arm_fp16_alternative): New.
	(effective_target_arm_fp16_ok_nocache): Add to comment.  Fix a
	long-line.
	(effective_target_arm_fp16_hw): New.

From-SVN: r237847
2016-06-29 12:32:08 +00:00
Ilya Enkovich
264d951ae8 re PR tree-optimization/71655 (GCC trunk ICE on westmere target)
gcc/

	PR tree-optimization/71655
	* tree-vect-stmts.c (vectorizable_comparison): Swap definition
	types when swapping operands.

gcc/testsuite/

	PR tree-optimization/71655
	* g++.dg/pr71655.C: New test.

From-SVN: r237846
2016-06-29 12:26:40 +00:00
Martin Liska
5c846a81ff Mark -fstack-protect as optimization flag.
PR middle-end/71585
	* common.opt (flag_stack_protect): Mark the flag as optimization
	flag.
	* ipa-inline-transform.c (inline_call): Remove unnecessary call
	of build_optimization_node.
	* gcc.dg/pr71585.c: New test.
	* gcc.dg/pr71585-2.c: New test.
	* gcc.dg/pr71585-3.c: New test.

From-SVN: r237845
2016-06-29 12:12:56 +00:00
Yuri Rumyantsev
fafe9318b7 re PR tree-optimization/70729 (Loop marked with omp simd pragma is not vectorized)
gcc/

2016-06-29  Yuri Rumyantsev  <ysrumyan@gmail.com>

	PR tree-optimization/70729
	* tree-ssa-loop-im.c (ref_indep_loop_p_1): Consider memory reference as
	independent in loops having positive safelen value.
	* tree-vect-loop.c (vect_transform_loop): Clear-up safelen value since
	it may be not valid after vectorization.

gcc/testsuite/

2016-06-29  Yuri Rumyantsev  <ysrumyan@gmail.com>

	PR tree-optimization/70729
	* g++.dg/vect/pr70729.cc: New test.

From-SVN: r237844
2016-06-29 10:16:43 +00:00
Thomas Schwinge
54d19c3b7f Improve diagnostic messages of "#pragma omp cancel", "#pragma omp cancellation point" parsing
gcc/c/
	* c-parser.c (c_parser_pragma) <PRAGMA_OMP_CANCELLATION_POINT>:
	Move pragma context checking into...
	(c_parser_omp_cancellation_point): ... here, and improve
	diagnostic messages.
	* c-typeck.c (c_finish_omp_cancel)
	(c_finish_omp_cancellation_point): Improve diagnostic messages.
	gcc/cp/
	* parser.c (cp_parser_pragma) <PRAGMA_OMP_CANCELLATION_POINT>:
	Move pragma context checking into...
	(cp_parser_omp_cancellation_point): ... here, and improve
	diagnostic messages.
	* semantics.c (finish_omp_cancel, finish_omp_cancellation_point):
	Improve diagnostic messages.
	gcc/testsuite/
	* c-c++-common/gomp/cancel-1.c: Extend.

From-SVN: r237843
2016-06-29 11:08:04 +02:00
Thomas Schwinge
f9d8d99478 Rename PRAGMA_OMP_DECLARE_REDUCTION to PRAGMA_OMP_DECLARE
gcc/c-family/
	* c-pragma.h (enum pragma_kind): Rename
	PRAGMA_OMP_DECLARE_REDUCTION to PRAGMA_OMP_DECLARE.  Adjust all
	users.

From-SVN: r237842
2016-06-29 11:07:52 +02:00
Jakub Jelinek
5f3cd7c3f3 re PR tree-optimization/71625 (missing strlen optimization on different array initialization style)
PR tree-optimization/71625
	* tree-ssa-strlen.c (get_addr_stridx): Add PTR argument.  Assume list
	is sorted by ascending list->offset.  If PTR is non-NULL and there is
	previous strinfo, call get_stridx_plus_constant.
	(get_stridx): Pass exp as second argument to get_addr_stridx.
	(addr_stridxptr): Add missing list = list->next, so that there can be
	more than one entries in the list.  Bump limit from 16 to 32.  Ensure
	the list is sorted by ascending list->offset.
	(get_stridx_plus_constant): Adjust so that it can be also called with
	ADDR_EXPR instead of SSA_NAME as PTR.
	(handle_char_store): Pass NULL_TREE as second argument to
	get_addr_stridx.

	* gcc.dg/strlenopt-28.c: New test.

From-SVN: r237841
2016-06-29 10:47:46 +02:00
Richard Biener
36d0d9be55 re PR tree-optimization/68961 (Test case gcc.target/powerpc/pr60203.c fails since r231674)
2016-06-29  Richard Biener  <rguenther@suse.de>

	PR rtl-optimization/68961
	* simplify-rtx.c (simplify_subreg): Handle VEC_CONCAT like CONCAT.

From-SVN: r237840
2016-06-29 07:52:35 +00:00
Richard Biener
4aa83879c9 re PR middle-end/71002 (-fstrict-aliasing breaks Boost's short string optimization implementation)
2016-06-29  Richard Biener  <rguenther@suse.de>

	PR middle-end/71002
	* alias.c (component_uses_parent_alias_set_from): Handle
	type punning through union accesses by using the union alias set.
	* gimple.c (gimple_get_alias_set): Remove union type punning case.

	c-family/
	* c-common.c (c_common_get_alias_set): Remove union type punning case.
	
	fortran/
	* f95-lang.c (LANG_HOOKS_GET_ALIAS_SET): Remove (un-)define.
	(gfc_get_alias_set): Remove.

	* g++.dg/torture/pr71002.C: Adjust testcase.

From-SVN: r237839
2016-06-29 07:30:31 +00:00
Richard Biener
3608829995 match.pd ((T)(T2)x -> (T)x): Remove restriction on final precision not matching mode precision.
2016-07-29  Richard Biener  <rguenther@suse.de>

	* match.pd ((T)(T2)x -> (T)x): Remove restriction on final
	precision not matching mode precision.

From-SVN: r237838
2016-06-29 07:17:57 +00:00
John David Anglin
c0587ee5de pa.md (call_symref_64bit_post_reload): Don't call pa_output_arg_descriptor.
* config/pa/pa.md (call_symref_64bit_post_reload): Don't call
	pa_output_arg_descriptor.
	(call_val_symref_64bit_post_reload): Likewise.
	(call_val_powf_64bit_post_reload): Likewise.
	(sibcall_internal_symref_64bit): Likewise.
	(sibcall_value_internal_symref_64bit): Likewise.

From-SVN: r237837
2016-06-29 00:26:54 +00:00
GCC Administrator
12e0359817 Daily bump.
From-SVN: r237836
2016-06-29 00:16:18 +00:00
Jakub Jelinek
152ef73195 re PR c/71685 (Segmentation fault in gcc when compiling the attached file.)
PR c/71685
	* c-typeck.c (c_build_qualified_type): Don't clear
	C_TYPE_INCOMPLETE_VARS for the main variant.

	* gcc.dg/pr71685.c: New test.

From-SVN: r237830
2016-06-29 00:30:04 +02:00
Martin Sebor
4378d117ec PR c/71552 - Confusing error for incorrect struct initialization
gcc/c/ChangeLog:

	PR c/71552
	* c-typeck.c (output_init_element): Diagnose incompatible types
	before non-constant initializers.

gcc/testsuite/ChangeLog:

	PR c/71552
	* gcc.dg/init-bad-9.c: New test.

From-SVN: r237829
2016-06-28 14:09:36 -06:00
Bill Schmidt
d41dc215ce abs128-1.c: Require VSX.
2016-06-28  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* gcc.target/powerpc/abs128-1.c: Require VSX.
	* gcc.target/powerpc/copysign128-1.c: Likewise.
	* gcc.target/powerpc/inf128-1.c: Likewise.
	* gcc.target/powerpc/nan128-1.c: Likewise.

From-SVN: r237828
2016-06-28 20:08:23 +00:00
Jakub Jelinek
6a20b538f2 re PR middle-end/71626 (ICE at -O1 and above on x86_64-linux-gnu (in output_constant_pool_2, at varasm.c:3837))
PR middle-end/71626
	* config/i386/i386.c (ix86_expand_vector_move): For SUBREG of
	a constant, force its SUBREG_REG into memory or register instead
	of whole op1.

	* gcc.c-torture/execute/pr71626-1.c: New test.
	* gcc.c-torture/execute/pr71626-2.c: New test.

From-SVN: r237826
2016-06-28 20:31:42 +02:00
Pitchumani Sivanupandi
0f0f4f914d re PR target/58655 ([avr] -mfract-convert-truncate not documented)
PR target/58655
	* config/avr/avr.opt (-mfract-convert-truncate): Update description.
	* doc/invoke.texi (AVR Options): Document it.

From-SVN: r237825
2016-06-28 20:56:37 +03:00
Walter Lee
ba6be749f9 linux.h: Do not include arch/icache.h
gcc/ChangeLog
	* config/tilegx/linux.h: Do not include arch/icache.h
	(CLEAR_INSN_CACHE): Provide inlined definition directly.
	* config/tilepro/linux.h: Do not include arch/icache.h
	(CLEAR_INSN_CACHE): Provide inlined definition directly.

libgcc/ChangeLog
	* config/tilepro/atomic.h: Do not include arch/spr_def.h and
	asm/unistd.h.
	(SPR_CMPEXCH_VALUE): Define for tilegx.
	(__NR_FAST_cmpxchg): Define for tilepro.
	(__NR_FAST_atomic_update): Define for tilepro.
	(__NR_FAST_cmpxchg64): Define for tilepro.

From-SVN: r237824
2016-06-28 16:20:58 +00:00
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