Commit Graph

66023 Commits

Author SHA1 Message Date
Bin Cheng 57fa080bf6 re PR tree-optimization/77536 (Vectorizer not maintaining relationship of relative block frequencies in absence of real profile data)
PR tree-optimization/77536
	* tree-ssa-loop-manip.c (niter_for_unrolled_loop): New function.
	(tree_transform_and_unroll_loop): Use above function to compute the
	estimated niter of unrolled loop and use it when scaling profile.
	Also use count info rather than frequency if it's non-zero.
	* tree-ssa-loop-manip.h niter_for_unrolled_loop(): New declaration.
	* tree-vect-loop.c (scale_profile_for_vect_loop): New function.
	(vect_transform_loop): Call above function.

	gcc/testsuite
	* gcc.dg/vect/pr79347.c: Revise testing string.

From-SVN: r245754
2017-02-27 10:20:36 +00:00
Richard Biener 68b948d3ba re PR tree-optimization/45397 (Issues with integer narrowing conversions)
2017-02-27  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/45397
	* tree-ssa-pre.c (eliminate_insert): Handle BIT_AND_EXPR.
	* tree-ssa-sccvn.c (valueized_wider_op): New helper.
	(visit_nary_op): Add pattern matching for CSEing sign-changed
	or truncated operations with wider ones.

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

From-SVN: r245752
2017-02-27 08:51:28 +00:00
Richard Biener 69a2e8a10b re PR tree-optimization/79690 (IVOPTs drops gs: prefix)
2017-02-27  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/79690
	* tree-vect-stmts.c (vectorizable_store): Use vector type
	built from the DR with address-space.

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

From-SVN: r245751
2017-02-27 08:50:09 +00:00
Gerald Pfeifer b4242a79f9 invoke.texi (Optimize Options): Refine the description of asan-use-after-return.
* doc/invoke.texi (Optimize Options): Refine the description
	of asan-use-after-return.

From-SVN: r245747
2017-02-26 22:10:27 +00:00
Alan Modra 0a001dcba6 PR79584, ICE in base_to_reg
PR rtl-optimization/79584
	* lra-constraints.c (base_to_reg): Reload ad->base, the entire
	base, not ad->base_term, the reg within base.  Remove assertion
	that ad->base == ad->base_term.  Replace gen_int_mode using
	bogus mode with const0_rtx.

From-SVN: r245741
2017-02-26 09:14:41 +10:30
Jakub Jelinek 98561a9b58 re PR middle-end/79396 (ICE (verify_flow_info failed) with -fnon-call-exceptions -O2 -march=haswell)
PR middle-end/79396
	* tree-eh.c (operation_could_trap_p, stmt_could_throw_1_p): Handle
	FMA_EXPR like tcc_binary or tcc_unary.

	* g++.dg/opt/pr79396.C: New test.

From-SVN: r245735
2017-02-25 11:17:31 +01:00
Jakub Jelinek 9d975cb6a6 tree-ssa-loop-niter.c (number_of_iterations_exit): Simplify warning.
* tree-ssa-loop-niter.c (number_of_iterations_exit): Simplify warning.
cp/
	* call.c (build_op_delete_call): Make msg1 and msg2 const.

From-SVN: r245734
2017-02-25 09:33:17 +01:00
Jakub Jelinek 680c60feb4 re PR debug/77589 (fortran: Missing DW_AT_byte_stride for an array record field selection)
PR debug/77589
include/
	* dwarf2.def (DW_OP_GNU_variable_value): New opcode.
