142335 Commits

Author SHA1 Message Date
Claudiu Zissulescu
c0ab1970b9 dp-hack.h: Add support for ARCHS.
2015-11-11  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/dp-hack.h: Add support for ARCHS.
	* config/arc/ieee-754/divdf3.S: Likewise.
	* config/arc/ieee-754/divsf3-stdmul.S: Likewise.
	* config/arc/ieee-754/muldf3.S: Likewise.
	* config/arc/ieee-754/mulsf3.S: Likewise
	* config/arc/lib1funcs.S: Likewise
	* config/arc/gmon/dcache_linesz.S: Don't read the build register
	for ARCv2 cores.
	* config/arc/gmon/profil.S (__profil, __profil_irq): Don't profile
	for ARCv2 cores.
	* config/arc/ieee-754/arc-ieee-754.h (MPYHU, MPYH): Define.
	* config/arc/t-arc700-uClibc: Remove hard selection for ARC 700
	cores.

From-SVN: r230151
2015-11-11 12:04:32 +01:00
Richard Biener
35e2b6e162 [Patch] PR tree-optimization/68234 Improve range info for loop Phi node
2015-11-11  Richard Biener  <rguenth@gcc.gnu.org>
	    Jiong Wang      <jiong.wang@arm.com>
gcc/
  PR tree-optimization/68234
  * tree-vrp.c (vrp_visit_phi_node): Extend SCEV check to those loop PHI
  node which estimiated to be VR_VARYING initially.

gcc/testsuite/
  * gcc.dg/tree-ssa/pr68234.c: New testcase. 


Co-Authored-By: Jiong Wang <jiong.wang@arm.com>

From-SVN: r230150
2015-11-11 10:51:31 +00:00
Robert Suchanek
394b24ea80 Tighten up checks when tying chains.
gcc/
	* regname.c (scan_rtx_reg): Check the matching number of consecutive
	registers when tying chains.
	(build_def_use): Move terminated_this_insn earlier in the function.

From-SVN: r230149
2015-11-11 10:36:00 +00:00
Dominique d'Humieres
6eef39f15b re PR fortran/67826 (gcc/fortran/openmp.c:1808: bad test ?)
2015-11-11  Dominique d'Humieres <dominiq@lps.ens.fr>

	PR fortran/67826
	* openmp.c (gfc_omp_udr_find): Fix typo.

From-SVN: r230148
2015-11-11 11:30:25 +01:00
Jonathan Wakely
832ca6ac72 re PR libstdc++/64651 (std::rethrow_exception not found by ADL)
PR libstdc++/64651
	* libsupc++/exception_ptr.h (rethrow_exception): Add using-declaration
	to __exception_ptr namespace.
	* testsuite/18_support/exception_ptr/rethrow_exception.cc: Test ADL.
	Remove unnecessary test variables.

From-SVN: r230147
2015-11-11 10:08:23 +00:00
Mike Frysinger
9a55713856 gcc: configure: fix test == bashisms
From-SVN: r230146
2015-11-11 08:06:03 +00:00
David Edelsohn
f83cab84d5 aix.h (TARGET_OS_AIX_CPP_BUILTINS): Add cpu and machine asserts.
* config/rs6000/aix.h (TARGET_OS_AIX_CPP_BUILTINS): Add cpu and
machine asserts.  Update defines for 64 bit.

From-SVN: r230145
2015-11-10 23:01:30 -05:00
Charles Baylis
e68ffe57f2 [ARM] PR63870 Remove error for invalid lane numbers
2015-11-11  Charles Baylis  <charles.baylis@linaro.org>

	PR target/63870
	* config/arm/neon.md (neon_vld1_lane<mode>): Remove error for invalid
	lane number.
	(neon_vst1_lane<mode>): Likewise.
	(neon_vld2_lane<mode>): Likewise.
	(neon_vst2_lane<mode>): Likewise.
	(neon_vld3_lane<mode>): Likewise.
	(neon_vst3_lane<mode>): Likewise.
	(neon_vld4_lane<mode>): Likewise.
	(neon_vst4_lane<mode>): Likewise.

From-SVN: r230144
2015-11-11 01:11:20 +00:00
Charles Baylis
22f9db641f [ARM] PR63870 Mark lane indices of vldN/vstN with appropriate qualifier
2015-11-11  Charles Baylis  <charles.baylis@linaro.org>

	PR target/63870
	* config/arm/arm-builtins.c: (arm_load1_qualifiers) Use
	qualifier_struct_load_store_lane_index.
	(arm_storestruct_lane_qualifiers) Likewise.
	* config/arm/neon.md: (neon_vld1_lane<mode>) Reverse lane numbers for
	big-endian.
	(neon_vst1_lane<mode>) Likewise.
	(neon_vld2_lane<mode>) Likewise.
	(neon_vst2_lane<mode>) Likewise.
	(neon_vld3_lane<mode>) Likewise.
	(neon_vst3_lane<mode>) Likewise.
	(neon_vld4_lane<mode>) Likewise.
	(neon_vst4_lane<mode>) Likewise.

