Commit Graph

155264 Commits

Author SHA1 Message Date
GCC Administrator
bd3d1c9f76 Daily bump.
From-SVN: r250451
2017-07-22 00:16:29 +00:00
Carl Love
5ff4baa5b7 rs6000-c.c (altivec_overloaded_builtins): Add ALTIVEC_BUILTIN_VMULESW...
gcc/ChangeLog:

2017-07-21  Carl Love  <cel@us.ibm.com>

	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
	ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
	ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
	builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
	* config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
	VMULOSW): New enum "unspec" values.
	(altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
	altivec_vmulosw): New patterns.
	* config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
	VMULOSW): Add definitions.

gcc/testsuite/ChangeLog:

2017-07-21  Carl Love  <cel@us.ibm.com>

	* gcc.target/powerpc/builtins-2.c (vmulosh, vmulouh, vmulesh,
	vmuleuh): Fix scan-assembler-times should check for word not half word
	instructions.

From-SVN: r250450
2017-07-22 00:16:26 +00:00
Jim Wilson
43f84f6c0b Add RDMA support to falkor port.
gcc/
	* config/aarch64/aarch64-cores.def (falkor): Add AARCH64_FL_RDMA.
	(qdf24xx): Likewise.
	* config/aarch64/aarch64-options-extensions.def (rdma); New.
	* config/aarch64/aarch64.h (AARCH64_FL_RDMA): New.
	(AARCH64_FL_V8_1): Renumber.
	(AARCH64_FL_FOR_ARCH8_1): Add AARCH64_FL_RDMA.
	(AARCH64_ISA_RDMA): Use AARCH64_FL_RDMA.
	* config/aarch64/arm_neon.h: Use +rdma instead of arch=armv8.1-a.
	* doc/invoke.texi (AArch64 Options): Mention +rmda in -march docs.  Add
	rdma to feature modifiers list.

	gcc/testsuite/
	* lib/target-supports.exp (add_options_for_arm_v8_1a_neon): Delete
	redundant -march option.
	(check_effective_target_arm_v8_1a_neon_ok_nocache): Try armv8-a+rdma
	in addition to armv8.1-a.

From-SVN: r250444
2017-07-21 14:56:57 -07:00
Ian Lance Taylor
0901429d47 syscall: call f?statfs64 on GNU/Linux
We unconditionally set _FILE_OFFSET_BITS to 64 in configure.ac, so we
    should unconditionally call the statfs64 and fstatfs64 functions.
    These functions should be available on all versions of GNU/Linux since 2.6.
    On 64-bit systems they are aliased to statfs/fstatfs, and on 32-bit
    systems they use the 64-bit data structures.
    
    Fixes golang/go#20922
    
    Reviewed-on: https://go-review.googlesource.com/50635

From-SVN: r250443
2017-07-21 20:25:13 +00:00
Yury Gribov
325fe81618 re PR middle-end/56727 (Recursive call goes through the PLT unnecessarily)
2017-07-21  Yury Gribov  <tetra2005@gmail.com>

	PR middle-end/56727
	* ipa-visibility (function_and_variable_visibility): Convert
	recursive PLT call to direct call if appropriate.

	* gcc.dg/pr56727-1.c: New test.
	* gcc.dg/pr56727-2.c: New test.

From-SVN: r250442
2017-07-21 19:48:51 +00:00
Nathan Sidwell
d5c125ca0c search.c (lookup_conversion_operator): Return overloads.
* search.c (lookup_conversion_operator): Return overloads.
	(lookup_fnfields_idx_nolazy): Absorb into ...
	(lookup_fnfields_slot_nolaxy): ... here.
	(lookup_fnfields_1): Absorb into ...
	(lookup_fnfields_slot): ... here.

