Commit Graph

146269 Commits

Author SHA1 Message Date
Richard Biener 3072d4ea29 re PR tree-optimization/71261 (Trunk GCC hangs on knl and broadwell targets)
2016-05-25  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/71261
	* tree-if-conv.c (ifcvt_split_def_stmt): Walk uses on the
	interesting stmt instead of immediate uses when looking
	for the use operand to replace.

	* c-c++-common/torture/pr71261.c: New testcase.

From-SVN: r236701
2016-05-25 11:49:03 +00:00
Martin Liska a86f2f6f94 Fix dump output typo
* ipa-inline.c (edge_badness): Use 'w/' instead of 'w'.

From-SVN: r236700
2016-05-25 11:17:23 +00:00
Richard Biener e412ece4ce re PR tree-optimization/71264 (ICE in convert_move)
2016-05-25  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/71264
	* tree-vect-stmts.c (vect_init_vector): Properly deal with
	vector type val.

	* gcc.dg/vect/pr71264.c: New testcase.

From-SVN: r236699
2016-05-25 10:57:53 +00:00
Paolo Carlini b9e551ad26 re PR c++/55992 (constexpr static member function not recognised in templated using statement)
2016-05-25  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/55992
	* g++.dg/cpp0x/alias-decl-53.C: New.
	* g++.dg/cpp0x/alias-decl-54.C: Likewise.

From-SVN: r236698
2016-05-25 09:50:46 +00:00
Jonathan Wakely 834f4c4355 Remove _GLIBCXX14_USE_CONSTEXPR
* include/bits/c++config (_GLIBCXX14_USE_CONSTEXPR): Remove it.
	* include/bits/hashtable_policy.h (_Power2_rehash_policy::_M_next_bkt):
	Remove const qualification on function. Replace
	_GLIBCXX14_USE_CONSTEXPR on automatic variables with const.
	(_Power2_rehash_policy::_M_need_rehash): Remove const qualification.
	(_Power2_rehash_policy::_M_next_bkt): Remove mutable specifier.

From-SVN: r236697
2016-05-25 10:36:28 +01:00
Martin Liska 6aa1abe5f2 re PR tree-optimization/71239 (ICE in operand_equal_p (fold-const.c:2769))
Fix PR tree-optimization/71239.

	* g++.dg/pr71239.C: New test.
	PR tree-optimization/71239
	* tree.c (array_at_struct_end_p): Do not call operand_equal_p
	if DECL_SIZE is NULL.

From-SVN: r236696
2016-05-25 09:10:16 +00:00
Richard Biener 6ca8e33c66 timevar.def (TV_TREE_LOOP_IFCVT): Add.
2016-05-25  Richard Biener  <rguenther@suse.de>

	* timevar.def (TV_TREE_LOOP_IFCVT): Add.
	* tree-if-conv.c (pass_data_if_conversion): Use it.

From-SVN: r236695
2016-05-25 08:52:22 +00:00
Paolo Carlini 021fad8626 lambda-generic-static1.C: Use target c++14.
2016-05-24  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/cpp1y/lambda-generic-static1.C: Use target c++14.
	* g++.dg/cpp1y/lambda-generic-static2.C: Likewise.

From-SVN: r236694
2016-05-25 08:49:22 +00:00
Richard Biener 842d162e57 pr58135.c: Rename to ...
2016-05-25  Richard Biener  <rguenther@suse.de>

	* gcc/testsuite/gcc.dg/vect/pr58135.c: Rename to ...
	* gcc/testsuite/gcc.dg/vect/bb-slp-pr58135.c: ... this.

From-SVN: r236693
2016-05-25 08:21:35 +00:00
Bernd Edlinger 65c74eb276 cgraph.c (cgraph_node::get_availability): Fix typo in comment.
* cgraph.c (cgraph_node::get_availability): Fix typo in comment.
* symtab.c (symtab_node::binds_to_current_def_p): Likewise.
* varpool.c (varpool_node::get_availability): Likewise.

From-SVN: r236690
2016-05-25 07:38:32 +00:00
GCC Administrator 568da5e6e1 Daily bump.
From-SVN: r236689
2016-05-25 00:16:19 +00:00
Marek Polacek f184a36cb5 * g++.dg/pr65295.C: Use target c++14.
From-SVN: r236683
2016-05-24 23:41:06 +00:00
Michael Meissner c3eaf15aae altivec.md (VNEG iterator): New iterator for VNEGW/VNEGD instructions.
[gcc]
2016-05-24  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* config/rs6000/altivec.md (VNEG iterator): New iterator for
	VNEGW/VNEGD instructions.
	(p9_neg<mode>2): New insns for ISA 3.0 VNEGW/VNEGD.
	(neg<mode>2): Add expander for V2DImode added in ISA 2.06, and
	support for ISA 3.0 VNEGW/VNEGD instructions.

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

	* gcc.target/powerpc/p9-vneg.c: New test for ISA 3.0 VNEGW/VNEGD
	instructions.