gcc/
	* dwarf2out.c (struct dw_loc_list_struct): Add noted_variable_value
	bitfield.
	(size_of_loc_descr): Handle DW_OP_GNU_variable_value.
	(output_loc_operands): Handle DW_OP_call_ref and
	DW_OP_GNU_variable_value.
	(struct variable_value_struct): New type.
	(struct variable_value_hasher): Likewise.
	(variable_value_hash): New variable.
	(string_types): Remove.
	(copy_loc_descr): New function.
	(add_loc_descr_to_each): Clarify comment.  Use copy_loc_descr.
	(prepend_loc_descr_to_each): New function.
	(add_loc_list): Fix comment typo.  Use prepend_loc_descr_to_each
	instead of add_loc_descr_to_each if the first argument is single
	location list and the second has multiple.
	(resolve_args_picking_1): Handle DW_OP_GNU_variable_value.
	(loc_list_from_tree_1): For early_dwarf, emit DW_OP_GNU_variable_value
	when looking for variable value which doesn't have other location info.
	(loc_list_from_tree): Formatting fix.
	(gen_array_type_die): Simplify DW_AT_string_length handling.
	(adjust_string_types): Remove.
	(gen_subprogram_die): Don't call adjust_string_types nor test/set
	string_types.  Call resolve_variable_values.
	(prune_unused_types_walk_loc_descr): Handle DW_OP_GNU_variable_value.
	(resolve_addr_in_expr): Likewise.  Add A argument.
	(copy_deref_exprloc): Remove deref argument.  Adjust for the
	original expression being DW_OP_GNU_variable_value with optionally
	DW_OP_stack_value after it instead of DW_OP_call4 with DW_OP_deref
	optionally after it.
	(optimize_string_length): Rework for DW_OP_GNU_variable_value.
	(resolve_addr): Adjust optimize_string_length and resolve_addr_in_expr
	callers.  Set remove_AT_byte_size if removing DW_AT_string_length.
	(variable_value_hasher::hash, variable_value_hasher::equal): New
	methods.
	(resolve_variable_value_in_expr, resolve_variable_value,
	resolve_variable_values, note_variable_value_in_expr,
	note_variable_value): New functions.
	(dwarf2out_early_finish): Call note_variable_value on all toplevel
	DIEs.

From-SVN: r245733
2017-02-25 09:18:24 +01:00
Jakub Jelinek b982244362 re PR c/79677 (Weird handling of -Werror=)
PR c/79677
	* opts.h (handle_generated_option): Add GENERATED_P argument.
	* opts-common.c (handle_option): Adjust function comment.
	(handle_generated_option): Add GENERATED_P argument, pass it to
	handle_option.
	(control_warning_option): Pass false to handle_generated_option
	GENERATED_P.
	* opts.c (maybe_default_option): Pass true to handle_generated_option
	GENERATED_P.
	* optc-gen.awk: Likewise.
ada/
	* gcc-interface/misc.c (gnat_handle_option): Pass true to
	handle_generated_option GENERATED_P.
testsuite/
	* gcc.dg/pr79677.c: New test.

From-SVN: r245728
2017-02-25 00:15:56 +01:00
Segher Boessenkool 91f66e78cc sh: Fixes for RTL checking
* config/sh/sh.md (tstsi_t): If operands[0] is a SUBREG instead of
	a REG, look at the REG it is a SUBREG of.
	(splitter for cmpeqsi_t): Ditto.

From-SVN: r245727
2017-02-24 23:42:49 +01:00
Segher Boessenkool 8faa81184f pa: Fixes for RTL checking
* config/pa/pa.c (pa_combine_instructions): Do not share RTL.  Make
	the special USEs with the pattern of the insn, not the insn itself.

From-SVN: r245726
2017-02-24 23:41:02 +01:00
Matthew Fortune 7f811f38ce Add documentation for -mload-store-pairs
gcc/
	PR target/79473
	* doc/invoke.texi: Document -mload-store-pairs.

From-SVN: r245725
2017-02-24 22:35:59 +00:00
Segher Boessenkool 039f4db920 nios2.c (nios2_simple_const_p): Returns false if the argument isn't a CONST_INT.
2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
	    Sandra Loosemore  <sandra@codesourcery.com>

	gcc/
	* config/nios2/nios2.c (nios2_simple_const_p): Returns false if the
	argument isn't a CONST_INT.
	(nios2_alternate_compare_const): Assert op is a CONST_INT.
	(nios2_valid_compare_const_p): Assert op is a CONST_INT.
	(nios2_validate_compare): Bypass alternate compare logic if *op2
	is not a CONST_INT.
	(ldstwm_operation_p): Return false if first_base is not a REG or
	if first_offset is not a CONST_INT.