From-SVN: r250440
2017-07-21 19:23:40 +00:00
Ian Lance Taylor
df206c6e77 runtime: don't use runtime_lock in __go_get_backtrace_state
If getSiginfo does not know how to determine the PC, it will call
    runtime_callers. That can happen in a thread that was started by
    non-Go code, in which case the TLS variable g will not be set, in
    which case runtime_lock will crash.
    
    Avoid the problem by using atomic operations for the lock. This is OK
    since creating a backtrace state is fast and never blocks.
    
    The test case is TestCgoExternalThreadSIGPROF in the runtime package
    on a system that getSiginfo doesn't handle specially.
    
    Updates golang/go#20931
    
    Reviewed-on: https://go-review.googlesource.com/50650

From-SVN: r250439
2017-07-21 18:27:35 +00:00
Nathan Sidwell
2401ffc3fe Remove special CDtor METHOD_VEC slots.
* cp-tree.h (CLASSTYPE_CONSTRUCTOR_SLOT,
	CLASSTYPE_DESTRUCTOR_SLOT): Delete.
	(CLASSTYPE_CONSTRUCTORS): Use lookup_fnfields_slot_nolazy.
	(CLASSTYPE_DESTRUCTOR): Likewise.
	* class (add_method): Don't use special cdtor slots.
	* search.c (lookup_fnfields_idx_nolazy): Likewise.
	(look_for_overrides_here): Use lookup_fnfields_slot.
	* semantics (classtype_has_nothrow_assign_or_copy_p): Likewise.

From-SVN: r250437
2017-07-21 18:11:23 +00:00
Ian Lance Taylor
0ab7176094 runtime: handle PPC/PPC64 GNU/Linux in getSiginfo
Updates golang/go#20931
    
    Reviewed-on: https://go-review.googlesource.com/50631

From-SVN: r250436
2017-07-21 18:08:01 +00:00
Tony Reix
b3530b946f filetype.awk: Add AIX XCOFF type detection.
* filetype.awk: Add AIX XCOFF type detection.
	* configure.ac: Recognize xcoff format.
	* Makefile.am (FORMAT_FILES): Add xcoff.c.
	* fileline.c: Include <unistd.h>.
	(fileline_initialize): Add case for AIX procfs.
	* xcoff.c: New file.
	* configure, Makefile.in: Rebuild.

From-SVN: r250435
2017-07-21 18:05:08 +00:00
Nathan Sidwell
60f80e6541 call.c (add_candidates): Move decls to initialization.
* call.c (add_candidates): Move decls to initialization.  Don't
	use !!.

From-SVN: r250434
2017-07-21 17:58:48 +00:00
Ian Lance Taylor
048f0471d2 runtime: allocate more stack space in CgoCallbackGC test
Allocate enough stack space so that the test will work on a system
    that does not support split stacks.
    
    This test is actually not very meaningful for gccgo at present, but it
    doesn't hurt to keep running it.
    
    Updates golang/go#20931
    
    Reviewed-on: https://go-review.googlesource.com/50630

From-SVN: r250433
2017-07-21 17:50:14 +00:00
Steven Munroe
5a5838e09e Now completeting the mmintrin.h intrinsic headers for PowerPC by
adding the DG tests.