From-SVN: r230143
2015-11-11 01:08:43 +00:00
Charles Baylis
2f7d18ddd7 [ARM] PR63870 Add qualifiers for NEON builtins
2015-11-11  Charles Baylis  <charles.baylis@linaro.org>

	PR target/63870
	* config/arm/arm-builtins.c (enum arm_type_qualifiers): New enumerator
	qualifier_struct_load_store_lane_index.
	(builtin_arg): New enumerator NEON_ARG_STRUCT_LOAD_STORE_LANE_INDEX.
	(arm_expand_neon_args): New parameter. Remove ellipsis. Handle NEON
	argument qualifiers.
	(arm_expand_neon_builtin): Handle new NEON argument qualifier.
	* config/arm/arm.h (NEON_ENDIAN_LANE_N): New macro.

From-SVN: r230142
2015-11-11 01:05:16 +00:00
GCC Administrator
493b929ab8 Daily bump.
From-SVN: r230141
2015-11-11 00:16:16 +00:00
Nathan Sidwell
dba619f370 nvptx.opt (moptimize): New flag.
* config/nvptx/nvptx.opt (moptimize): New flag.
	* config/nvptx/nvptx.c (nvptx_option_override): Set nvptx_optimize
	default.
	(nvptx_optimize_inner): New.
	(nvptx_process_pars): Call it when optimizing.
	* doc/invoke.texi (Nvidia PTX Options): Document -moptimize.

From-SVN: r230137
2015-11-10 22:29:20 +00:00
Bill Schmidt
43ee07b7c0 rs6000.c (rs6000_secondary_reload_direct_move): Remove redundant code.
2015-11-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* config/rs6000/rs6000.c (rs6000_secondary_reload_direct_move):
	Remove redundant code.

From-SVN: r230136
2015-11-10 21:52:50 +00:00
Ian Lance Taylor
88cf4de8b7 libgo: use Solaris sendfile lib, fix Solaris _in6_addr_t fields
Before Solaris 12 the sendfile function is found in -lsendfile, so look
    for it there.
    
    Solaris 12 adds some more types that use _in6_addr_t, that need to be
    edited in mksysinfo.
    
    Patch by Rainer Orth.
    
    Reviewed-on: https://go-review.googlesource.com/16779

From-SVN: r230132
2015-11-10 21:38:30 +00:00
Jeff Law
732ea6d11d [PATCH] Fix minor fallout from operand_address changes
2015-11-10  Jeff Law  <law@redhat.com>

	* config/ft32/ft32.c (ft32_print_operand): Supply mode to
	call to output_address.
	* config/moxie/moxie.c (moxie_print_operand_address): Similarly.
	Add unnamed machine_mode argument.

From-SVN: r230130
2015-11-10 14:11:07 -07:00
Michael Meissner
1840c9539a config.gcc (powerpc*-*-*, [...]): Add power9 to hosts that default to 64-bit.
2015-11-10  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* config.gcc (powerpc*-*-*, rs6000*-*-*): Add power9 to hosts that
	default to 64-bit.


Co-Authored-By: Peter Bergner <bergner@vnet.ibm.com>

From-SVN: r230123
2015-11-10 20:50:39 +00:00
Ian Lance Taylor
ea5c200338 re PR go/68255 (cgo-generated constructor not being called)
PR go/68255
    cmd/go: always use --whole-archive for gccgo packages
    
    This is a backport of https://golang.org/cl/16775.
    
    This is, in effect, what the gc toolchain does.  It fixes cases where Go
    code refers to a C global variable; without this, if the global variable
    was the only thing visible in the C code, the generated cgo file might
    not get pulled in from the archive, leaving the Go variable
    uninitialized.
    
    This was reported against gccgo as https://gcc.gnu.org/PR68255 .
    
    Reviewed-on: https://go-review.googlesource.com/16778

From-SVN: r230120
2015-11-10 20:31:11 +00:00
Uros Bizjak
c5a237e923 i386.md (*movabs<mode>_1): Add explicit size directives for -masm=intel.
* config/i386/i386.md (*movabs<mode>_1): Add explicit
	size directives for -masm=intel.
	(*movabs<mode>_2): Ditto.

From-SVN: r230119
2015-11-10 20:26:08 +01:00
Uros Bizjak
41d9ec3c24 i386.c (ix86_print_operand): Remove dead code that tried to avoid (%rip) for call operands.
* config/i386/i386.c (ix86_print_operand): Remove dead code that
	tried to avoid (%rip) for call operands.

	* config/i386/i386.c (ix86_print_operand_address_as): Add no_rip
	argument.  Do not use RIP relative addressing when no_rip is set.
	(ix86_print_operand): Update call to ix86_print_operand_address_as.
	(ix86_print_operand_address): Ditto.
	* config/i386/i386.md (*movabs<mode>_1): Use %P modifier for
	absolute movabs operand 0.  Add square braces for -masm=intel.
	(*movabs<mode>_2): Ditto for operand 1.