From-SVN: r236679
2016-05-24 23:19:08 +00:00
Cesar Philippidis e46c777050 c-parser.c (c_parser_oacc_declare): Add support for GOMP_MAP_FIRSTPRIVATE_POINTER.
gcc/c/
	* c-parser.c (c_parser_oacc_declare): Add support for
	GOMP_MAP_FIRSTPRIVATE_POINTER.
	* c-typeck.c (handle_omp_array_sections_1): Replace bool is_omp
	argument with enum c_omp_region_type ort.
	(handle_omp_array_sections): Likewise.  Update call to
	handle_omp_array_sections_1.
	(c_finish_omp_clauses): Add specific errors and warning messages for
	OpenACC.  Use firsrtprivate pointers for OpenACC subarrays.  Update
	call to handle_omp_array_sections.

	gcc/cp/
	* parser.c (cp_parser_oacc_declare): Add support for
	GOMP_MAP_FIRSTPRIVATE_POINTER.
	* semantics.c (handle_omp_array_sections_1): Replace bool is_omp
	argument with enum c_omp_region_type ort.  Don't privatize OpenACC
	non-static members.
	(handle_omp_array_sections): Replace bool is_omp argument with enum
	c_omp_region_type ort.  Update call to handle_omp_array_sections_1.
	(finish_omp_clauses): Add specific errors and warning messages for
	OpenACC.  Use firsrtprivate pointers for OpenACC subarrays.  Update
	call to handle_omp_array_sections.

	gcc/
	* gimplify.c (omp_notice_variable): Use zero-length arrays for data
	pointers inside OACC_DATA regions.
	(gimplify_scan_omp_clauses): Prune firstprivate clause associated
	with OACC_DATA, OACC_ENTER_DATA and OACC_EXIT data regions.
	(gimplify_adjust_omp_clauses): Fix typo in comment.

	gcc/testsuite/
	* c-c++-common/goacc/data-clause-duplicate-1.c: Adjust test.
	* c-c++-common/goacc/deviceptr-1.c: Likewise.
	* c-c++-common/goacc/kernels-alias-3.c: Likewise.
	* c-c++-common/goacc/kernels-alias-4.c: Likewise.
	* c-c++-common/goacc/kernels-alias-5.c: Likewise.
	* c-c++-common/goacc/kernels-alias-8.c: Likewise.
	* c-c++-common/goacc/kernels-alias-ipa-pta-3.c: Likewise.
	* c-c++-common/goacc/pcopy.c: Likewise.
	* c-c++-common/goacc/pcopyin.c: Likewise.
	* c-c++-common/goacc/pcopyout.c: Likewise.
	* c-c++-common/goacc/pcreate.c: Likewise.
	* c-c++-common/goacc/pr70688.c: New test.
	* c-c++-common/goacc/present-1.c: Adjust test.
	* c-c++-common/goacc/reduction-5.c: Likewise.
	* g++.dg/goacc/data-1.C: New test.

	libgomp/
	* oacc-mem.c (acc_malloc): Update handling of shared-memory targets.
	(acc_free): Likewise.
	(acc_memcpy_to_device): Likewise.
	(acc_memcpy_from_device): Likewise.
	(acc_deviceptr): Likewise.
	(acc_hostptr): Likewise.
	(acc_is_present): Likewise.
	(acc_map_data): Likewise.
	(acc_unmap_data): Likewise.
	(present_create_copy): Likewise.
	(delete_copyout): Likewise.
	(update_dev_host): Likewise.
	* testsuite/libgomp.oacc-c-c++-common/asyncwait-1.c: Remove xfail.
	* testsuite/libgomp.oacc-c-c++-common/data-2-lib.c: New test.
	* testsuite/libgomp.oacc-c-c++-common/data-2.c: Adjust test.
	* testsuite/libgomp.oacc-c-c++-common/data-3.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/enter_exit-lib.c: New test.
	* testsuite/libgomp.oacc-c-c++-common/lib-13.c: Adjust test so that
	it only runs on nvptx targets.
	* testsuite/libgomp.oacc-c-c++-common/lib-14.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-15.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-16.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-17.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-18.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-20.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-21.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-22.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-23.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-24.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-25.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-28.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-29.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-30.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-34.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-42.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-43.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-44.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-47.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-48.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-52.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-53.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-54.c: Likewise.