Co-Authored-By: Sandra Loosemore <sandra@codesourcery.com>

From-SVN: r245724
2017-02-24 17:35:18 -05:00
Segher Boessenkool da3243b2b6 cris: Fix for RTL checking
* config/cris/cris.md: Use correct operand in a define_peephole2.

From-SVN: r245723
2017-02-24 23:34:37 +01:00
Segher Boessenkool 015122d8c4 c6x: Fix for RTL checking
* config/c6x/c6x.c (predicate_insn): Do not incorrectly share RTL.

From-SVN: r245721
2017-02-24 23:32:46 +01:00
Segher Boessenkool 4173ddafe2 arc: Fixes for RTL checking
* config/arc/arc.c (arc_ccfsm_advance): Only take the PATTERN of
	this_insn if it is an INSN or JUMP_INSN.
	(force_offsettable): Look at base, not at addr.
	* config/arc/predicates.md (brcc_nolimm_operator): Don't call INTVAL
	on things that aren' necessarily CONST_INTs.

From-SVN: r245720
2017-02-24 23:20:14 +01:00
Uros Bizjak 14a7c857a0 invoke.texi (x86 Options, [...]): Mention that -mfpmath=sse is the default also for x86-32 targets with SSE2...
* doc/invoke.texi (x86 Options, -mfpmath=sse): Mention that
	-mfpmath=sse is the default also for x86-32 targets with SSE2
	instruction set when @option{-ffast-math} is enabled

From-SVN: r245715
2017-02-24 19:18:57 +01:00
Jeff Law 19e1183f17 re PR rtl-optimization/79286 (ira and lra wrong code at -O2 and -Os on i686-linux)
PR rtl-optimizatoin/79286
	* ira.c (update_equiv_regs): Drop may_trap_p exception to
	dominance test.

From-SVN: r245714
2017-02-24 08:36:10 -07:00
Richard Biener d081521703 re PR tree-optimization/79389 (30% performance regression in SciMark2 MonteCarlo)
2017-02-24  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/79389
	* gimple-ssa-split-paths.c (is_feasible_trace): Properly skip
	debug insns.

From-SVN: r245713
2017-02-24 11:51:33 +00:00
Aldy Hernandez 70e1d145c8 tree-ssa-loop-niter.c (number_of_iterations_exit): Update function comment to reflect reality.
* tree-ssa-loop-niter.c (number_of_iterations_exit): Update
	function comment to reflect reality.
	(loop_exits_before_overflow): Fix typo in function description.

From-SVN: r245709
2017-02-24 11:02:16 +00:00
Richard Biener 7699e88f68 re PR tree-optimization/79389 (30% performance regression in SciMark2 MonteCarlo)
2017-02-24  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/79389
	* gimple-ssa-split-paths.c (is_feasible_trace): Verify more
	properly that a threading opportunity exists.  Detect conditional
	copy/constant propagation opportunities.

	* gcc.dg/tree-ssa/split-path-10.c: New testcase.

From-SVN: r245696
2017-02-24 08:04:31 +00:00
Eric Botcazou 195610aaa0 visium.md (type): Add trap.
* config/visium/visium.md (type): Add trap.
	(b): New mode attribute.
	(*btst): Rename into...
	(*btst<mode>): ...this and adjust.
	(*cbranchsi4_btst_insn): Rename into...
	(*cbranch<mode>4_btst_insn): ...this and adjust.
	(trap): New define_insn.

From-SVN: r245691
2017-02-23 23:04:00 +00:00
Jakub Jelinek ada61c3d47 re PR tree-optimization/79389 (30% performance regression in SciMark2 MonteCarlo)
PR tree-optimization/79389
	* ifcvt.c (struct noce_if_info): Add rev_cond field.
	(noce_reversed_cond_code): New function.
	(noce_emit_store_flag): Use rev_cond if non-NULL instead of
	reversed_comparison_code.  Formatting fix.
	(noce_try_store_flag): Test rev_cond != NULL in addition to
	reversed_comparison_code.
	(noce_try_store_flag_constants): Likewise.
	(noce_try_store_flag_mask): Likewise.
	(noce_try_addcc): Use rev_cond if non-NULL instead of
	reversed_comparison_code.
	(noce_try_cmove_arith): Likewise.  Formatting fixes.
	(noce_try_minmax, noce_try_abs): Clear rev_cond.
	(noce_find_if_block): Initialize rev_cond.
	(find_cond_trap): Call noce_get_condition with then_bb == trap_bb
	instead of false as last argument never attempt to reverse it
	afterwards.