From-SVN: r230117
2015-11-10 18:48:31 +01:00
Kyrylo Tkachov
6a9ee02f7a [ARM] Fix costing of vmul+vcvt combine pattern
* config/arm/arm.c (arm_new_rtx_costs, FIX case): Handle
	combine_vcvtf2i pattern.

From-SVN: r230116
2015-11-10 17:29:46 +00:00
Kyrylo Tkachov
aad146c36f [ARM][cleanup] Remove uses of CONST_DOUBLE_HIGH/LOW
* config/arm/arm.c (neon_valid_immediate): Remove integer
	CONST_DOUBLE handling.  It should never occur.

From-SVN: r230115
2015-11-10 17:27:42 +00:00
Matthew Wahab
d81cb6135e [AArch64] Move iterators from atomics.md to iterators.md
* config/aarch64/atomics.md (unspecv): Move to iterators.md.
	(ATOMIC_LDOP): Likewise.
	(atomic_ldop): Likewise.
	* config/aarch64/iterators.md (unspecv): Moved from atomics.md.
	(ATOMIC_LDOP): Likewise.
	(atomic_ldop): Likewise.

From-SVN: r230114
2015-11-10 15:59:37 +00:00
Jonathan Wakely
d4a9dffbaa Fix return type of heterogeneous find for sets
PR libstdc++/68190
	* include/bits/stl_multiset.h (multiset::find): Fix return types.
	* include/bits/stl_set.h (set::find): Likewise.
	* testsuite/23_containers/map/operations/2.cc: Test find return types.
	* testsuite/23_containers/multimap/operations/2.cc: Likewise.
	* testsuite/23_containers/multiset/operations/2.cc: Likewise.
	* testsuite/23_containers/set/operations/2.cc: Likewise.