From-SVN: r236678
2016-05-24 15:54:21 -07:00
Michael Meissner 4bfc9db7e6 altivec.md (VParity): New mode iterator for vector parity built-in functions.
[gcc]
2016-05-24  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* config/rs6000/altivec.md (VParity): New mode iterator for vector
	parity built-in functions.
	(p9v_ctz<mode>2): Add support for ISA 3.0 vector count trailing
	zeros.
	(p9v_parity<mode>2): Likewise.
	* config/rs6000/vector.md (VEC_IP): New mode iterator for vector
	parity.
	(ctz<mode>2): ISA 3.0 expander for vector count trailing zeros.
	(parity<mode>2): ISA 3.0 expander for vector parity.
	* config/rs6000/rs6000-builtin.def (BU_P9_MISC_1): New macros for
	power9 built-ins.
	(BU_P9_64BIT_MISC_0): Likewise.
	(BU_P9_MISC_0): Likewise.
	(BU_P9V_AV_1): Likewise.
	(BU_P9V_AV_2): Likewise.
	(BU_P9V_AV_3): Likewise.
	(BU_P9V_AV_P): Likewise.
	(BU_P9V_VSX_1): Likewise.
	(BU_P9V_OVERLOAD_1): Likewise.
	(BU_P9V_OVERLOAD_2): Likewise.
	(BU_P9V_OVERLOAD_3): Likewise.
	(VCTZB): Add vector count trailing zeros support.
	(VCTZH): Likewise.
	(VCTZW): Likewise.
	(VCTZD): Likewise.
	(VPRTYBD): Add vector parity support.
	(VPRTYBQ): Likewise.
	(VPRTYBW): Likewise.
	(VCTZ): Add overloaded vector count trailing zeros support.
	(VPRTYB): Add overloaded vector parity support.
	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
	overloaded vector count trailing zeros and parity instructions.
	* config/rs6000/rs6000.md (wd mode attribute): Add V1TI and TI for
	vector parity support.
	* config/rs6000/altivec.h (vec_vctz): Add ISA 3.0 vector count
	trailing zeros support.
	(vec_cntlz): Likewise.
	(vec_vctzb): Likewise.
	(vec_vctzd): Likewise.
	(vec_vctzh): Likewise.
	(vec_vctzw): Likewise.
	(vec_vprtyb): Add ISA 3.0 vector parity support.
	(vec_vprtybd): Likewise.
	(vec_vprtybw): Likewise.
	(vec_vprtybq): Likewise.
	* doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
	the ISA 3.0 vector count trailing zeros and vector parity built-in
	functions.

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

	* gcc.target/powerpc/p9-vparity.c: New file to check ISA 3.0
	vector parity built-in functions.
	* gcc.target/powerpc/ctz-3.c: New file to check ISA 3.0 vector
	count trailing zeros automatic vectorization.
	* gcc.target/powerpc/ctz-4.c: New file to check ISA 3.0 vector
	count trailing zeros built-in functions.

From-SVN: r236677
2016-05-24 22:45:45 +00:00
Paolo Carlini fe3473a686 lambda-generic-static1.C: Use target c++14.
2016-05-24  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/cpp1y/lambda-generic-static1.C: Use target c++14.
	* g++.dg/cpp1y/lambda-generic-static2.C: Likewise.

From-SVN: r236676
2016-05-24 22:38:00 +00:00
Kugan Vivekanandarajah 2bc145afaa tree-ssa-reassoc.c (sort_by_operand_rank): Skip checking gimple_bb when there is stmt_to_insert.
gcc/ChangeLog:

2016-05-24  Kugan Vivekanandarajah  <kuganv@linaro.org>

	* tree-ssa-reassoc.c (sort_by_operand_rank): Skip checking gimple_bb
	when there is stmt_to_insert.


gcc/testsuite/ChangeLog:

2016-05-24  Kugan Vivekanandarajah  <kuganv@linaro.org>

	* gcc.dg/tree-ssa/reassoc-44.c: New test.

From-SVN: r236673
2016-05-24 22:29:27 +00:00
Pat Haugen 26869fdb47 lhs-1.c: Fix testcase to avoid subreg changes.
* gcc.target/powerpc/lhs-1.c: Fix testcase to avoid subreg changes.

From-SVN: r236672
2016-05-24 22:24:16 +00:00
Paolo Carlini b2dc9c3b20 re PR c++/50436 (Crash or hang on invalid template code)
2016-05-24  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/50436
	* g++.dg/template/crash123.C: New.
	* g++.dg/template/crash124.C: Likewise.

From-SVN: r236671
2016-05-24 21:32:29 +00:00
Jason Merrill 66f90a1761 PR c++/70584 - don't force indirection to an rvalue
* cp-gimplify.c (cp_fold_maybe_rvalue): Loop in case cp_fold
	returns a decl.
	(cp_fold) [INDIRECT_REF]: Don't fold to an rvalue.

