Commit Graph

66337 Commits

Author SHA1 Message Date
Jakub Jelinek e1201dff2f re PR c++/80297 (Compiler time crash: type mismatch in binary expression)
PR c++/80297
	* genmatch.c (capture::gen_transform): For GENERIC unshare_expr
	captures used multiple times, except for the last use.
	* generic-match-head.c: Include gimplify.h.

	* g++.dg/torture/pr80297.C: New test.

Co-Authored-By: Richard Biener <rguenther@suse.de>

From-SVN: r246693
2017-04-04 21:14:47 +02:00
Jakub Jelinek d16e2ddd26 re PR tree-optimization/79390 (10% performance drop in SciMark2 LU after r242550)
PR tree-optimization/79390
	* target.h (struct noce_if_info): Declare.
	* targhooks.h (default_noce_conversion_profitable_p): Declare.
	* target.def (noce_conversion_profitable_p): New target hook.
	* ifcvt.h (struct noce_if_info): New type, moved from ...
	* ifcvt.c (struct noce_if_info): ... here.
	(noce_conversion_profitable_p): Renamed to ...
	(default_noce_conversion_profitable_p): ... this.  No longer
	static nor inline.
	(noce_try_store_flag_constants, noce_try_addcc,
	noce_try_store_flag_mask, noce_try_cmove, noce_try_cmove_arith,
	noce_convert_multiple_sets): Use targetm.noce_conversion_profitable_p
	instead of noce_conversion_profitable_p.
	* config/i386/i386.c: Include ifcvt.h.
	(ix86_option_override_internal): Don't override
	PARAM_MAX_RTL_IF_CONVERSION_INSNS default.
	(ix86_noce_conversion_profitable_p): New function.
	(TARGET_NOCE_CONVERSION_PROFITABLE_P): Redefine.
	* config/i386/x86-tune.def (X86_TUNE_ONE_IF_CONV_INSN): Adjust comment.
	* doc/tm.texi.in (TARGET_NOCE_CONVERSION_PROFITABLE_P): Add.
	* doc/tm.texi: Regenerated.

	* gcc.target/i386/pr79390.c: New test.
	* gcc.dg/ifcvt-4.c: Use -mtune-ctrl=^one_if_conv_insn for i?86/x86_64.

From-SVN: r246686
2017-04-04 19:52:27 +02:00
Bill Schmidt e2b2c4b9fb extend.texi (PowerPC AltiVec Built-in Functions): Grammar correction.
2017-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* doc/extend.texi (PowerPC AltiVec Built-in Functions): Grammar
	correction.

From-SVN: r246684
2017-04-04 16:31:58 +00:00
Thomas Preud'homme a1527a93a6 [ARM] Fix small multiply feature
2017-04-03  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    PR target/80307
    * config/arm/arm.c (thumb1_rtx_costs): Give a cost of 32
    instructions for small multiply cores.

    gcc/testsuite/
    PR target/80307
    * gcc.target/arm/small-multiply-m0-1.c: Do not skip test if not
    targeting any CPU or architecture.
    * gcc.target/arm/small-multiply-m0-2.c: Likewise.
    * gcc.target/arm/small-multiply-m0-3.c: Likewise.
    * gcc.target/arm/small-multiply-m0plus-1.c: Likewise.
    * gcc.target/arm/small-multiply-m0plus-2.c: Likewise.
    * gcc.target/arm/small-multiply-m0plus-3.c: Likewise.
    * gcc.target/arm/small-multiply-m1-1.c: Likewise.
    * gcc.target/arm/small-multiply-m1-2.c: Likewise.
    * gcc.target/arm/small-multiply-m1-3.c: Likewise.

From-SVN: r246682
2017-04-04 16:24:18 +00:00
Jeff Law 8734bc7232 mips.c (mips_multi_add): Zero initialize the newly added member.
* config/mips/mips.c (mips_multi_add): Zero initialize the newly
	added member.
	(mips_expand_vec_perm_const): Initialize elements in orig_perm
	that are not set by the loop over the elements.