From-SVN: r230113
2015-11-10 15:12:24 +00:00
Jonathan Wakely
60baa1883c Update C++17 library implementation status
* doc/xml/manual/status_cxx2017.xml: Update.
	* doc/html/*: Regenerate.

From-SVN: r230108
2015-11-10 14:05:01 +00:00
Nathan Sidwell
d350c40cfd firstprivate-1.c: Remove inadvertent commit.
* testsuite/libgomp.oacc-c-c++-common/firstprivate-1.c: Remove
	inadvertent commit.

From-SVN: r230107
2015-11-10 13:51:09 +00:00
Martin Liska
8bd37a2ec9 Enhance pool allocator
* alloc-pool.h (allocate_raw): New function.
	(operator new (size_t, object_allocator<T> &a)): Use the
	function instead of object_allocator::allocate).

From-SVN: r230105
2015-11-10 12:27:33 +00:00
Ilya Enkovich
bea408857a sse.md (HALFMASKMODE): New attribute.
gcc/

	* config/i386/sse.md (HALFMASKMODE): New attribute.
	(DOUBLEMASKMODE): New attribute.
	(vec_pack_trunc_qi): New.
	(vec_pack_trunc_<mode>): New.
	(vec_unpacks_lo_hi): New.
	(vec_unpacks_lo_si): New.
	(vec_unpacks_lo_di): New.
	(vec_unpacks_hi_hi): New.
	(vec_unpacks_hi_<mode>): New.

gcc/testsuite/

	* gcc.target/i386/mask-pack.c: New test.
	* gcc.target/i386/mask-unpack.c: New test.

From-SVN: r230104
2015-11-10 12:19:42 +00:00
Ilya Enkovich
e6f5c25d91 optabs.c (expand_binop_directly): Allow scalar mode for vec_pack_trunc_optab.
gcc/

	* optabs.c (expand_binop_directly): Allow scalar mode for
	vec_pack_trunc_optab.
	* tree-vect-loop.c (vect_determine_vectorization_factor): Skip
	boolean vector producers from pattern sequence when computing VF.
	* tree-vect-patterns.c (vect_vect_recog_func_ptrs) Add
	vect_recog_mask_conversion_pattern.
	(search_type_for_mask): Choose the smallest
	type if different size types are mixed.
	(build_mask_conversion): New.
	(vect_recog_mask_conversion_pattern): New.
	(vect_pattern_recog_1): Allow scalar mode for boolean vectype.
	* tree-vect-stmts.c (vectorizable_mask_load_store): Support masked
	load with pattern.
	(vectorizable_conversion): Support boolean vectors.
	(free_stmt_vec_info): Allow patterns for statements with no lhs.
	* tree-vectorizer.h (NUM_PATTERNS): Increase to 14.

From-SVN: r230103
2015-11-10 12:17:30 +00:00
Ilya Enkovich
f79fe06f4d i386-protos.h (ix86_expand_sse_movcc): New.
gcc/

2015-11-10  Ilya Enkovich  <enkovich.gnu@gmail.com>

	* config/i386/i386-protos.h (ix86_expand_sse_movcc): New.
	* config/i386/i386.c (ix86_expand_sse_movcc): Make public.
	Cast mask to FP mode if required.
	* config/i386/sse.md (vcond_mask_<mode><avx512fmaskmodelower>): New.
	(vcond_mask_<mode><avx512fmaskmodelower>): New.
	(vcond_mask_<mode><sseintvecmodelower>): New.
	(vcond_mask_<mode><sseintvecmodelower>): New.
	(vcond_mask_v2div2di): New.
	(vcond_mask_<mode><sseintvecmodelower>): New.
	(vcond_mask_<mode><sseintvecmodelower>): New.

From-SVN: r230102
2015-11-10 12:15:42 +00:00
Ilya Enkovich
a414c77f2a optabs-query.h (get_vcond_mask_icode): New.
gcc/

2015-11-10  Ilya Enkovich  <enkovich.gnu@gmail.com>

	* optabs-query.h (get_vcond_mask_icode): New.
	* optabs-tree.c (expand_vec_cond_expr_p): Use
	get_vcond_mask_icode for VEC_COND_EXPR with mask.
	* optabs.c (expand_vec_cond_mask_expr): New.
	(expand_vec_cond_expr): Use get_vcond_mask_icode
	when possible.
	* optabs.def (vcond_mask_optab): New.
	* tree-vect-patterns.c (vect_recog_bool_pattern): Don't
	generate redundant comparison for COND_EXPR.
	* tree-vect-stmts.c (vect_is_simple_cond): Allow SSA_NAME
	as a condition.
	(vectorizable_condition): Likewise.
	* tree-vect-slp.c (vect_get_and_check_slp_defs): Allow
	cond_exp with no embedded comparison.
	(vect_build_slp_tree_1): Likewise.

From-SVN: r230101
2015-11-10 12:14:19 +00:00
Ilya Enkovich
1ab8a1b176 sse.md (maskload<mode>): Rename to ...
2015-11-10  Ilya Enkovich  <enkovich.gnu@gmail.com>

	* config/i386/sse.md (maskload<mode>): Rename to ...
	(maskload<mode><sseintvecmodelower>): ... this.
	(maskstore<mode>): Rename to ...
	(maskstore<mode><sseintvecmodelower>): ... this.
	(maskload<mode><avx512fmaskmodelower>): New.
	(maskstore<mode><avx512fmaskmodelower>): New.

From-SVN: r230100
2015-11-10 12:08:02 +00:00
Ilya Enkovich
045c12782c internal-fn.c (expand_MASK_LOAD): Adjust to maskload optab changes.
gcc/

	* internal-fn.c (expand_MASK_LOAD): Adjust to maskload optab changes.
	(expand_MASK_STORE): Adjust to maskstore optab changes.
	* optabs-query.c (can_vec_mask_load_store_p): Add MASK_MODE arg.
	 Adjust to maskload, maskstore optab changes.
	* optabs-query.h (can_vec_mask_load_store_p): Add MASK_MODE arg.
	* optabs.def (maskload_optab): Transform into convert optab.
	(maskstore_optab): Likewise.
	* tree-if-conv.c (ifcvt_can_use_mask_load_store): Adjust to
	can_vec_mask_load_store_p signature change.
	(predicate_mem_writes): Use boolean mask.
	* tree-vect-stmts.c (vectorizable_mask_load_store): Adjust to
	can_vec_mask_load_store_p signature change.  Allow invariant masks.
	(vectorizable_operation): Ignore type precision for boolean vectors.

gcc/testsuite/

	* gcc.target/i386/avx2-vec-mask-bit-not.c: New test.

From-SVN: r230099
2015-11-10 12:06:05 +00:00
Ilya Enkovich
42fd8198b4 expr.c (do_store_flag): Use expand_vec_cmp_expr for mask results.
gcc/

	* expr.c (do_store_flag): Use expand_vec_cmp_expr for mask results.
	(const_vector_mask_from_tree): New.
	(const_vector_from_tree): Use const_vector_mask_from_tree
	for boolean vectors.
	* optabs-query.h (get_vec_cmp_icode): New.
	* optabs-tree.c (expand_vec_cmp_expr_p): New.
	* optabs-tree.h (expand_vec_cmp_expr_p): New.
	* optabs.c (vector_compare_rtx): Add OPNO arg.
	(expand_vec_cond_expr): Adjust to vector_compare_rtx change.
	(expand_vec_cmp_expr): New.
	* optabs.def (vec_cmp_optab): New.
	(vec_cmpu_optab): New.
	* optabs.h (expand_vec_cmp_expr): New.
	* tree-vect-generic.c (expand_vector_comparison): Add vector
	comparison optabs check.
	* tree-vect-loop.c (vect_determine_vectorization_factor):  Ignore mask
	operations for VF.  Add mask type computation.
	* tree-vect-stmts.c (get_mask_type_for_scalar_type): New.
	(vectorizable_comparison): New.
	(vect_analyze_stmt): Add vectorizable_comparison.
	(vect_transform_stmt): Likewise.
	(vect_init_vector): Support boolean vector invariants.
	(vect_get_vec_def_for_operand): Add VECTYPE arg.
	(vectorizable_condition): Directly provide vectype for invariants
	used in comparison.
	* tree-vectorizer.h (get_mask_type_for_scalar_type): New.
	(enum vect_var_kind): Add vect_mask_var.
	(enum stmt_vec_info_type): Add comparison_vec_info_type.
	(vectorizable_comparison): New.
	(vect_get_vec_def_for_operand): Add VECTYPE arg.
	* tree-vect-data-refs.c (vect_get_new_vect_var): Support vect_mask_var.
	(vect_create_destination_var): Likewise.
	* tree-vect-patterns.c (check_bool_pattern): Check fails
	if we can vectorize comparison directly.
	(search_type_for_mask): New.
	(vect_recog_bool_pattern): Support cases when bool pattern
	check fails.
	* tree-vect-slp.c (vect_build_slp_tree_1): Allow
	comparison statements.
	(vect_get_constant_vectors): Support boolean vector
	constants.
	* config/i386/i386-protos.h (ix86_expand_mask_vec_cmp): New.
	(ix86_expand_int_vec_cmp): New.
	(ix86_expand_fp_vec_cmp): New.
	* config/i386/i386.c (ix86_expand_sse_cmp): Allow NULL for
	op_true and op_false.
	(ix86_int_cmp_code_to_pcmp_immediate): New.
	(ix86_fp_cmp_code_to_pcmp_immediate): New.
	(ix86_cmp_code_to_pcmp_immediate): New.
	(ix86_expand_mask_vec_cmp): New.
	(ix86_expand_fp_vec_cmp): New.
	(ix86_expand_int_sse_cmp): New.
	(ix86_expand_int_vcond): Use ix86_expand_int_sse_cmp.
	(ix86_expand_int_vec_cmp): New.
	(ix86_get_mask_mode): New.
	(TARGET_VECTORIZE_GET_MASK_MODE): New.
	* config/i386/sse.md (avx512fmaskmodelower): New.
	(vec_cmp<mode><avx512fmaskmodelower>): New.
	(vec_cmp<mode><sseintvecmodelower>): New.
	(vec_cmpv2div2di): New.
	(vec_cmpu<mode><avx512fmaskmodelower>): New.
	(vec_cmpu<mode><sseintvecmodelower>): New.
	(vec_cmpuv2div2di): New.

gcc/testsuite/

	* gcc.dg/vect/slp-cond-5.c: New test.

From-SVN: r230098
2015-11-10 11:57:34 +00:00
Jonathan Wakely
fb9333352b * include/bits/functional_hash.h: Fix grammar in comment.
From-SVN: r230097
2015-11-10 11:12:33 +00:00
Richard Biener
94852c8ec4 re PR tree-optimization/68240 (compilation hangs on valid code at -O1 and above on x86_64-linux-gnu)
2015-11-10  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/68240
	* tree-ssa-sccvn.c (cond_stmts_equal_p): Handle commutative compares
	properly.
	(visit_phi): For PHIs with just a single executable edge
	take its value directly.
	(expressions_equal_p): Handle VN_TOP properly.

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

From-SVN: r230095
2015-11-10 10:14:02 +00:00
Richard Biener
ef785d9f19 tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Handle memory using/clobbering stmts without a STMT_VINFO_DATA_REF conservatively.
2015-11-10  Richard Biener  <rguenther@suse.de>

	* tree-vect-data-refs.c (vect_slp_analyze_node_dependences):
	Handle memory using/clobbering stmts without a STMT_VINFO_DATA_REF
	conservatively.

From-SVN: r230094
2015-11-10 10:12:13 +00:00
Richard Biener
a6524bba20 re PR tree-optimization/56118 (Piecewise vector / complex initialization from constants not combined)
2015-11-10  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/56118
	* tree-vect-slp.c (vect_bb_vectorization_profitable_p): Make equal
	cost favor vectorized version.

	* gcc.target/i386/pr56118.c: New testcase.

From-SVN: r230091
2015-11-10 09:43:54 +00:00
Kyrylo Tkachov
3204ac9868 [AArch64][2/3] Implement negcc, notcc optabs
* config/aarch64/aarch64.md (<neg_not_op><mode>cc): New define_expand.
	* config/aarch64/iterators.md (NEG_NOT): New code iterator.
	(neg_not_op): New code attribute.

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

From-SVN: r230090
2015-11-10 09:37:51 +00:00
Kyrylo Tkachov
ce68b5cfb9 [optabs][ifcvt][1/3] Define negcc, notcc optabs
* ifcvt.c (noce_try_inverse_constants): New function.
	(noce_process_if_block): Call it.
	* optabs.h (emit_conditional_neg_or_complement): Declare prototype.
	* optabs.def (negcc_optab, notcc_optab): Declare.
	* optabs.c (emit_conditional_neg_or_complement): New function.
	* doc/tm.texi (Standard Names): Document negcc, notcc names.

From-SVN: r230089
2015-11-10 09:35:11 +00:00
Kyrylo Tkachov
df554b0e49 [haifa-sched] PR rtl-optimization/68236: Exit early from autoprefetcher lookahead if not in haifa sched
PR rtl-optimization/68236
	* haifa-sched.c (autopref_multipass_dfa_lookahead_guard): Return 0
	if insn_queue doesn't exist.
	(haifa_sched_finish): Reset insn_queue to NULL.

From-SVN: r230088
2015-11-10 09:22:58 +00:00
Robert Suchanek
0d20a76b28 Tie chains for move instructions.
gcc/
	* regrename.c (create_new_chain): Initialize renamed and tied_chain.
	(build_def_use): Initialize terminated_this_insn.
	(find_best_rename_reg): Pick and check register from the tied chain.
	(regrename_do_replace): Mark head as renamed.
	(struct du_head *terminated_this_insn). New static variable.
	(scan_rtx_reg): Tie chains in move insns.  Set terminated_this_insn.
	* regrename.h (struct du_head): Add tied_chain, renamed members.

From-SVN: r230087
2015-11-10 09:12:52 +00:00
Eric Botcazou
66d662de1c * gfortran.dg/pr68251.f90: New test.
From-SVN: r230086
2015-11-10 09:01:58 +00:00
Ramana Radhakrishnan
3eece53d3a Workaround PR68256 on AArch64
> This is causing a bootstrap comparison failure in gcc/go/gogo.o.

I've had a look at this and the trigger is the
aarch64_use_constant_blocks_p change which appears to be causing a
bootstrap comparison failure because of differences to offsets when
built with debug and without debug. I don't think the problem is
specifically in the backend but this needs some careful
investigation. For now, in the interest of go bootstraps continuing on
trunk - I'm proposing a patch that partially rolls back the change in
aarch64_use_constant_blocks_p and am still looking into the issue but
it will take me some more time to get to the bottom of the issue.

Bootstrapped on aarch64-none-linux-gnu including (c,c++ and go) -
testing finished ok.

2015-11-10  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

	PR bootstrap/68256
	* config/aarch64/aarch64.c (aarch64_use_constant_blocks_p):
	Return false.

From-SVN: r230085
2015-11-10 08:35:21 +00:00
Cesar Philippidis
03310c37cc parser.c (cp_finalize_oacc_routine): New boolean first argument.
gcc/cp/
	* parser.c (cp_finalize_oacc_routine): New boolean first argument.
	(cp_ensure_no_oacc_routine): Update call to cp_finalize_oacc_routine.
	(cp_parser_simple_declaration): Maintain a boolean first to keep track
	of each new declarator.  Propagate it to cp_parser_init_declarator.
	(cp_parser_init_declarator): New boolean first argument.  Propagate it
	to cp_parser_save_member_function_body and cp_finalize_oacc_routine.
	(cp_parser_member_declaration): Likewise.
	(cp_parser_single_declaration): Update call to
	cp_parser_init_declarator.
	(cp_parser_save_member_function_body): New boolean first_decl argument.
	Propagate it to cp_finalize_oacc_routine.
	(cp_parser_finish_oacc_routine): New boolean first argument.  Use it to
	determine if multiple declarators follow a routine construct.
	(cp_parser_oacc_routine): Update call to cp_parser_finish_oacc_routine.

	gcc/testsuite/
	* c-c++-common/goacc/routine-5.c: Enable c++ tests.

From-SVN: r230082
2015-11-09 21:23:04 -08:00
Martin Sebor
685c8340ff PR c++/67913 - new expression with negative size not diagnosed
PR c++/67913 - new expression with negative size not diagnosed
PR c++/67927 - array new expression with excessive number of elements
               not diagnosed 

gcc/cp/
	* call.c (build_operator_new_call): Do not assume size_check
	is non-null, analogously to the top half of the function.
	* init.c (build_new_1): Detect and diagnose array sizes in
	excess of the maximum of roughly SIZE_MAX / 2.
	Insert a runtime check only for arrays with a non-constant size.
	(build_new): Detect and diagnose negative array sizes.

gcc/testsuite/
	* init/new45.C: New test to verify that operator new is invoked
	with or without overhead for a cookie.
	* init/new44.C: New test for placement new expressions for arrays
	with excessive number of elements.
	* init/new43.C: New test for placement new expressions for arrays
	with negative number of elements.
	* other/new-size-type.C: Expect array new expression with
	an excessive number of elements to be rejected.

From-SVN: r230081
2015-11-09 19:23:34 -07:00
Nathan Sidwell
36fa0f5f68 routine-1.c: New.
gcc/testsuite/
	* c-c++-common/goacc/routine-1.c: New.
	* c-c++-common/goacc/routine-2.c: New.
	* c-c++-common/goacc/routine-3.c: New.
	* c-c++-common/goacc/routine-4.c: New.
	* c-c++-common/goacc/routine-5.c: New.

	libgomp/
	* testsuite/libgomp.oacc-c-c++-common/firstprivate-1.c: New.
	* testsuite/libgomp.oacc-c-c++-common/routine-g-1.c: New.
	* testsuite/libgomp.oacc-c-c++-common/routine-gwv-1.c: New.
	* testsuite/libgomp.oacc-c-c++-common/routine-v-1.c: New.
	* testsuite/libgomp.oacc-c-c++-common/routine-w-1.c: New.
	* testsuite/libgomp.oacc-c-c++-common/routine-wv-1.c: New.

From-SVN: r230080
2015-11-10 01:01:15 +00:00
Eric Botcazou
fbae25c008 re PR target/57845 (ICE with -freg-struct-return on SPARC)
PR target/57845
	* config/sparc/sparc.c (sparc_function_value_1): In 32-bit mode, do
	not promote the mode for aggregate types.

From-SVN: r230074
2015-11-10 00:45:03 +00:00
Nathan Sidwell
3a40d81dcd omp-low.h (replace_oacc_fn_attrib, [...]): Declare.
* omp-low.h (replace_oacc_fn_attrib, build_oacc_routine_dims): Declare.
	* omp-low.c (build_oacc_routine_dims): New.

	c/
	* c-parser.c (c_parser_declaration_or_fndef): Add OpenACC
	routine arg.
	(c_parser_declaration_or_fndef): Call c_finish_oacc_routine.
	(c_parser_pragma): Parse 'acc routine'.
	(OACC_ROUTINE_CLAUSE_MARK): Define.
	(c_parser_oacc_routine, (c_finish_oacc_routine): New.

	c-family/
	* c-pragma.c (oacc_pragmas): Add "routine".
	* c-pragma.h (pragma_kind): Add PRAGMA_OACC_ROUTINE.

	cp/
	* parser.h (struct cp_parser): Add oacc_routine field.
	* parser.c (cp_ensure_no_oacc_routine): New.
	(cp_parser_new): Initialize oacc_routine field.
	(cp_parser_linkage_specification): Call cp_ensure_no_oacc_routine.
	(cp_parser_namespace_definition,
	cp_parser_class_specifier_1): Likewise.
	(cp_parser_init_declarator): Call cp_finalize_oacc_routine.
	(cp_parser_function_definition,
	cp_parser_save_member_function_body): Likewise.
	(OACC_ROUTINE_CLAUSE_MASK): New.
	(cp_parser_finish_oacc_routine, cp_parser_oacc_routine,
	cp_finalize_oacc_routine): New.
	(cp_parser_pragma): Adjust omp_declare_simd checking.  Call
	cp_ensure_no_oacc_routine.
	(cp_parser_pragma): Add OpenACC routine handling.

From-SVN: r230072
2015-11-10 00:27:26 +00:00
GCC Administrator
7441dcf4be Daily bump.
From-SVN: r230069
2015-11-10 00:16:12 +00:00
Michael Meissner
0299bc7261 constraints.md (wF constraint): New constraints for power9/toc fusion.
[gcc]
2015-11-08  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* config/rs6000/constraints.md (wF constraint): New constraints
	for power9/toc fusion.
	(wG constraint): Likewise.

	* config/rs6000/predicates.md (u6bit_cint_operand): New
	predicate, recognize 0..63.
	(upper16_cint_operand): New predicate for power9 and toc fusion.
	(fpr_reg_operand): Likewise.
	(toc_fusion_or_p9_reg_operand): Likewise.
	(toc_fusion_mem_raw): Likewise.
	(toc_fusion_mem_wrapped): Likewise.
	(fusion_gpr_addis): If power9 fusion, allow fusion for a larger
	address range.
	(fusion_gpr_mem_combo): Delete, use fusion_addis_mem_combo_load
	instead.
	(fusion_addis_mem_combo_load): Add support for power9 fusion of
	floating point loads, floating point stores, and gpr stores.
	(fusion_addis_mem_combo_store): Likewise.
	(fusion_offsettable_mem_operand): Likewise.

	* config/rs6000/rs6000-protos.h (emit_fusion_addis): Add
	declarations.
	(emit_fusion_load_store): Likewise.
	(fusion_p9_p): Likewise.
	(expand_fusion_p9_load): Likewise.
	(expand_fusion_p9_store): Likewise.
	(emit_fusion_p9_load): Likewise.
	(emit_fusion_p9_store): Likewise.
	(fusion_wrap_memory_address): Likewise.

	* config/rs6000/rs6000.c (struct rs6000_reg_addr): Add new
	elements for power9 fusion.
	(rs6000_debug_print_mode): Rework debug information to print more
	information about fusion.
	(rs6000_init_hard_regno_mode_ok): Setup for power9 fusion
	support.
	(rs6000_legitimate_address_p): Recognize toc fusion as a valid
	offsettable memory address.
	(rs6000_rtx_costs): Update costs for new ISA 3.0 instructions.
	(emit_fusion_gpr_load): Move most of the code from
	emit_fusion_gpr_load into emit_fusion-addis that handles both
	power8 and power9 fusion.
	(emit_fusion_addis): Likewise.
	(emit_fusion_load_store): Likewise.
	(fusion_wrap_memory_address): Add support for TOC fusion.
	(fusion_split_address): Likewise.
	(fusion_p9_p): Add support for power9 fusion.
	(expand_fusion_p9_load): Likewise.
	(expand_fusion_p9_store): Likewise.
	(emit_fusion_p9_load): Likewise.
	(emit_fusion_p9_store): Likewise.

	* config/rs6000/rs6000.h (TARGET_EXTSWSLI): Macros for support for
	new instructions in ISA 3.0.
	(TARGET_CTZ): Likewise.
	(TARGET_TOC_FUSION_INT): Macros for power9 fusion support.
	(TARGET_TOC_FUSION_FP): Likewise.

	* config/rs6000/rs6000.md (UNSPEC_FUSION_P9): New power9/toc
	fusion unspecs.
	(UNSPEC_FUSION_ADDIS): Likewise.
	(QHSI mode iterator): New iterator for power9 fusion.
	(GPR_FUSION): Likewise.
	(FPR_FUSION): Likewise.
	(mod<mode>3): Add support for ISA 3.0
	modulus instructions.
	(umod<mode>3): Likewise.
	(divmod peephole): Likewise.
	(udivmod peephole): Likewise.
	(ctz<mode>2): Add support for ISA 3.0 count trailing zeros scalar
	instructions.
	(ctz<mode>2_h): Likewise.
	(ashdi3_extswsli): Add support for ISA 3.0 EXTSWSLI instruction.
	(ashdi3_extswsli_dot): Likewise.
	(ashdi3_extswsli_dot2): Likewise.
	(power9 fusion splitter): New power9/toc fusion support.
	(toc_fusionload_<mode>): Likewise.
	(toc_fusionload_di): Likewise.
	(fusion_gpr_load_<mode>): Update predicate function.
	(power9 fusion peephole2s): New power9/toc fusion support.
	(fusion_gpr_<P:mode>_<GPR_FUSION:mode>_load): Likewise.
	(fusion_gpr_<P:mode>_<GPR_FUSION:mode>_store): Likewise.
	(fusion_fpr_<P:mode>_<FPR_FUSION:mode>_load): Likewise.
	(fusion_fpr_<P:mode>_<FPR_FUSION:mode>_store): Likewise.
	(fusion_p9_<mode>_constant): Likewise.

[gcc/testsuite]
2015-11-08  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* lib/target-supports.exp (check_p8vector_hw_available): Split
	long line.
	(check_vsx_hw_available): Likewise.
	(check_p9vector_hw_available): Add new checks for ISA 3.0 hardware
	support and for PowerPC float128 support.
	(check_p9modulo_hw_available): Likewise.
	(check_ppc_float128_sw_available): Likewise.
	(check_ppc_float128_hw_available): Likewise.
	(check_effective_target_powerpc_p9vector_ok): Likewise.
	(check_effective_target_powerpc_p9modulo_ok): Likewise.
	(check_effective_target_powerpc_float128_sw_ok): Likewise.
	(check_effective_target_powerpc_float128_hw_ok): Likewise.
	(is-effective-target): Add new PowerPc targets.
	(is-effective-target-keyword): Likewise.
	(check_vect_support_and_set_flags): If we have ISA 3.0 vector
	instructions, use it.

	* gcc.target/powerpc/mod-1.c: New test for ISA 3.0 instructions.
	* gcc.target/powerpc/mod-2.c: Likewise.
	* gcc.target/powerpc/ctz-1.c: Likewise.
	* gcc.target/powerpc/ctz-2.c: Likewise.
	* gcc.target/powerpc/extswsli-1.c: Likewise.
	* gcc.target/powerpc/extswsli-2.c: Likewise.
	* gcc.target/powerpc/extswsli-3.c: Likewise.

	* gcc.target/powerpc/fusion.c (fusion_vector): Move to fusion2.c
	and allow the test on PowerPC LE.
	* gcc.target/powerpc/fusion2.c (fusion_vector): Likewise.
	* gcc.target/powerpc/fusion3.c: New file, test power9 fusion.

	* gcc.target/powerpc/float128-call.c: Use powerpc_float128_sw_ok
	check instead of powerpc_vsx_ok.
	* gcc.target/powerpc/float128-mix.c: Likewise.

From-SVN: r230066
2015-11-10 00:04:03 +00:00