From-SVN: r245690
2017-02-23 23:05:19 +01:00
Bin Cheng d822f3d585 re PR tree-optimization/79663 (r244815 causes 10% regression for spec1k/172.mgrid on AArch64)
2017-01-21  Bin Cheng  <bin.cheng@arm.com>

	PR tree-optimization/79663
	* tree-predcom.c (combine_chains): Process refs in reverse order
	only for ZERO length chains, and add explaining comment.

From-SVN: r245689
2017-02-23 15:02:01 -07:00
Jeff Law 06b909b07e re PR tree-optimization/79578 (Unnecessary instructions in generated code)
PR tree-optimization/79578
	* tree-ssa-dse.c (clear_bytes_written_by): Use OEP_ADDRESS_OF
	in call to operand_equal_p.

From-SVN: r245688
2017-02-23 14:43:03 -07:00
Dominique d'Humieres f3ffa342ea re PR target/71017 (libgcc/config/i386/cpuinfo.c:346:17: runtime error: left shift of 1 by 31 places cannot be represented in type 'int')
2017-01-23  Dominique d'Humieres  <dominiq@lps.ens.fr>

	PR target/71017
	* config/i386/cpuid.h: Fix another undefined behavior.

From-SVN: r245680
2017-02-23 13:19:05 +01:00
Richard Biener 45f7faf0b5 re PR tree-optimization/79683 (SLP vectorizer drops gs: prefix)
2017-02-23  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/79683
	* tree-vect-stmts.c (vect_analyze_stmt): Do not overwrite
	vector types for data-refs.

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

From-SVN: r245679
2017-02-23 11:43:51 +00:00
Martin Liska 06393a9754 Fix typo in ChangeLog
From-SVN: r245678
2017-02-23 08:45:54 +00:00
Martin Liska 91ebcfce9a Change default of param not being smaller that min.
2017-02-23  Martin Liska  <mliska@suse.cz>

	* params.def (PARAM_MIN_NONDEBUG_INSN_UID): Change default to 0.

From-SVN: r245677
2017-02-23 08:38:35 +00:00
Jakub Jelinek b607e75e25 re PR middle-end/79665 (gcc's signed (x*x)/200 is slower than clang's)
PR middle-end/79665
	* internal-fn.c (get_range_pos_neg): Moved to ...
	* tree.c (get_range_pos_neg): ... here.  No longer static.
	* tree.h (get_range_pos_neg): New prototype.
	* expr.c (expand_expr_real_2) <case TRUNC_DIV_EXPR>: If both arguments
	are known to be in between 0 and signed maximum inclusive, try to
	expand both unsigned and signed divmod and use the cheaper one from
	those.

From-SVN: r245676
2017-02-23 08:49:06 +01:00
Jeff Law 18eb304e5f re PR tree-optimization/79578 (Unnecessary instructions in generated code)
PR tree-optimization/79578
	* tree-ssa-dse.c (clear_bytes_written_by): Use operand_equal_p
	to compare base operands.

	PR tree-optimization/79578
	* g++.dg/tree-ssa/ssa-dse-3.C: New test.

From-SVN: r245675
2017-02-22 22:47:43 -07:00
Segher Boessenkool c5f06528e5 rs6000: Fix fsel pattern (PR79211)
The fsel define_insn uses fpr_reg_operand for its predicates.  This
won't work because passes can put a hard register in the operands: in
the testcase, combine likes to forward the parameter registers to what
then is still an smin, and then split1 uses "*s<minmax><mode>3_fpr"
(which has gpc_reg_operand).  And then we have a GPR in the operand,
which does not match fpr_reg_operand.