From-SVN: r236670
2016-05-24 17:06:53 -04:00
François Dumont 732eb07625 c++config (_GLIBCXX14_USE_CONSTEXPR): New.
2016-05-24  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/c++config (_GLIBCXX14_USE_CONSTEXPR): New.
	* include/bits/hashtable_policy.h
	(_Prime_rehash_policy::__has_load_factor): New. Mark rehash policy
	having load factor management.
	(_Mask_range_hashing): New.
	(__clp2): New.
	(_Power2_rehash_policy): New.
	(_Inserts<>): Remove last template parameter, _Unique_keys, so that
	partial specializations only depend on whether iterators are constant
	or not.
	* testsuite/23_containers/unordered_set/hash_policy/26132.cc: Adapt to
	test new hash policy.
	* testsuite/23_containers/unordered_set/hash_policy/load_factor.cc:
	Likewise.
	* testsuite/23_containers/unordered_set/hash_policy/rehash.cc:
	Likewise.
	* testsuite/23_containers/unordered_set/insert/hash_policy.cc:
	Likewise.
	* testsuite/23_containers/unordered_set/max_load_factor/robustness.cc:
	Likewise.
	* testsuite/23_containers/unordered_set/hash_policy/power2_rehash.cc:
	New.
	* testsuite/performance/23_containers/insert/54075.cc: Add benchmark
	using the new hash policy.
	* testsuite/performance/23_containers/insert_erase/41975.cc: Likewise.

From-SVN: r236669
2016-05-24 20:55:57 +00:00
Martin Sebor f65e97fd3d PR c++/71147 - [6 Regression] Flexible array member wrongly rejected in template
gcc/ChangeLog:
2016-05-24  Martin Sebor  <msebor@redhat.com>

	PR c++/71147
	* gcc/tree.h (complete_or_array_type_p): New inline function.

gcc/testsuite/ChangeLog:
2016-05-24  Martin Sebor  <msebor@redhat.com>

	PR c++/71147
	* g++.dg/ext/flexary16.C: New test.

gcc/cp/ChangeLog:
2016-05-24  Martin Sebor  <msebor@redhat.com>

	PR c++/71147
	* decl.c (layout_var_decl, grokdeclarator): Use complete_or_array_type_p.
	* pt.c (instantiate_class_template_1): Try to complete the element
	type of a flexible array member.
	(can_complete_type_without_circularity): Handle arrays of unknown bound.
	* typeck.c (complete_type): Also complete the type of the elements of
	arrays with an unspecified bound.

From-SVN: r236664
2016-05-24 14:29:36 -06:00
Jakub Jelinek 8e0dc0549a i386.h (TARGET_AVOID_4BYTE_PREFIXES): Define.
* config/i386/i386.h (TARGET_AVOID_4BYTE_PREFIXES): Define.
	* config/i386/constraints.md (Yr): Test TARGET_AVOID_4BYTE_PREFIXES
	rather than X86_TUNE_AVOID_4BYTE_PREFIXES.

From-SVN: r236662
2016-05-24 21:12:42 +02:00
Jakub Jelinek a0caac985d sse.md (<sse4_1>_round<ssemodesuffix><avxsizesuffix>): Limit 1st alternative to noavx isa...
* config/i386/sse.md (<sse4_1>_round<ssemodesuffix><avxsizesuffix>):
	Limit 1st alternative to noavx isa, split 2nd alternative into one
	noavx and one avx alternative, use *x and Bm in the former and
	x and m in the latter.

From-SVN: r236661
2016-05-24 21:12:06 +02:00
Jakub Jelinek 7733939d25 sse.md (vec_set<mode>_0): Use sse4_noavx isa instead of sse4 for the first alternative...
* config/i386/sse.md (vec_set<mode>_0): Use sse4_noavx isa instead
	of sse4 for the first alternative, drop %v from the template
	and d operand modifier.  Split second alternative into one sse4_noavx
	and one avx alternative, use *x instead of *v in the former and v
	instead of *v in the latter.
	(*sse4_1_extractps): Use noavx isa instead of * for the first
	alternative, drop %v from the template.  Split second alternative into
	one noavx and one avx alternative, use *x instead of *v in the
	former and v instead of *v in the latter.
	(<vi8_sse4_1_avx2_avx512>_movntdqa): Guard the first 2 alternatives
	with noavx and the last one with avx.
	(sse4_1_phminposuw): Guard first alternative with noavx isa,
	split the second one into one noavx and one avx alternative,
	use *x and Bm in the former and x and m in the latter one.
	(<sse4_1>_ptest<mode>): Use noavx instead of * for the first two
	alternatives.

From-SVN: r236660
2016-05-24 21:11:33 +02:00
Jakub Jelinek 520c86db4c sse.md (sse4_1_<code>v8qiv8hi2<mask_name>): Limit first two alternatives to noavx...
* config/i386/sse.md (sse4_1_<code>v8qiv8hi2<mask_name>): Limit
	first two alternatives to noavx, use *x instead of *v in the second
	one, add avx alternative without *.
	(sse4_1_<code>v4qiv4si2<mask_name>, sse4_1_<code>v4hiv4si2<mask_name>,
	sse4_1_<code>v2qiv2di2<mask_name>, sse4_1_<code>v2hiv2di2<mask_name>,
	sse4_1_<code>v2siv2di2<mask_name>): Likewise.