From-SVN: r246681
2017-04-04 09:30:30 -06:00
Jakub Jelinek b1fd967c2c re PR target/80286 (AVX2 _mm_cvtsi128_si32 doesn't return a proper 32bits int)
PR target/80286
	* config/i386/i386.c (ix86_expand_args_builtin): If op has scalar
	int mode, convert_modes it to mode as unsigned, otherwise use
	lowpart_subreg to mode rather than SImode.
	* config/i386/sse.md (<mask_codefor>ashr<mode>3<mask_name>,
	ashr<mode>3, ashr<mode>3<mask_name>, <shift_insn><mode>3<mask_name>):
	Use DImode instead of SImode for the shift count operand.
	* config/i386/mmx.md (mmx_ashr<mode>3, mmx_<shift_insn><mode>3):
	Likewise.
testsuite/
	* gcc.target/i386/avx-pr80286.c: New test.
	* gcc.dg/pr80286.c: New test.

From-SVN: r246676
2017-04-04 12:45:55 +02:00
Richard Biener 248179b5fc re PR tree-optimization/80281 (Wrong constant folding)
2017-04-04  Richard Biener  <rguenther@suse.de>

	PR middle-end/80281
	* match.pd (A + (-B) -> A - B): Make sure to preserve unsigned
	arithmetic done for the negate or the plus.  Simplify.
	(A - (-B) -> A + B): Likewise.
	* fold-const.c (split_tree): Make sure to not negate pointers.

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

From-SVN: r246674
2017-04-04 09:06:04 +00:00
Segher Boessenkool 833bbf60ce simplify-rtx: Fix compare of comparisons (PR60818)
The function simplify_binary_operation_1 has code that does
/* Convert (compare (gt (flags) 0) (lt (flags) 0)) to (flags).  */
but this transformation is only valid if "flags" has the same machine
mode as the outer compare.  This fixes it.


	PR rtl-optimization/60818
	* simplify-rtx.c (simplify_binary_operation_1): Do not replace
	a compare of comparisons with the thing compared if this results
	in a different machine mode.

gcc/testsuite/
	PR rtl-optimization/60818
	* gcc.c-torture/compile/pr60818.c: New testcase.

From-SVN: r246666
2017-04-04 02:10:02 +02:00
Jonathan Wakely 5764ee3c84 Fix numerous typos in comments
gcc:

	* alias.c (base_alias_check): Fix typo in comment.
	* cgraph.h (class ipa_polymorphic_call_context): Likewise.
	* cgraphunit.c (symbol_table::compile): Likewise.
	* collect2.c (maybe_run_lto_and_relink): Likewise.
	* config/arm/arm.c (arm_thumb1_mi_thunk): Likewise.
	* config/avr/avr-arch.h (avr_arch_info_t): Likewise.
	* config/avr/avr.c (avr_map_op_t): Likewise.
	* config/cr16/cr16.h (DATA_ALIGNMENT): Likewise.
	* config/epiphany/epiphany.c (TARGET_ARG_PARTIAL_BYTES): Likewise.
	* config/epiphany/epiphany.md (movcc): Likewise.
	* config/i386/i386.c (legitimize_pe_coff_extern_decl): Likewise.
	* config/m68k/m68k.c (struct _sched_ib, m68k_sched_variable_issue):
	Likewise.
	* config/mips/mips.c (mips_save_restore_reg): Likewise.
	* config/rx/rx.c (rx_is_restricted_memory_address): Likewise.
	* config/s390/s390.c (Z10_EARLYLOAD_DISTANCE): Likewise.
	* config/sh/sh.c (sh_rtx_costs): Likewise.
	* fold-const.c (fold_truth_andor): Likewise.
	* genautomata.c (collapse_flag): Likewise.
	* gengtype.h (struct type::u::s): Likewise.
	* gensupport.c (has_subst_attribute, add_mnemonic_string): Likewise.
	* input.c (FORMAT_AMOUNT): Likewise.
	* ipa-cp.c (class ipcp_lattice, agg_replacements_to_vector)
	(known_aggs_to_agg_replacement_list): Likewise.
	* ipa-inline-analysis.c: Likewise.
	* ipa-inline.h (estimate_edge_time, estimate_edge_hints): Likewise.
	* ipa-polymorphic-call.c
	(ipa_polymorphic_call_context::restrict_to_inner_class): Likewise.
	* loop-unroll.c (analyze_insn_to_expand_var): Likewise.
	* lra.c (lra_optional_reload_pseudos, lra_subreg_reload_pseudos):
	Likewise.
	* modulo-sched.c (apply_reg_moves): Likewise.
	* omp-expand.c (build_omp_regions_1): Likewise.
	* trans-mem.c (struct tm_wrapper_hasher): Likewise.
	* tree-ssa-loop-ivopts.c (may_eliminate_iv): Likewise.
	* tree-ssa-loop-niter.c (maybe_lower_iteration_bound): Likewise.
	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
	* value-prof.c: Likewise.
	* var-tracking.c (val_reset): Likewise.

gcc/ada:

	* doc/gnat_ugn/gnat_and_program_execution.rst: Fix typo.
	* g-socket.adb (To_Host_Entry): Fix typo in comment.
	* gnat_ugn.texi: Fix typo.
	* raise.c (_gnat_builtin_longjmp): Fix capitalization in comment.
	* s-stposu.adb (Allocate_Any_Controlled): Fix typo in comment.
	* sem_ch3.adb (Build_Derived_Record_Type): Likewise.
	* sem_util.adb (Mark_Coextensions): Likewise.
	* sem_util.ads (Available_Full_View_Of_Component): Likewise.

gcc/c:

	* c-array-notation.c: Fix typo in comment.

gcc/c-family:

	* c-warn.c (do_warn_double_promotion): Fix typo in comment.

gcc/cp:

        * class.c (update_vtable_entry_for_fn): Fix typo in comment.
	* decl2.c (one_static_initialization_or_destruction): Likewise.
	* name-lookup.c (store_bindings): Likewise.
	* parser.c (make_call_declarator): Likewise.
	* pt.c (check_explicit_specialization): Likewise.

gcc/testsuite:

	* g++.old-deja/g++.benjamin/scope02.C: Fix typo in comment.
	* gcc.dg/20031012-1.c: Likewise.
	* gcc.dg/ipa/ipcp-1.c: Likewise.
	* gcc.dg/torture/matrix-3.c: Likewise.
	* gcc.target/powerpc/ppc-spe.c: Likewise.
	* gcc.target/rx/zero-width-bitfield.c: Likewise.

libcpp:

	* include/line-map.h (LINEMAPS_MACRO_MAPS): Fix typo in comment.
	* lex.c (search_line_fast): Likewise.
	* pch.h (cpp_valid_state): Likewise.

libdecnumber:

	* decCommon.c (decFloatFromPackedChecked): Fix typo in comment.
	* decNumber.c (decNumberPower, decMultiplyOp): Likewise.

libgcc:

	* config/c6x/pr-support.c (__gnu_unwind_execute): Fix typo in comment.

libitm:

	* libitm_i.h (sutrct gtm_thread): Fix typo in comment.

From-SVN: r246664
2017-04-03 23:30:56 +01:00
Richard Biener fff80893ba re PR tree-optimization/80275 (Poor (but valid) code generated by optimizer passing optimizer list to function)
2017-04-03  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/80275
	* fold-const.c (split_address_to_core_and_offset): Handle
	POINTER_PLUS_EXPR.

	* g++.dg/opt/pr80275.C: New testcase.

From-SVN: r246648
2017-04-03 12:22:22 +00:00
Eric Botcazou 0be1d23cc3 tree-nested.c (get_descriptor_type): Make sure that the alignment of descriptors is at least equal to that of functions.
* tree-nested.c (get_descriptor_type): Make sure that the alignment of
	descriptors is at least equal to that of functions.

From-SVN: r246646
2017-04-03 11:02:59 +00:00
Uros Bizjak 5ada68f2c8 sse.md (movdi_to_sse): Add missing DONE.
* config/i386/sse.md (movdi_to_sse): Add missing DONE.

From-SVN: r246638
2017-04-02 21:07:58 +02:00
Uros Bizjak d4a8fcafe5 re PR target/80250 (ICE in in final_scan_insn, at final.c:3025 for __builtin_ia32_vp4dpwssds_mask builtin)
PR target/80250
	* config/i386/sse.md (mov<IMOD4:mode>): Remove insn pattern.
	(mov<IMOD4:mode>): New expander.
	(*mov<IMOD4:mode>_internal): New insn and split pattern.

From-SVN: r246637
2017-04-02 20:19:02 +02:00
Segher Boessenkool a5a9046deb re PR rtl-optimization/79405 (Infinite loop in fwprop)
PR rtl-optimization/79405
	* fwprop.c (propagations_left): New variable.
	(forward_propagate_into): Decrement it.
	(fwprop_init): Initialize it.
	(fw_prop): If the variable has reached zero, stop propagating.
	(fwprop_addr): Ditto.

gcc/testsuite/
	PR rtl-optimization/79405
	gcc.dg/pr79405.c: New testcase.

From-SVN: r246627
2017-03-31 16:49:53 -06:00
Jakub Jelinek eee3756de3 re PR bootstrap/79255 (PGO bootstrap fails on x86_64/ppc64le building Ada)
PR debug/79255
	* dwarf2out.c (decls_for_scope): If BLOCK_NONLOCALIZED_VAR is
	a FUNCTION_DECL, pass it as decl instead of origin to
	process_scope_var.

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

From-SVN: r246622
2017-03-31 20:40:35 +02:00
Alexander Monakov 77734296b4 nvptx: correct format string
* config/nvptx/nvptx.c (nvptx_output_softstack_switch): Correct format
	string.

From-SVN: r246620
2017-03-31 19:22:00 +03:00
Pat Haugen 99e6cfd6c1 re PR target/80107 (ICE in final_scan_insn, at final.c:2964)
PR target/80107
	* config/rs6000/rs6000.md (extendhi<mode>2): Add test for
	TARGET_VSX_SMALL_INTEGER.
	* gfortran.dg/pr80107.f: New.

From-SVN: r246619
2017-03-31 15:59:46 +00:00
Bill Schmidt 3a44da9ea7 extend.texi (PowerPC AltiVec Built-in Functions): Add reference to the OpenPOWER 64-Bit ELF V2 ABI Specification.
2017-03-31  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* doc/extend.texi (PowerPC AltiVec Built-in Functions):	Add
	reference to the OpenPOWER 64-Bit ELF V2 ABI Specification.

From-SVN: r246617
2017-03-31 15:04:34 +00:00
Matthew Fortune c330f78894 Fix extraction from odd-numbered MSA registers
This fixes a build-failure with gcc.c-torture/execute/20050604-1.c when
using -mabi=32 -mmsa -mno-odd-spreg.

gcc/
	* config/mips/mips-msa.md (msa_vec_extract_<msafmt_f>): Update
	extraction from odd-numbered MSA register.

From-SVN: r246613
2017-03-31 09:21:57 +00:00
Jakub Jelinek 7d79016545 re PR middle-end/80173 (ICE in store_bit_field_1, at expmed.c:787)
PR middle-end/80173
	* expmed.c (store_bit_field_1): Don't attempt to create
	a word subreg out of hard registers wider than word if they
	have HARD_REGNO_NREGS of 1 for their mode.

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

From-SVN: r246608
2017-03-31 08:38:35 +02:00
Jakub Jelinek a7d5515419 re PR middle-end/80163 (ICE on hopefully valid code)
PR middle-end/80163
	* varasm.c (initializer_constant_valid_p_1): Disallow sign-extending
	conversions to integer types wider than word and pointer.

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

From-SVN: r246607
2017-03-31 08:32:46 +02:00
Jakub Jelinek 005f12bf67 re PR debug/80025 (ICE w/ -O2 (-O3, -Ofast) -g -ftracer (infinite recursion in rtx_equal_for_cselib_1))
PR debug/80025
	* cselib.h (rtx_equal_for_cselib_1): Add depth argument.
	(rtx_equal_for_cselib_p): Pass 0 to it.
	* cselib.c (cselib_hasher::equal): Likewise.
	(rtx_equal_for_cselib_1): Add depth argument.  If depth
	is 128, don't look up VALUE locs and punt.  Increment
	depth in recursive calls when walking VALUE locs.

	* gcc.dg/torture/pr80025.c: New test.

From-SVN: r246606
2017-03-31 08:05:47 +02:00
Bernd Edlinger 62a767024c gcov.c (md5sum_to_hex): Fix output of MD5 hex bytes.
2017-03-31  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * gcov.c (md5sum_to_hex): Fix output of MD5 hex bytes.
        (make_gcov_file_name): Use the canonical path name for generating
        the MD5 value.
        (read_line): Fix handling of files with ascii null bytes.

From-SVN: r246605
2017-03-31 02:52:39 +00:00
Matthew Fortune 6c18efd4e2 Fix ICE when expanding MSA constant vectors with replicated values
gcc/
	* config/mips/mips.c (mips_expand_vector_init): Create
	a const_vector to initialise a vector register instead of
	using a const_int.

From-SVN: r246601
2017-03-30 22:47:38 +00:00
Jakub Jelinek 724d25f353 re PR translation/80189 (gimplify.c: check whether parallel/task/teams should be translated)
PR translation/80189
	* gimplify.c (omp_default_clause): Use %qs instead of %s in
	diagnostic messages.
testsuite/
	* g++.dg/gomp/predetermined-1.C: Adjust expected diagnostics.
	* g++.dg/gomp/sharing-1.C: Likewise.
	* gfortran.dg/gomp/pr44536.f90: Likewise.
	* gfortran.dg/gomp/pr44036-1.f90: Likewise.
	* gfortran.dg/gomp/sharing-3.f90: Likewise.
	* gfortran.dg/gomp/crayptr3.f90: Likewise.
	* gfortran.dg/gomp/pr33439.f90: Likewise.
	* gfortran.dg/gomp/appendix-a/a.24.1.f90: Likewise.
	* gfortran.dg/gomp/sharing-1.f90: Likewise.
	* gfortran.dg/gomp/sharing-2.f90: Likewise.
	* gcc.dg/gomp/appendix-a/a.24.1.c: Likewise.
	* gcc.dg/gomp/sharing-1.c: Likewise.

From-SVN: r246599
2017-03-30 22:31:40 +02:00
Peter Bergner 05dc406d7a re PR target/80246 (Builtin's for POWER's dxex[q] and diex[q] use the wrong types)
gcc/
	PR target/80246
	* config/rs6000/dfp.md (dfp_dxex_<mode>): Update mode of operand 0.
	(dfp_diex_<mode>): Update mode of operand 1.
	* doc/extend.texi (dxex, dxexq): Document change to return type.
	(diex, diexq): Document change to argument type.

gcc/testsuite/
	PR target/80246
	* gcc.target/powerpc/dfp-builtin-1.c: Remove unneeded dg-skip-if for
	Darwin and SPE.
	(dxex, dxexq): Update return type.
	(diex, diexq): Update argument type.
	* gcc.target/powerpc/pr80246.c: New test.

From-SVN: r246594
2017-03-30 14:57:20 -05:00
Martin Jambor b0fd4d7e32 [PR 77333] Fixup fntypes of gimple calls of clones
2017-03-30  Martin Jambor  <mjambor@suse.cz>

	PR ipa/77333
	* cgraph.h (cgraph_build_function_type_skip_args): Declare.
	* cgraph.c (redirect_call_stmt_to_callee): Set gimple fntype so that
	it reflects the signature changes performed at the callee side.
	* cgraphclones.c (build_function_type_skip_args): Make public, renamed
	to cgraph_build_function_type_skip_args.
	(build_function_decl_skip_args): Adjust call to the above function.

testsuite/
	* g++.dg/ipa/pr77333.C: New test.

From-SVN: r246589
2017-03-30 15:51:02 +02:00
Jakub Jelinek de008ec4d6 re PR target/80206 (ICE in extract_insn, at recog.c:2327)
PR target/80206
	* config/i386/sse.md
	(<extract_type>_vextract<shuffletype><extract_suf>_mask): Use
	register as dest whenever it is a MEM not rtx_equal_p to the
	corresponding dup operand, and when forcing into reg move the
	reg into the memory afterwards.
	(<extract_type_2>_vextract<shuffletype><extract_suf_2>_mask):
	Likewise.  Use <ssehalfvecmode> instead of <ssequartermode>
	for the force_reg mode.
	(avx512vl_vextractf128<mode>): Use register as dest either
	always when a MEM, or when it is a MEM not rtx_equal_p to the
	corresponding dup operand, or even not when it is a CONST_VECTOR
	depending on the mode and lo vs. hi.
	(avx512dq_vextract<shuffletype>64x2_1_maskm): Remove extraneous
	parens.
	(avx512f_vextract<shuffletype>32x4_1_maskm): Likewise.
	(<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name>):
	Likewise.  Require that operands[2] is even.
	(<mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name>):
	Remove extraneous parens.  Require that operands[2] is a multiple
	of 4.
	(vec_extract_lo_<mode><mask_name>): Don't bother testing if
	operands[0] is a MEM if <mask_applied>, the predicates/constraints
	disallow memory then.

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

From-SVN: r246588
2017-03-30 15:29:28 +02:00
Richard Biener 28c0240778 re PR tree-optimization/77498 (Performance drop after r239414 on spec2000/172mgrid)
2017-03-30  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/77498
	* tree-ssa-pre.c (phi_translate_1): Do not allow simplifications
	to non-constants over backedges.

	* gfortran.dg/pr77498.f: New testcase.

From-SVN: r246583
2017-03-30 07:15:39 +00:00
Segher Boessenkool 533c0b6943 combine: Fix PR80233
If combine has added an unconditional trap there will be a new basic
block as well.  It will then end up considering the NOTE_INSN_BASIC_BLOCK
as the last_combined_insn, but then it tries to take the DF_INSN_LUID
of that and that dereferences a NULL pointer (since such a note is not
an INSN_P).

This fixes it by not taking non-insns as last_combined_insn.


	PR rtl-optimization/80233
	* combine.c (combine_instructions): Only take NONDEBUG_INSN_P insns
	as last_combined_insn.  Do not test for BARRIER_P separately.

gcc/testsuite/
	PR rtl-optimization/80233
	* gcc.c-torture/compile/pr80233.c: New testcase.

From-SVN: r246575
2017-03-29 22:53:59 +02:00
Andreas Schwab 84355514f4 re PR ada/80146 (ICE in copy_to_mode_reg, at explow.c:612)
PR ada/80146
	* calls.c (prepare_call_address): Convert funexp to Pmode before
	copying to temp reg.

From-SVN: r246570
2017-03-29 14:18:07 +00:00
William Schmidt 8777357cb5 Change log cleanup from 2017-03-21
From-SVN: r246569
2017-03-29 13:00:56 +00:00
Bill Schmidt 9fbbba7105 re PR tree-optimization/80158 (ICE in all_phi_incrs_profitable)
2017-03-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	PR tree-optimization/80158
	* gimple-ssa-strength-reduction.c (replace_mult_candidate):
	Handle possible future case of more than one alternate
	interpretation.
	(replace_rhs_if_not_dup): Likewise.
	(replace_one_candidate): Likewise.


Co-Authored-By: Richard Biener <rguenther@suse.de>

From-SVN: r246567
2017-03-29 12:56:26 +00:00
Vladimir Makarov e5119fab4f re PR rtl-optimization/80193 (ICE on valid (but hairy) C code at -O3 on x86_64-linux-gnu: in check_allocation, at ira.c:2563)
2017-03-28  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/80193
	* ira.c (ira): Do not check allocation for LRA.

2017-03-28  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/80193
	* gcc.target/i386/pr80193.c: New.

From-SVN: r246554
2017-03-28 20:55:38 +00:00
Alexander Monakov 0c6b03b515 OpenMP/PTX privatization in SIMD regions
* config/nvptx/nvptx-protos.h (nvptx_output_simt_enter): Declare.
	(nvptx_output_simt_exit): Declare.
	* config/nvptx/nvptx.c (nvptx_init_unisimt_predicate): Use
	cfun->machine->unisimt_location.  Handle NULL unisimt_predicate.
	(init_softstack_frame): Move initialization of crtl->is_leaf to...
	(nvptx_declare_function_name): ...here.  Emit declaration of local
	memory space buffer for omp_simt_enter insn.
	(nvptx_output_unisimt_switch): New.
	(nvptx_output_softstack_switch): New.
	(nvptx_output_simt_enter): New.
	(nvptx_output_simt_exit): New.
	* config/nvptx/nvptx.h (struct machine_function): New fields
	has_simtreg, unisimt_location, simt_stack_size, simt_stack_align.
	* config/nvptx/nvptx.md (UNSPECV_SIMT_ENTER): New unspec.
	(UNSPECV_SIMT_EXIT): Ditto.
	(omp_simt_enter_insn): New insn.
	(omp_simt_enter): New expansion.
	(omp_simt_exit): New insn.
	* config/nvptx/nvptx.opt (msoft-stack-reserve-local): New option.

	* internal-fn.c (expand_GOMP_SIMT_ENTER): New.
	(expand_GOMP_SIMT_ENTER_ALLOC): New.
	(expand_GOMP_SIMT_EXIT): New.
	* internal-fn.def (GOMP_SIMT_ENTER): New internal function.
	(GOMP_SIMT_ENTER_ALLOC): Ditto.
	(GOMP_SIMT_EXIT): Ditto.
	* target-insns.def (omp_simt_enter): New insn.
	(omp_simt_exit): Ditto.
	* omp-low.c (struct omplow_simd_context): New fields simt_eargs,
	simt_dlist.
	(lower_rec_simd_input_clauses): Implement SIMT privatization.
	(lower_rec_input_clauses): Likewise.
	(lower_lastprivate_clauses): Handle SIMT privatization.

	* omp-offload.c: Include langhooks.h, tree-nested.h, stor-layout.h.
	(ompdevlow_adjust_simt_enter): New.
	(find_simtpriv_var_op): New.
	(execute_omp_device_lower): Handle IFN_GOMP_SIMT_ENTER,
	IFN_GOMP_SIMT_ENTER_ALLOC, IFN_GOMP_SIMT_EXIT.

	* tree-inline.h (struct copy_body_data): New field dst_simt_vars.
	* tree-inline.c (expand_call_inline): Handle SIMT privatization.
	(copy_decl_for_dup_finish): Ditto.

	* tree-ssa.c (execute_update_addresses_taken): Handle GOMP_SIMT_ENTER.

From-SVN: r246550
2017-03-28 20:24:57 +03:00
Uros Bizjak 189d9d3a8f * ChangeLog: Fix my ChangeLog entry.
From-SVN: r246545
2017-03-28 18:53:50 +02:00
Uros Bizjak 34fac449e1 re PR target/53383 (Allow -mpreferred-stack-boundary=3 on x86-64)
PR target/53383
	* config/i386/i386.c (ix86_option_override_internal): Always
	allow -mincoming-stack-boundary=3 for 64-bit targets.

testsuite/ChangeLog:

	PR target/53383
	* gcc.target/i386/pr53383-1.c (dg-options): Remove -mno-sse.
	* gcc.target/i386/pr53383-2.c (dg-options): Ditto.
	* gcc.target/i386/pr53383-3.c (dg-options): Ditto.

From-SVN: r246543
2017-03-28 18:51:00 +02:00
Bin Cheng 9d384e80bd tree-vect-loop.c (optimize_mask_stores): Add bb to the right loop.
* tree-vect-loop.c (optimize_mask_stores): Add bb to the right
	loop.

From-SVN: r246541
2017-03-28 15:35:56 +00:00
Bin Cheng 3e907b9056 tree-vect-loop-manip.c (slpeel_add_loop_guard): New param and mark new edge's irreducible flag accordign to it.
* tree-vect-loop-manip.c (slpeel_add_loop_guard): New param and
	mark new edge's irreducible flag accordign to it.
	(vect_do_peeling): Check loop preheader edge's irreducible flag
	and pass it to function slpeel_add_loop_guard.
	gcc/testsuite
	* gcc.c-torture/compile/irreducible-loop.c: New.

From-SVN: r246540
2017-03-28 15:32:29 +00:00
Richard Sandiford 522818b971 re PR tree-optimization/80218 (tree-call-cdce does not update block frequencies)
gcc/
	PR tree-optimization/80218
	* tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
	Update block frequencies and counts.

gcc/testsuite/
	PR tree-optimization/80218
	* gcc.dg/pr80218.c: New test.

From-SVN: r246538
2017-03-28 09:14:36 -06:00
Richard Biener ea7d7da886 re PR ipa/78644 (ICE: SIGSEGV in is_gimple_reg_type with -Og -fipa-cp)
2017-03-28  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/78644
	* tree-ssa-ccp.c (evaluate_stmt): When we may not use the value
	of a simplification result we may not use it at all.

	* gcc.dg/pr78644-1.c: New testcase.
	* gcc.dg/pr78644-2.c: Likewise.

From-SVN: r246534
2017-03-28 13:57:43 +00:00
Martin Liska c5ad243343 Handle PHI nodes w/o a argument (PR ipa/80205).
2017-03-28  Martin Liska  <mliska@suse.cz>

	PR ipa/80205
	* g++.dg/ipa/pr80205.C: New test.
2017-03-28  Richard Biener  <rguenther@suse.de>

	PR ipa/80205
	* tree-inline.c (copy_phis_for_bb): Do not create PHI node
	without arguments, generate default definition of a SSA name.

From-SVN: r246530
2017-03-28 11:37:22 +00:00
Richard Biener 737f500a0b re PR middle-end/80222 (may_alias folded away)
2017-03-28  Richard Biener  <rguenther@suse.de>

	PR middle-end/80222
	* gimple-fold.c (gimple_fold_indirect_ref): Do not touch
	TYPE_REF_CAN_ALIAS_ALL references.
	* fold-const.c (fold_indirect_ref_1): Likewise.

	* g++.dg/pr80222.C: New testcase.

From-SVN: r246527
2017-03-28 10:10:01 +00:00
Martin Liska 62f96a79f1 Fix calls.c for a _complex type (PR ipa/80104).
2017-03-28  Martin Liska  <mliska@suse.cz>

	PR ipa/80104
	* cgraphunit.c (cgraph_node::expand_thunk): Mark argument of a
	thunk call as DECL_GIMPLE_REG_P when vector or complex type.
2017-03-28  Martin Liska  <mliska@suse.cz>

	PR ipa/80104
	* gcc.dg/ipa/pr80104.c: New test.

From-SVN: r246525
2017-03-28 09:01:57 +00:00
Claudiu Zissulescu 0dee55fec9 [ARC] Define _REENTRANT when -pthread is passed.
The compiler is supposed to have the builtin defined _REENTRANT defined
when -pthread is passed, which wasn't done on the ARC architecture.

When _REENTRANT is not passed, the C library will not use reentrant
functions, and the latest version of ax_pthread.m4 from the
autoconf-archive will no longer detect that thread support is
available (see https://savannah.gnu.org/patch/?8186).

gcc/
2017-03-28  Claudiu Zissulescu  <claziss@synopsys.com>
	    Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

	* config/arc/arc.h (CPP_SPEC): Add subtarget_cpp_spec.
	(EXTRA_SPECS): Define.
	(SUBTARGET_EXTRA_SPECS): Likewise.
	(SUBTARGET_CPP_SPEC): Likewise.
	* config/arc/elf.h (EXTRA_SPECS): Renamed to
	SUBTARGET_EXTRA_SPECS.
	* config/arc/linux.h (SUBTARGET_CPP_SPEC): Define.

Co-Authored-By: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

From-SVN: r246524
2017-03-28 10:56:44 +02:00
Claudiu Zissulescu d1ab0a32ad [ARC] Update ARC SIMD patterns.
vec_select expects in selection a list of subparts. The old ARC SIMD
extension instructions were not up-to-date.

gcc/
2017-03-28  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/simdext.md (vst64_insn): Update pattern.
	(vld32wh_insn): Likewise.
	(vld32wl_insn): Likewise.
	(vld64_insn): Likewise.
	(vld32_insn): Likewise.

From-SVN: r246523
2017-03-28 10:56:33 +02:00
Marek Polacek 72785f2660 re PR sanitizer/80067 (ICE in fold_comparison with -fsanitize=undefined)
PR sanitizer/80067
	* fold-const.c (fold_comparison): Use protected_set_expr_location
	instead of SET_EXPR_LOCATION.

	* c-c++-common/ubsan/shift-10.c: New test.

From-SVN: r246521
2017-03-28 08:13:04 +00:00
Markus Trippelsdorf a292245ee8 Avoid name lookup warning
/home/markus/gcc/gcc/tree.c: In function ‘void inchash::add_expr(const_tree, inchash::hash&, unsigned int)’:
/home/markus/gcc/gcc/tree.c:8013:11: warning: name lookup of ‘i’ changed
      for (i = TREE_OPERAND_LENGTH (t) - 1; i >= 0; --i)
           ^
/home/markus/gcc/gcc/tree.c:7773:7: warning:   matches this ‘i’ under ISO standard rules
   int i;
       ^
/home/markus/gcc/gcc/tree.c:7869:16: warning:   matches this ‘i’ under old rules
       for (int i = 0; i < TREE_VEC_LENGTH (t); ++i)
                ^

From-SVN: r246519
2017-03-28 05:47:13 +00:00
Jeff Law 4dbf1eeeb6 Fix PR# in last commit
From-SVN: r246518
2017-03-27 21:30:35 -06:00
Jeff Law 865169874b re PR target/80162 (ICE on invalid code (address of register variable))
PR tree-optimization/80162
	* tree-ssa-dom.c (derive_equivalences_from_bit_ior): Fix typo in
	function name.  Limit recursion depth.
	(record_temporary_equivalences): Corresponding changes.

	PR tree-optimization/80162
	* gcc.c-torture/compile/pr80216.c: New test.

From-SVN: r246517
2017-03-27 21:22:25 -06:00