It seems to me the predicates should be gpc_reg_operand here as well.
This patch changes that.


	PR target/79211
	* config/rs6000/rs6000.md (*fsel<SFDF:mode><SFDF2:mode>4): Use
	gpc_reg_operand instead of fpr_reg_operand.

From-SVN: r245667
2017-02-23 00:50:46 +01:00
Sameera Deshpande 0a864a97e9 Fix MIPS o32 calling convention for MSA and FP vector types
gcc/
	* config/mips/mips.c (mips_return_in_memory): Force FP
	vector types to be returned in memory for o32 ABI.

gcc/testsuite/

	* gcc.target/mips/msa-fp-cc.c: New test.

From-SVN: r245666
2017-02-22 23:09:43 +00:00
Jakub Jelinek fe8ece053b dwarf2out.c (gen_variable_die): For -gdwarf-5...
* dwarf2out.c (gen_variable_die): For -gdwarf-5, use DW_TAG_variable
	instead of DW_TAG_member for static data member declarations and don't
	set no_linkage_name for static inline data members.
	(gen_member_die): For -gdwarf-5 don't change DW_TAG_variable
	to DW_TAG_member.

	* g++.dg/debug/dwarf2/inline-var-2.C: New test.

From-SVN: r245661
2017-02-22 22:33:47 +01:00
Martin Liska 54dcd52676 instead of -Wnormalized=<options>
2017-02-22  Martin Liska  <mliska@suse.cz>

	* doc/invoke.texi: Replace inequality signs with square brackets
	for -Wnornalized.
2017-02-22  Martin Liska  <mliska@suse.cz>

	* c.opt: Replace inequality signs with square brackets
	for -Wnornalized.

From-SVN: r245659
2017-02-22 21:15:46 +00:00
Bill Schmidt 3b2a007843 re PR tree-optimization/68644 (FAIL: gcc.dg/tree-ssa/ivopts-lt-2.c scan-tree-dump-times ivopts "PHI <p_" 1)
2017-02-22  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	PR tree-optimization/68644
	* gcc.dg/tree-ssa/ivopts-lt-2.c: Skip for powerpc*-*-*.

From-SVN: r245656
2017-02-22 18:00:21 +00:00
Matthew Fortune 198075e1c9 Support WORD_REGISTER_OPERATIONS requirements in simplify_operand_subreg
gcc/
	PR target/78660
	* lra-constraints.c (simplify_operand_subreg): Handle
	WORD_REGISTER_OPERATIONS targets.

From-SVN: r245655
2017-02-22 17:20:14 +00:00
Jakub Jelinek 888c705092 re PR target/70465 (Poor code for x87 asm)
PR target/70465
	* reg-stack.c (emit_swap_insn): Treat (float_extend:?F (mem:?F))
	and (const_double:?F) like (mem:?F) for the purpose of fxch %st(1)
	elimination by swapping fld*.

	* gcc.target/i386/pr70465-2.c: New test.

From-SVN: r245654
2017-02-22 18:17:17 +01:00
Uros Bizjak b86fec684a ChangeLog: Add missing entry.
* ChangeLog: Add missing entry.
	* testsuite/ChangeLog: Ditto.

From-SVN: r245651
2017-02-22 16:36:24 +01:00
Richard Biener 76dd203e1b re PR middle-end/79673 (GIMPLE verification fails when compiling code with __seg_gs)
2017-02-22  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/79673
	* tree-ssa-pre.c (compute_avail): Use wide_int_to_tree to
	convert the [TARGET_]MEM_REF offset INTEGER_CST, scrapping off
	irrelevant address-space qualifiers and avoiding a
	ADDR_SPACE_CONVERT_EXPR from fold_convert.

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

From-SVN: r245649
2017-02-22 15:00:39 +00:00
Richard Biener a9c774d2ae re PR tree-optimization/79666 (wrong code (SIGFPE) at -O2 on x86_64-linux-gnu (in both 32-bit and 64-bit modes))
2017-02-22  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/79666
	* tree-vrp.c (extract_range_from_binary_expr_1): Make sure
	to not symbolically negate if that may introduce undefined
	overflow.

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