2017-07-21  Steven Munroe  <munroesj@gcc.gnu.org>

	* gcc.target/powerpc/mmx-check.h: New file.
	* gcc.target/powerpc/mmx-packs.c: New file.
	* gcc.target/powerpc/mmx-packssdw-1.c: New file.
	* gcc.target/powerpc/mmx-packsswb-1.c: New file.
	* gcc.target/powerpc/mmx-packuswb-1.c: New file.
	* gcc.target/powerpc/mmx-paddb-1.c: New file.
	* gcc.target/powerpc/mmx-paddd-1.c: New file.
	* gcc.target/powerpc/mmx-paddsb-1.c: New file.
	* gcc.target/powerpc/mmx-paddsw-1.c: New file.
	* gcc.target/powerpc/mmx-paddusb-1.c: New file.
	* gcc.target/powerpc/mmx-paddusw-1.c: New file.
	* gcc.target/powerpc/mmx-paddw-1.c: New file.
	* gcc.target/powerpc/mmx-pcmpeqb-1.c: New file.
	* gcc.target/powerpc/mmx-pcmpeqd-1.c: New file.
	* gcc.target/powerpc/mmx-pcmpeqw-1.c: New file.
	* gcc.target/powerpc/mmx-pcmpgtb-1.c: New file.
	* gcc.target/powerpc/mmx-pcmpgtd-1.c: New file.
	* gcc.target/powerpc/mmx-pcmpgtw-1.c: New file.
	* gcc.target/powerpc/mmx-pmaddwd-1.c: New file.
	* gcc.target/powerpc/mmx-pmulhw-1.c: New file.
	* gcc.target/powerpc/mmx-pmullw-1.c: New file.
	* gcc.target/powerpc/mmx-pslld-1.c: New file.
	* gcc.target/powerpc/mmx-psllw-1.c: New file.
	* gcc.target/powerpc/mmx-psrad-1.c: New file.
	* gcc.target/powerpc/mmx-psraw-1.c: New file.
	* gcc.target/powerpc/mmx-psrld-1.c: New file.
	* gcc.target/powerpc/mmx-psrlw-1.c: New file.
	* gcc.target/powerpc/mmx-psubb-2.c: New file.
	* gcc.target/powerpc/mmx-psubd-2.c: New file.
	* gcc.target/powerpc/mmx-psubsb-1.c: New file.
	* gcc.target/powerpc/mmx-psubsw-1.c: New file.
	* gcc.target/powerpc/mmx-psubusb-1.c: New file.
	* gcc.target/powerpc/mmx-psubusw-1.c: New file.
	* gcc.target/powerpc/mmx-psubw-2.c: New file.
	* gcc.target/powerpc/mmx-punpckhbw-1.c: New file.
	* gcc.target/powerpc/mmx-punpckhdq-1.c: New file.
	* gcc.target/powerpc/mmx-punpckhwd-1.c: New file.
	* gcc.target/powerpc/mmx-punpcklbw-1.c: New file.
	* gcc.target/powerpc/mmx-punpckldq-1.c: New file.
	* gcc.target/powerpc/mmx-punpcklwd-1.c: New file.

From-SVN: r250432
2017-07-21 17:44:22 +00:00
Andrew Pinski
27ecd5c2b0 tree-ssa-sccvn.c (vn_nary_op_eq): Check BIT_INSERT_EXPR's operand 1 to see if the types precision matches.
2017-07-21  Andrew Pinski  <apinski@cavium.com>

        * tree-ssa-sccvn.c (vn_nary_op_eq): Check BIT_INSERT_EXPR's
        operand 1 to see if the types precision matches.
        * fold-const.c (operand_equal_p): Likewise.

From-SVN: r250431
2017-07-21 10:16:51 -07:00
Jonathan Wakely
8c7331c556 Add AddressSanitizer annotations to std::vector
* config/allocator/malloc_allocator_base.h [__SANITIZE_ADDRESS__]
	(_GLIBCXX_SANITIZE_STD_ALLOCATOR): Define.
	* config/allocator/new_allocator_base.h [__SANITIZE_ADDRESS__]
	(_GLIBCXX_SANITIZE_STD_ALLOCATOR): Define.
	* doc/xml/manual/using.xml (_GLIBCXX_SANITIZE_VECTOR): Document macro.
	* include/bits/stl_vector.h [_GLIBCXX_SANITIZE_VECTOR]
	(_Vector_impl::_Asan, _Vector_impl::_Asan::_Reinit)
	(_Vector_impl::_Asan::_Grow, _GLIBCXX_ASAN_ANNOTATE_REINIT)
	(_GLIBCXX_ASAN_ANNOTATE_GROW, _GLIBCXX_ASAN_ANNOTATE_GREW)
	(_GLIBCXX_ASAN_ANNOTATE_SHRINK, _GLIBCXX_ASAN_ANNOTATE_BEFORE_DEALLOC):
	Define annotation helper types and macros.
	(vector::~vector, vector::push_back, vector::pop_back)
	(vector::_M_erase_at_end): Add annotations.
	* include/bits/vector.tcc (vector::reserve, vector::emplace_back)
	(vector::insert, vector::_M_erase, vector::operator=)
	(vector::_M_fill_assign, vector::_M_assign_aux)
	(vector::_M_insert_rval, vector::_M_emplace_aux)
	(vector::_M_insert_aux, vector::_M_realloc_insert)
	(vector::_M_fill_insert, vector::_M_default_append)
	(vector::_M_shrink_to_fit, vector::_M_range_insert): Annotate.