From-SVN: r236659
2016-05-24 21:10:55 +02:00
Ilya Verbin a6f5ac7fd4 avx-ceil-sfix-2-vec.c: Define __NO_MATH_INLINES before math.h is included.
* gcc.target/i386/avx-ceil-sfix-2-vec.c: Define __NO_MATH_INLINES before
	math.h is included.
	* gcc.target/i386/avx-floor-sfix-2-vec.c: Likewise.
	* gcc.target/i386/avx-rint-sfix-2-vec.c: Likewise.
	* gcc.target/i386/avx-round-sfix-2-vec.c: Likewise.
	* gcc.target/i386/avx512f-ceil-sfix-vec-1.c: Likewise.
	* gcc.target/i386/avx512f-floor-sfix-vec-1.c: Likewise.
	* gcc.target/i386/sse4_1-ceil-sfix-vec.c: Likewise.
	* gcc.target/i386/sse4_1-ceil-vec.c: Likewise.
	* gcc.target/i386/sse4_1-ceilf-sfix-vec.c: Likewise.
	* gcc.target/i386/sse4_1-ceilf-vec.c: Likewise.
	* gcc.target/i386/sse4_1-floor-sfix-vec.c: Likewise.
	* gcc.target/i386/sse4_1-floor-vec.c: Likewise.
	* gcc.target/i386/sse4_1-rint-sfix-vec.c: Likewise.
	* gcc.target/i386/sse4_1-rint-vec.c: Likewise.
	* gcc.target/i386/sse4_1-rintf-sfix-vec.c: Likewise.
	* gcc.target/i386/sse4_1-rintf-vec.c: Likewise.
	* gcc.target/i386/sse4_1-round-sfix-vec.c: Likewise.
	* gcc.target/i386/sse4_1-round-vec.c: Likewise.
	* gcc.target/i386/sse4_1-roundf-sfix-vec.c: Likewise.
	* gcc.target/i386/sse4_1-roundf-vec.c: Likewise.
	* gcc.target/i386/sse4_1-trunc-vec.c: Likewise.
	* gcc.target/i386/sse4_1-truncf-vec.c: Likewise.
	* gcc.target/i386/sse4_1-floorf-sfix-vec.c: Likewise.
	* gcc.target/i386/sse4_1-floorf-vec.c: Likewise.

From-SVN: r236656
2016-05-24 17:35:17 +00:00
Michael Meissner 27bad55828 p9-vpermr.c: New test for ISA 3.0 vpermr support.
gcc/testsuite/ChangeLog:

2016-05-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
	    Kelvin Nilsen  <kelvin@gcc.gnu.org>

	* gcc.target/powerpc/p9-vpermr.c: New test for ISA 3.0 vpermr
	support.



Co-Authored-By: Kelvin Nilsen <kelvin@gcc.gnu.org>

From-SVN: r236655
2016-05-24 17:21:18 +00:00
Jeff Law 081fdda62b tree-ssa-threadbackwards.c (convert_and_register_jump_thread_path): New function, extracted from...
* tree-ssa-threadbackwards.c (convert_and_register_jump_thread_path):
	New function, extracted from...
	(fsm_find_control_statement_thread_paths): Here.  Use the new function.
	Allow simple copies and constant initializations in the SSA chain.

From-SVN: r236653
2016-05-24 10:57:48 -06:00
Paolo Carlini 72f382fbb8 re PR c++/69872 (-Wnarrowing note without warning/errror)
/cp
2016-05-24  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/69872
	* typeck2.c (check_narrowing): Check pedwarn return value.

/testsuite
2016-05-24  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/69872
	* g++.dg/warn/Wno-narrowing1.C: New.

From-SVN: r236651
2016-05-24 16:41:39 +00:00
Marek Polacek ef2ec9d9a2 re PR middle-end/71249 (-Wswitch-unreachable false positive for a compound statement containing a used label)
PR c/71249
	* gimplify.c (gimplify_switch_expr): Look into the innermost lexical
	scope.

	* c-c++-common/Wswitch-unreachable-2.c: New test.