From-SVN: r245648
2017-02-22 12:11:27 +00:00
Martin Liska 8f4f841a3e Remove wrong assert about gcov_type (PR lto/79587).
2017-02-22  Martin Liska  <mliska@suse.cz>

	PR lto/79587
	* data-streamer-in.c (streamer_read_gcov_count): Remove assert.
	* data-streamer-out.c (streamer_write_gcov_count_stream):
	Likewise.
	* value-prof.c (stream_out_histogram_value): Make assert more
	precise based on type of counter.
2017-02-22  Martin Liska  <mliska@suse.cz>

	PR lto/79587
	* gcc.dg/tree-prof/pr79587.c: New test.

From-SVN: r245647
2017-02-22 09:45:42 +00:00
Jeff Law 1486c2a780 re PR tree-optimization/79621 (Missed path isolation opportunity)
PR tree-optimization/79621
	* gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Ignore
	blocks with edges to themselves.

	PR tree-optimization/79621
	* gcc.c-torture/compile/pr79621.c: New test.

From-SVN: r245637
2017-02-21 10:58:00 -07:00
Jakub Jelinek 956d3e61a0 re PR target/79633 (ICE in gimple_call_arg, at gimple.h:3163)
PR target/79633
	* tree-chkp-opt.c (chkp_optimize_string_function_calls): Use
	is_gimple_call instead of comparing gimple_code with GIMPLE_CALL.
	Use gimple_call_builtin_p.

	* gcc.target/i386/mpx/pr79633.c: New test.

From-SVN: r245634
2017-02-21 18:46:42 +01:00
Jakub Jelinek d4cbfca47f re PR target/79570 (ICE in sel-sched-ir.c:4534 in pr69956.c)
PR target/79570
	* sel-sched.c (moveup_expr_cached): Don't call sel_bb_head
	on temporarily removed DEBUG_INSNs.

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

From-SVN: r245633
2017-02-21 17:56:11 +01:00
Jakub Jelinek d002d099b0 re PR middle-end/79649 (Memset pattern in named address space crashes compiler or generates wrong code)
PR tree-optimization/79649
	* tree-loop-distribution.c (classify_partition): Give up on
	non-generic address space loads/stores.

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

From-SVN: r245631
2017-02-21 17:29:37 +01:00
Aldy Hernandez 5daaf2d5d9 loop.texi (Loop manipulation): Remove nonexistent tree_ssa_loop_version from the documentation.
* doc/loop.texi (Loop manipulation): Remove nonexistent
	tree_ssa_loop_version from the documentation.
	* cfgloopmanip.c (loop_version): Document CONDITION_BB argument.

From-SVN: r245630
2017-02-21 15:37:18 +00:00
Jakub Jelinek 2f3ec56d60 re PR target/79494 (ICE in maybe_record_trace_start, at dwarf2cfi.c:2330)
PR target/79494
	* config/i386/i386.c (ix86_expand_split_stack_prologue): Call
	make_reg_eh_region_note_nothrow_nononlocal on call_insn.
	* config/rs6000/rs6000.c: Include except.h.
	(rs6000_expand_split_stack_prologue): Call
	make_reg_eh_region_note_nothrow_nononlocal on the call insn.

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

From-SVN: r245629
2017-02-21 15:39:21 +01:00
Martin Jambor 03108bad95 [PR 79579] Avoid segfault on NULL ipa_edge_args_vector
2017-02-21  Martin Jambor  <mjambor@suse.cz>

	PR lto/79579
	* ipa-prop.c (ipa_prop_write_jump_functions): Bail out if no edges
	have been analyzed.

From-SVN: r245628
2017-02-21 15:01:52 +01:00
Martin Jambor 781176469e [PATCH] Properly deprecate -fipa-cp-alignment
2017-02-21  Martin Jambor  <mjambor@suse.cz>

	* common.opt (-fipa-cp-alignment): Mark as ignored and preserved
	for backward compatibility only.
	* doc/invoke.texi (Option Summary): Remove all references to
	-fipa-cp-alignment.

From-SVN: r245627
2017-02-21 14:55:32 +01:00