From-SVN: r250430
2017-07-21 17:05:10 +01:00
Georg-Johann Lay
5c2dee6fc9 re PR lto/81487 ([mingw32] ld.exe: error: asprintf failed)
lto-plugin/
	PR lto/81487
	* lto-plugin.c (claim_file_handler): Use xasprintf instead of
	asprintf.
	[hi!=0]: Swap hi and lo arguments supplied to xasprintf.

From-SVN: r250428
2017-07-21 15:58:14 +00:00
Richard Biener
d629ab4496 re PR tree-optimization/81303 (410.bwaves regression caused by r249919)
2017-07-21  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/81303
	* tree-vect-data-refs.c (vect_get_peeling_costs_all_drs): Pass
	in datarefs vector.  Allow NULL dr0 for no peeling cost estimate.
	(vect_peeling_hash_get_lowest_cost): Adjust.
	(vect_enhance_data_refs_alignment): Likewise.  Use
	vect_get_peeling_costs_all_drs to compute the penalty for no
	peeling to match up costs.

From-SVN: r250424
2017-07-21 11:32:39 +00:00
Richard Biener
9af7f3731b re PR tree-optimization/81500 (ICE with -O3 in process_use, at tree-vect-stmts.c:506)
2017-06-21  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/81500
	* tree-vect-loop.c (vect_is_simple_reduction): Properly fail if
	we didn't identify a reduction path.

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

From-SVN: r250423
2017-07-21 11:32:01 +00:00
Tom de Vries
8c38aed722 Add missing edge probabilities in nvptx_goacc_reduction_init
2017-07-21  Tom de Vries  <tom@codesourcery.com>
	    Cesar Philippidis  <cesar@codesourcery.com>

	PR gcov-profile/81442
	* config/nvptx/nvptx.c (nvptx_goacc_reduction_init): Add missing edge
	probabilities.

Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com>

From-SVN: r250422
2017-07-21 09:46:22 +00:00
Tom de Vries
967a353a72 Add nvptx_override_options_after_change
2017-07-21  Tom de Vries  <tom@codesourcery.com>

	PR lto/81430
	* config/nvptx/nvptx.c (nvptx_override_options_after_change): New
	function.
	(TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Define to
	nvptx_override_options_after_change.

From-SVN: r250421
2017-07-21 09:46:05 +00:00
Ulrich Drepper
4bb3f8b53f dwarf2out.c (output_file_names): Avoid double testing for dwarf_version >= 5.
gcc/
	* dwarf2out.c (output_file_names): Avoid double testing for
	dwarf_version >= 5.

From-SVN: r250420
2017-07-21 08:57:04 +00:00
Georg-Johann Lay
74360f142c invoke.texi (AVR Built-in Functions): Re-layout section.
gcc/
	* doc/invoke.texi (AVR Built-in Functions): Re-layout section.

From-SVN: r250419
2017-07-21 08:20:51 +00:00
Jan Hubicka
ba61fc5308 cfgcleanup.c (flow_find_cross_jump): Do not crossjump across hot/cold regions.
* cfgcleanup.c (flow_find_cross_jump): Do not crossjump across
	hot/cold regions.
	(try_crossjump_to_edge): Do not punt on partitioned functions.

From-SVN: r250418
2017-07-21 07:17:57 +00:00
Jan Hubicka
d9af4feaf0 bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges): Put all BBs reachable only via paths crossing cold region to cold region.
* bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
	Put all BBs reachable only via paths crossing cold region to cold
	region.
	* cfgrtl.c (find_bbs_reachable_by_hot_paths): New function.