From-SVN: r236649
2016-05-24 16:22:31 +00:00
Jakub Jelinek 7adb26f202 re PR c++/71257 (OpenMP declare simd linear with ref modifier doesn't accept references to non-integer/non-pointer)
PR c++/71257
	* tree-vect-stmts.c (vectorizable_simd_clone_call): Handle
	SIMD_CLONE_ARG_TYPE_LINEAR_REF_CONSTANT_STEP like
	SIMD_CLONE_ARG_TYPE_LINEAR_CONSTANT_STEP.  Add
	SIMD_CLONE_ARG_TYPE_LINEAR_VAL_CONSTANT_STEP and
	SIMD_CLONE_ARG_TYPE_LINEAR_UVAL_CONSTANT_STEP cases explicitly.

	* semantics.c (finish_omp_clauses) <case OMP_CLAUSE_LINEAR>:
	For OMP_CLAUSE_LINEAR_REF don't require type to be
	integral or pointer.

	* g++.dg/vect/simd-clone-6.cc: New test.
	* g++.dg/gomp/declare-simd-6.C: New test.

From-SVN: r236648
2016-05-24 18:19:43 +02:00
Jakub Jelinek e90434e3aa re PR middle-end/70434 (adding an extraneous cast to vector type results in inferior code)
PR middle-end/70434
	PR c/69504
	* c-c++-common/vector-subscript-5.c (foo): Move ; out of the ifdef.

From-SVN: r236647
2016-05-24 18:14:34 +02:00
Jonathan Wakely 8be062c6da Add priority_queue::value_compare (LWG 2684)
* include/bits/stl_queue.h (priority_queue::value_compare): Define.

From-SVN: r236646
2016-05-24 16:59:05 +01:00
Uros Bizjak 4b63ff5894 i386.c (ix86_preferred_reload_class): Use IS_STACK_MODE, INTEGER_CLASS_P, FLOAT_CLASS_P and Q_CLASS_P macros.
* config/i386/i386.c (ix86_preferred_reload_class): Use
	IS_STACK_MODE, INTEGER_CLASS_P, FLOAT_CLASS_P and Q_CLASS_P macros.

From-SVN: r236645
2016-05-24 17:42:17 +02:00
Richard Biener b556ea3b46 re PR tree-optimization/71240 (ICE on valid code at -O2 and above on x86_64-linux-gnu: verify_gimple failed)
2016-05-24  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/71240
	* tree-ssa-math-opts.c (init_symbolic_number): Verify the source
	has integral type.

	* gcc.dg/optimize-bswapsi-5.c: New testcase.

From-SVN: r236644
2016-05-24 14:40:35 +00:00
Richard Biener e5328f5dc2 re PR tree-optimization/71230 (ICE : in zero_one_operation, at tree-ssa-reassoc.c:1230)
2016-05-24  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/71230
	* tree-ssa-reassoc.c (zero_one_operation): Handle negate special ops.

	* gcc.dg/torture/pr71230.c: New testcase.
	* g++.dg/torture/pr71230.C: Likewise.

From-SVN: r236643
2016-05-24 14:35:36 +00:00
Richard Sandiford fce57248c8 Clean up PURE_SLP_STMT handling
The vectorizable_* routines had many instances of:

        slp_node || PURE_SLP_STMT (stmt_info)

which gives the misleading impression that we can have
!slp_node && PURE_SLP_STMT (stmt_info).  In this context
it's really enough to test slp_node on its own.

There are three cases:

      loop vectorisation only:
        vectorizable_foo called only with !slp_node

      pure SLP:
        vectorizable_foo called only with slp_node

      hybrid SLP:
        (e.g. a vector that's used in SLP statements and also in a reduction)
        - vectorizable_foo called once with slp_node for the SLP uses.
        - vectorizable_foo called once with !slp_node for the non-SLP uses.

Hybrid SLP isn't possible for stores, so I added an explicit assert
for that.

I also made vectorizable_comparison static, to make it obvious that
no other callers outside tree-vect-stmts.c could use it with the
!slp && PURE_SLP_STMT combination.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
	* tree-vectorizer.h (vectorizable_comparison): Delete.
	* tree-vect-loop.c (vectorizable_reduction): Remove redundant
	PURE_SLP_STMT check.
	* tree-vect-stmts.c (vectorizable_call): Likewise.
	(vectorizable_simd_clone_call): Likewise.
	(vectorizable_conversion): Likewise.
	(vectorizable_assignment): Likewise.
	(vectorizable_shift): Likewise.
	(vectorizable_operation): Likewise.
	(vectorizable_load): Likewise.
	(vectorizable_condition): Likewise.
	(vectorizable_store): Likewise.  Assert that we don't have
	hybrid SLP.
	(vectorizable_comparison): Make static.  Remove redundant
	PURE_SLP_STMT check.
	(vect_transform_stmt): Assert that we always have an slp_node
	if PURE_SLP_STMT.

From-SVN: r236642
2016-05-24 14:05:20 +00:00
Kyrylo Tkachov d1fb69400e [ARM][4/4] Simplify checks for CONST_INT_P and comparison against 1/0
* config/arm/neon.md (ashldi3_neon):  Replace comparison of INTVAL of
	operands[2] against 1 with comparison against CONST1_RTX.
	(<shift>di3_neon): Likewise.
	* config/arm/predicates.md (const0_operand): Replace with comparison
	against CONST0_RTX.

From-SVN: r236641
2016-05-24 14:04:03 +00:00
Kyrylo Tkachov dec21bbc97 [ARM][3/4] Cleanup casts from INTVAL to [unsigned] HOST_WIDE_INT
* config/arm/arm.md (ashldi3): Replace comparison of INTVAL of
	operands[2] against 1 with comparison against CONST1_RTX.
	(ashrdi3): Likewise.
	(lshrdi3): Likewise.
	(ashlsi3): Replace cast of INTVAL to unsigned HOST_WIDE_INT with
	UINTVAL.
	(ashrsi3): Likewise.
	(lshrsi3): Likewise.
	(rotrsi3): Likewise.
	(define_split above *compareqi_eq0): Likewise.
	(define_split above "prologue"): Likewise.
	* config/arm/arm.c (thumb1_size_rtx_costs): Likewise.
	* config/arm/predicates.md (shift_operator): Likewise.
	(shift_nomul_operator): Likewise.
	(sat_shift_operator): Likewise.
	(thumb1_cmp_operand): Likewise.
	(const_neon_scalar_shift_amount_operand): Replace manual range
	check with IN_RANGE.
	* config/arm/thumb1.md (define_peephole2 above *thumb_subdi3):
	Replace cast of INTVAL to unsigned HOST_WIDE_INT with UINTVAL.

From-SVN: r236640
2016-05-24 14:00:39 +00:00
Thomas Schwinge a04e69c0b1 Tighten syntax checking for OpenACC routine construct in C
gcc/c/
	* c-parser.c (c_parser_oacc_routine): Tighten syntax checks.
	gcc/testsuite/
	* c-c++-common/goacc/routine-5.c: Add tests.
	* g++.dg/goacc/routine-2.C: Remove duplicate tests.
	* gfortran.dg/goacc/routine-6.f90: Add tests.

From-SVN: r236639
2016-05-24 16:00:39 +02:00
Kyrylo Tkachov d4b5c77d36 [ARM][2/4] Replace casts of 1 to HOST_WIDE_INT by HOST_WIDE_INT_1 and HOST_WIDE_INT_1U
* config/arm/arm.md (andsi3): Replace cast of 1 to HOST_WIDE_INT
	with HOST_WIDE_INT_1.
	(insv): Likewise.
	* config/arm/arm.c (optimal_immediate_sequence): Replace cast of
	1 to unsigned HOST_WIDE_INT with HOST_WIDE_INT_1U.
	(arm_canonicalize_comparison): Likewise.
	(thumb1_rtx_costs): Replace cast of 1 to HOST_WIDE_INT with
	HOST_WIDE_INT_1.
	(thumb1_size_rtx_costs): Likewise.
	(vfp_const_double_index): Replace cast of 1 to unsigned
	HOST_WIDE_INT with HOST_WIDE_INT_1U.
	(get_jump_table_size): Replace cast of 1 to HOST_WIDE_INT with
	HOST_WIDE_INT_1.
	(arm_asan_shadow_offset): Replace cast of 1 to unsigned
	HOST_WIDE_INT with HOST_WIDE_INT_1U.
	* config/arm/neon.md (vec_set<mode>): Replace cast of 1 to
	HOST_WIDE_INT with HOST_WIDE_INT_1.

From-SVN: r236638
2016-05-24 13:55:19 +00:00
Marek Polacek abd3a68c13 tree-cfg.h (should_remove_lhs_p): New predicate.
* tree-cfg.h (should_remove_lhs_p): New predicate.
	* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Use it.
	* gimplify.c (gimplify_modify_expr): Likewise.
	* tree-cfg.c (verify_gimple_call): Likewise.
	* tree-cfgcleanup.c (fixup_noreturn_call): Likewise.
	* gimple-fold.c: Include "tree-cfg.h".
	(gimple_fold_call): Use should_remove_lhs_p.

From-SVN: r236637
2016-05-24 13:34:37 +00:00
Richard Biener 30fd297774 re PR tree-optimization/71253 (ICE during loop distribution w/ -O2 -ftree-loop-distribution)
2016-05-24  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/71253
	* cfganal.h (control_dependences): Make robust against edge
	and BB removal.
	(control_dependences::control_dependences): Remove edge_list argument.
	(control_dependences::get_edge): Remove.
	(control_dependences::get_edge_src): Add.
	(control_dependences::get_edge_dest): Likewise.
	(control_dependences::m_el): Make a vector of edge src/dest index.
	* cfganal.c (control_dependences::find_control_dependence): Adjust.
	(control_dependences::control_dependences): Likewise.
	(control_dependences::~control_dependence): Likewise.
	(control_dependences::get_edge): Remove.
	(control_dependences::get_edge_src): Add.
	(control_dependences::get_edge_dest): Likewise.
	* tree-ssa-dce.c (mark_control_dependent_edges_necessary): Use
	get_edge_src.
	(perform_tree_ssa_dce): Adjust.
	* tree-loop-distribution.c (create_edge_for_control_dependence): Use
	get_edge_src.
	(pass_loop_distribution::execute): Adjust.  Do loop destroying
	conditional on changed.

	* gcc.dg/torture/pr71253.c: New testcase.

From-SVN: r236636
2016-05-24 12:40:01 +00:00
Kyrylo Tkachov 37923729c5 [ARM] PR target/69857 Remove bogus early return false; in gen_operands_ldrd_strd
PR target/69857
	* config/arm/arm.c (gen_operands_ldrd_strd): Remove bogus early
	return.  Reindent transformation comment and mention the ARM state
	behavior.

From-SVN: r236635
2016-05-24 11:32:35 +00:00
Kugan Vivekanandarajah ca6f60bc49 re PR tree-optimization/71252 (ICE: verify_ssa failed : definition in block 7 does not dominate use in block 6)
gcc/testsuite/ChangeLog:

2016-05-24  Kugan Vivekanandarajah  <kuganv@linaro.org>

	PR middle-end/71252
	* gfortran.dg/pr71252.f90: New test.

gcc/ChangeLog:

2016-05-24  Kugan Vivekanandarajah  <kuganv@linaro.org>

	PR middle-end/71252
	* tree-ssa-reassoc.c (rewrite_expr_tree_parallel): Add stmt_to_insert after
	build_and_add_sum creates new use stmt.

From-SVN: r236634
2016-05-24 10:50:01 +00:00
Richard Sandiford d3465d72ba Avoid unnecessary peeling for gaps with LD3
vectorizable_load forces peeling for gaps if the vectorisation factor
is not a multiple of the group size, since in that case we'd normally load
beyond the original scalar accesses but drop the excess elements as part
of a following permute:

          if (loop_vinfo
              && ! STMT_VINFO_STRIDED_P (stmt_info)
              && (GROUP_GAP (vinfo_for_stmt (first_stmt)) != 0
                  || (!slp && vf % GROUP_SIZE (vinfo_for_stmt (first_stmt)) != 0)))

This isn't necessary for LOAD_LANES though, since it loads only the
data needed and does the permute itself.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
	* tree-vect-stmts.c (vectorizable_load): Reorder checks so that
	load_lanes/grouped_load classification comes first.  Don't check
	whether the vectorization factor is a multiple of the group size
	for load_lanes.

gcc/testsuite/
	* gcc.dg/vect/vect-load-lanes-peeling-1.c: New test.

From-SVN: r236632
2016-05-24 10:15:36 +00:00
Richard Sandiford 836dbb1a27 Fix GROUP_GAP for single-element interleaving
vectorizable_load had a curious "force_peeling" variable, with no
comment explaining why we need it for single-element interleaving
but not for other cases.  I think it's simply because we weren't
initialising the GROUP_GAP correctly for single loads.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
	* tree-vect-data-refs.c (vect_analyze_group_access_1): Set
	GROUP_GAP for single-element interleaving.
	* tree-vect-stmts.c (vectorizable_load): Remove force_peeling
	variable.

From-SVN: r236631
2016-05-24 10:13:35 +00:00
Richard Biener f17a223de8 re PR middle-end/70434 (adding an extraneous cast to vector type results in inferior code)
2016-05-24  Richard Biener  <rguenther@suse.de>

	PR middle-end/70434
	PR c/69504
	c-family/
	* c-common.h (convert_vector_to_pointer_for_subscript): Rename to ...
	(convert_vector_to_array_for_subscript): ... this.
	* c-common.c (convert_vector_to_pointer_for_subscript): Use a
	VIEW_CONVERT_EXPR to an array type.  Rename to ...
	(convert_vector_to_array_for_subscript): ... this.

	cp/
	* expr.c (mark_exp_read): Handle VIEW_CONVERT_EXPR.
	* constexpr.c (cxx_eval_array_reference): Handle indexed
	vectors.
	* typeck.c (cp_build_array_ref): Adjust.

	c/
	* c-typeck.c (build_array_ref): Do not complain about indexing
	non-lvalue vectors.  Adjust for function name change.

	* tree-ssa.c (non_rewritable_mem_ref_base): Make sure to mark
	bases which are accessed with non-invariant indices.
	* gimple-fold.c (maybe_canonicalize_mem_ref_addr): Re-write
	constant index ARRAY_REFs of vectors into BIT_FIELD_REFs.

	* c-c++-common/vector-subscript-4.c: New testcase.
	* c-c++-common/vector-subscript-5.c: Likewise.

From-SVN: r236630
2016-05-24 07:55:56 +00:00
Jerry DeLisle 64fc0cd9b2 re PR libfortran/71123 (Namelist read failure on Windows)
2016-05-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/71123
	* io/list_read (eat_spaces): Eat '\r' as part of spaces.
        fix change log

From-SVN: r236629
2016-05-24 06:16:00 +00:00