From-SVN: r250417
2017-07-21 07:17:22 +00:00
Richard Biener
1dae21ad97 re PR tree-optimization/81303 (410.bwaves regression caused by r249919)
2016-07-21  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/81303
	* tree-vect-loop.c (vect_estimate_min_profitable_iters): Take
	into account prologue and epilogue iterations when raising
	min_profitable_iters to sth at least covering one vector iteration.

From-SVN: r250416
2017-07-21 07:13:57 +00:00
Tamar Christina
ac48cd5e89 arm.c (arm_test_cpu_arch_dat): Check for overlap.
2017-07-21  Tamar Christina  <tamar.christina@arm.com>

	* config/arm/arm.c (arm_test_cpu_arch_dat):
	Check for overlap.

From-SVN: r250415
2017-07-21 06:46:05 +00:00
Nathan Sidwell
5aaa8fb406 Remove TYPE_METHODS.
gcc/
	Remove TYPE_METHODS.
	* tree.h (TYPE_METHODS): Delete.
	* dwarf2out.c (gen_member_die): Member fns are on TYPE_FIELDS.
	* dbxout.c (dbxout_type_fields): Ignore FUNCTION_DECLs.
	(dbxout_type_methods): Scan TYPE_FIELDS.
	(dbxout_type): Don't check TYPE_METHODS here.
	* function.c (use_register_for_decl): Always ignore register for
	class types when not optimizing.
	* ipa-devirt.c (odr_types_equivalent_p): Delete TYPE_METHODS scan.
	* tree.c (free_lang_data_in_type): Stitch out member functions and
	templates from TYPE_FIELDS.
	(build_distinct_type_copy, verify_type_variant,
	verify_type): Member fns are on TYPE_FIELDS.
	* tree-dump.c (dequeue_and_dump): No TYPE_METHODS.
	* tree-pretty-print.c (dump_generic_node): Likewise.

	gcc/cp/
	Remove TYPE_METHODS.
	* class.c (maybe_warn_about_overly_private_class,
	finish_struct_methods, one_inheriting_sig, count_fields,
	add_fields_to_record_type, check_field_decls, check_methods,
	clone_function_decl, set_method_tm_attributes,
	finalize_literal_type_property, check_bases_and_members,
	create_vtable_ptr, determine_key_method,
	unreverse_member_declarations, finish_struct,
	add_vcall_offset_vtbl_entries_1): Member fns are on TYPE_FIELDS.
	* decl.c (fixup_anonymous_aggr): Likewise.
	* decl2.c (reset_type_linkage_2): Likewise.
	* method.c (after_nsdmi_defaulted_late_checks,
	lazily_declare_fn): Likewise.
	* optimize.c (maybe_thunk_body, maybe_clone_body): Likewise.
	* pt.c (instantiate_class_template_1, tsubst_expr,
	do_type_instantiation, instantiate_pending_templates): Likewise.
	* search.c (lookup_field_1): Likewise.
	* semantics.c (finish_member_declaration,
	finish_omp_declare_simd_methods): Likewise.

	gcc/c-family/
	Remove TYPE_METHODS.
	* c-ada-spec.c (is_tagged_type, has_nontrivial_methods,
	dump_ada_template, print_ada_methods,
	print_ada_declaration): Member fns are on TYPE_FIELDS.

	gcc/objc/
	Remove TYPE_METHODS.
	* objc-runtime-shared-support.c (build_ivar_list_initializer):
	Don't presume first item is a FIELD_DECL.

	gcc/testsuite/
	* g++.dg/ext/anon-struct6.C: Adjust diag.
	* g++.old-deja/g++.other/anon4.C: Adjust diag.

	libcc1/
	Remove TYPE_METHODS.
	* libcp1plugin.cc (plugin_build_decl): Member fns are on TYPE_FIELDS.

From-SVN: r250413
2017-07-21 00:27:51 +00:00
GCC Administrator
61612fa5da Daily bump.
From-SVN: r250412
2017-07-21 00:16:34 +00:00
Ian Lance Taylor
033e96a263 compiler: add explicit convert in Type_guard_expression::do_get_backend
The current recipe in Type_guard_expression for creating a Bexpression
    performs a type conversion at the Type level, but doesn't invoke
    Backend::convert_expression to capture the conversion for the back
    end. Add code to create a BE type conversion operation.
    
    Reviewed-on: https://go-review.googlesource.com/50373

From-SVN: r250400
2017-07-20 19:53:54 +00:00
Jakub Jelinek
2953b72fdd re PR target/80846 (auto-vectorized AVX2 horizontal sum should narrow to 128b right away, to be more efficient for Ryzen and Intel)
PR target/80846
	* config/i386/i386.c (ix86_expand_vector_init_general): Handle
	V2TImode and V4TImode.
	(ix86_expand_vector_extract): Likewise.
	* config/i386/sse.md (VMOVE): Enable V4TImode even for just
	TARGET_AVX512F, instead of only for TARGET_AVX512BW.
	(ssescalarmode): Handle V4TImode and V2TImode.
	(VEC_EXTRACT_MODE): Add V4TImode and V2TImode.
	(*vec_extractv2ti, *vec_extractv4ti): New insns.
	(VEXTRACTI128_MODE): New mode iterator.
	(splitter for *vec_extractv?ti first element): New.
	(VEC_INIT_MODE): New mode iterator.
	(vec_init<mode>): Consolidate 3 expanders into one using
	VEC_INIT_MODE mode iterator.

	* gcc.target/i386/avx-pr80846.c: New test.
	* gcc.target/i386/avx2-pr80846.c: New test.
	* gcc.target/i386/avx512f-pr80846.c: New test.

From-SVN: r250397
2017-07-20 18:36:18 +02:00
Alexander Monakov
f0a404561c lra-assigns.c: fix pseudo_compare_func
* lra-assigns.c (pseudo_compare_func): Fix comparison step based on
	non_spilled_static_chain_regno_p.

From-SVN: r250395
2017-07-20 18:15:55 +03:00
Alexander Monakov
109cca3b53 gimple-ssa-store-merging.c: fix sort_by_bitpos
* gimple-ssa-store-merging.c (sort_by_bitpos): Return 0 on equal bitpos.

From-SVN: r250394
2017-07-20 18:13:56 +03:00
Jan Hubicka
584bafb66d bb-reorder.c (connect_traces): Allow copying of blocks within single partition.
* bb-reorder.c (connect_traces): Allow copying of blocks within
	single partition.

From-SVN: r250390
2017-07-20 14:27:41 +00:00
Eric Botcazou
0574d9aeac Minor tweaks
From-SVN: r250386
2017-07-20 12:54:42 +00:00
Richard Biener
3fa4fad497 gimple.h (gimple_phi_result): Add gphi * overload.
2017-07-20  Richard Biener  <rguenther@suse.de>

	* gimple.h (gimple_phi_result): Add gphi * overload.
	(gimple_phi_result_ptr): Likewise.
	(gimple_phi_arg): Likewise.  Adjust index assert to only
	allow actual argument accesses rather than all slots available
	by capacity.
	(gimple_phi_arg_def): Add gphi * overload.
	* tree-phinodes.c (make_phi_node): Initialize only actual
	arguments.
	(resize_phi_node): Clear memory not covered by old node,
	do not initialize excess argument slots.
	(reserve_phi_args_for_new_edge): Initialize new argument slot
	completely.

From-SVN: r250385
2017-07-20 12:37:14 +00:00
Bin Cheng
73c4b4df26 re PR tree-optimization/81388 (Incorrect code generation with -O1)
PR tree-optimization/81388
	Revert r238585:
	2016-07-21  Bin Cheng  <bin.cheng@arm.com>

	* tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Clean up
	by removing computation of may_be_zero.

	gcc/testsuite
	PR tree-optimization/81388
	* gcc.dg/tree-ssa/pr81388-1.c: New test.
	* gcc.dg/tree-ssa/pr81388-2.c: New test.

From-SVN: r250384
2017-07-20 12:02:19 +00:00
Jan Hubicka
77e5edafaf re PR middle-end/81030 (ICE on valid code at -O1 (only) on x86_64-linux-gnu: verify_flow_info failed)
PR middle-end/81030
	* cfgbuild.c (find_many_sub_basic_blocks): Update REG_BR_PROB note
	when gimple level profile disagrees with what RTL expander did.
	* gcc.dg/pr81030.c: New test.

From-SVN: r250383
2017-07-20 11:27:31 +00:00
Richard Biener
891ad31c7b re PR tree-optimization/61171 (vectorization fails for a reduction in presence of subtraction)
2017-07-20  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/61171
	* tree-vectorizer.h (slp_instance): Add reduc_phis member.
	(vect_analyze_stmt): Add slp instance parameter.
	(vectorizable_reduction): Likewise.
	* tree-vect-loop.c (vect_analyze_loop_operations): Adjust.
	(vect_is_simple_reduction): Deal with chains not detected
	as SLP reduction chain, specifically not properly associated
	chains containing a mix of plus/minus.
	(get_reduction_op): Remove.
	(get_initial_defs_for_reduction): Simplify, pass in whether
	this is a reduction chain, pass in the SLP node for the PHIs.
	(vect_create_epilog_for_reduction): Get the SLP instance as
	arg and adjust.
	(vectorizable_reduction): Get the SLP instance as arg.
	During analysis remember the SLP node with the PHIs in the
	instance.  Simplify getting at the vectorized reduction PHIs.
	* tree-vect-slp.c (vect_slp_analyze_node_operations): Pass
	through SLP instance.
	(vect_slp_analyze_operations): Likewise.
	* tree-vect-stms.c (vect_analyze_stmt): Likewise.
	(vect_transform_stmt): Likewise.

	* g++.dg/vect/pr61171.cc: New testcase.
	* gfortran.dg/vect/pr61171.f: Likewise.
	* gcc.dg/vect/vect-reduc-11.c: Likewise.

From-SVN: r250382
2017-07-20 11:17:21 +00:00
Richard Biener
f971b2813d slp-43.c: Increase loop count to enable vectorization with V64QImode.
2017-07-20  Richard Biener  <rguenther@suse.de>

	* gcc.dg/vect/slp-43.c: Increase loop count to enable vectorization
	with V64QImode.
	* gcc.dg/vect/slp-45.c: Likewise.

From-SVN: r250380
2017-07-20 10:03:34 +00:00
Tom de Vries
c9930ecd9c Fix phi arg location in find_implicit_erroneous_behavior
2017-07-20  Tom de Vries  <tom@codesourcery.com>

	PR tree-optimization/81489
	* gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Move
	read of phi arg location to before loop that modifies phi.

From-SVN: r250378
2017-07-20 07:16:01 +00:00
Naveen H.S
2071f8f980 match.pd (((m1 >/</>=/<= m2) * d -> (m1 >/</>=/<= m2) ? d : 0): New pattern.
gcc
	* match.pd (((m1 >/</>=/<= m2) * d -> (m1 >/</>=/<= m2) ? d : 0):
	New pattern.

gcc/testsuite
	* gcc.dg/tree-ssa/vrp116.c: New Test.

From-SVN: r250377
2017-07-20 03:57:48 +00:00
GCC Administrator
b882559a11 Daily bump.
From-SVN: r250376
2017-07-20 00:16:24 +00:00
Jan Hubicka
205b602693 re PR regression/81331 (missed Eh delivery in partitioned function)
PR middle-end/81331
	* except.c (execute): Fix ordering issue.

From-SVN: r250370
2017-07-19 21:06:55 +00:00
Gerald Pfeifer
a8d6055a56 * math/powq.c (powq): Use uint32_t instead of u_int32_t.
From-SVN: r250367
2017-07-19 19:53:58 +00:00
Jonathan Wakely
304a15ec64 PR libstdc++/81476 Optimise vector insertion from input iterators
PR libstdc++/81476
	* include/bits/vector.tcc (vector::_M_range_insert<_InputIterator>):
	Only insert elements one-by-one when inserting at the end.
	* testsuite/performance/23_containers/insert/81476.cc: New.

From-SVN: r250366
2017-07-19 20:32:15 +01:00
Segher Boessenkool
6cdcce60ff combine: Fix for PR81423
We here have an AND of a SUBREG of an LSHIFTRT.  If that SUBREG is
paradoxical, the extraction we form is the length of the size of the
inner mode, which includes some bits that should not be in the result.
Just give up in that case.


	PR rtl-optimization/81423
	* combine.c (make_compound_operation_int): Don't try to optimize
	the AND of a SUBREG of an LSHIFTRT if that SUBREG is paradoxical.

From-SVN: r250365
2017-07-19 21:31:26 +02:00
Michael Meissner
a6722e5bf2 cpu-builtin-1.c: Change test to use #ifdef __BUILTIN_CPU_SUPPORTS to see if...
2017-07-19  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* gcc.target/powerpc/cpu-builtin-1.c: Change test to use #ifdef
	__BUILTIN_CPU_SUPPORTS to see if the GLIBC is new enough that
	__builtin_cpu_is and __builtin_cpu_supports are supported.

From-SVN: r250364
2017-07-19 19:29:16 +00:00
Segher Boessenkool
3d50b6045a simplify-rtx: The truncation of an IOR can have all bits set (PR81423)
... if it is an IOR with a constant with all bits set in the mode
that is truncated to, for example.  Handle that case.


	PR rtl-optimization/81423
	* simplify-rtx.c (simplify_truncation): Handle truncating an IOR
	with a constant that is -1 in the truncated to mode.

From-SVN: r250363
2017-07-19 21:28:41 +02:00
Steven Munroe
ccfa843f67 Fix up plafform testes in check headers.
Fix up plafform testes in check headers. After a resent GCC change
the previously submitted BMI/BMI2 intrinsic test started to fail
with a warning/error.

[gcc/testsuite]

2017-07-19  Steven Munroe  <munroesj@gcc.gnu.org>

	* gcc.target/powerpc/bmi-check.h (main): Skip unless
	__BUILTIN_CPU_SUPPORTS__ defined.
	* gcc.target/powerpc/bmi2-check.h (main): Skip unless
	__BUILTIN_CPU_SUPPORTS__ defined.

From-SVN: r250362
2017-07-19 19:04:50 +00:00
Jan Hubicka
8b5d71cd61 predict.c (propagate_unlikely_bbs_forward): Break out from ...
* predict.c (propagate_unlikely_bbs_forward): Break out from ...
	(determine_unlikely_bbs): ... here.
	* predict.h (propagate_unlikely_bbs_forward): Declare.
	* cfgexpand.c (pass_expand::execute): Use it.
	* bb-reorder.c (sanitize_hot_paths): Do not consider known to be
	unlikely edges.
	(find_rarely_executed_basic_blocks_and_crossing_edges): Use
	propagate_unlikely_bbs_forward.

From-SVN: r250360
2017-07-19 18:09:39 +00:00