Commit Graph

162671 Commits

Author SHA1 Message Date
Tom de Vries
bddcac9d1c [contrib] Add contrib/maintainers-verify.sh
2018-07-13  Tom de Vries  <tdevries@suse.de>

	* maintainers-verify.sh: New file.

	* gcc.src/maintainers.exp: New file.

From-SVN: r262627
2018-07-13 09:33:40 +00:00
Jackson Woodruff
34d7854d50 aarch64.c (aarch64_operands_adjust_ok_for_ldpstp): Use arrays instead of numbered variables.
* config/aarch64/aarch64.c (aarch64_operands_adjust_ok_for_ldpstp): Use
	arrays instead of numbered variables.

From-SVN: r262626
2018-07-13 08:38:18 +00:00
Eric Botcazou
f77c5a3ff8 sparc-protos.h (sparc_compute_frame_size): Delete.
* config/sparc/sparc-protos.h (sparc_compute_frame_size): Delete.
	* config/sparc/sparc.c (sparc_compute_frame_size): Make static

From-SVN: r262625
2018-07-13 08:12:39 +00:00
Richard Biener
77e61ab00f re PR debug/86452 (ICE in force_decl_die, at dwarf2out.c:25922 with -g1 and -flto)
2018-07-13  Richard Biener  <rguenther@suse.de>

	PR debug/86452
	* dwarf2out.c (gen_type_die_with_usage): Use scope_die_for
	instead of get_context_die.

From-SVN: r262624
2018-07-13 06:42:31 +00:00
Kugan Vivekanandarajah
061d40da00 re PR tree-optimization/86489 (ICE in gimple_phi_arg starting with r261682 when building 531.deepsjeng_r with FDO + LTO)
gcc/ChangeLog:

2018-07-13  Kugan Vivekanandarajah  <kuganv@linaro.org>
	    Richard Biener  <rguenther@suse.de>

	PR middle-end/86489
	* tree-ssa-loop-niter.c (number_of_iterations_popcount): Check
	that the loop latch destination where phi is defined.

gcc/testsuite/ChangeLog:

2018-07-13  Kugan Vivekanandarajah  <kuganv@linaro.org>

	PR middle-end/86489
	* gcc.dg/pr86489.c: New test.


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

From-SVN: r262622
2018-07-13 05:25:47 +00:00
GCC Administrator
b18bb376a1 Daily bump.
From-SVN: r262620
2018-07-13 00:16:30 +00:00
Martin Sebor
68d71a311f PR testsuite/86510 - test case g++.dg/warn/pr86453.C fails starting with r262596
gcc/testsuite/ChangeLog:
	g++.dg/warn/pr86453.C: Adjust.

From-SVN: r262609
2018-07-12 16:42:00 -06:00
Jim Wilson
ac07bbf29a RISC-V: Silence expected Ada testsuite warning.
gcc/testsuite/
	* gnat.dg/warn5.adb: Expect warning for riscv*-*-*.

From-SVN: r262608
2018-07-12 13:32:01 -07:00
Kito Cheng
8528f27bda RISC-V: Error if function declared with different interrupt modes.
gcc/
	2018-07-06  Kito Cheng  <kito.cheng@gmail.com>
        * config/riscv/riscv.c (enum riscv_privilege_levels): Add UNKNOWN_MODE.
        (riscv_expand_epilogue): Add assertion to check interrupt mode.
        (riscv_set_current_function): Extract getting interrupt type to new
        function.
        (riscv_get_interrupt_type): New function.
        (riscv_merge_decl_attributes): New function, checking interrupt type is
        same.
        (TARGET_MERGE_DECL_ATTRIBUTES): Define.

	gcc/testsuite/
	2018-07-06  Kito Cheng  <kito.cheng@gmail.com>
        * gcc.target/riscv/interrupt-conflict-mode.c: New.

From-SVN: r262607
2018-07-12 12:59:09 -07:00
Jakub Jelinek
9b45203369 c-attribs.c (c_common_attribute_table): Add "omp declare target implicit" attribute.
* c-attribs.c (c_common_attribute_table): Add
	"omp declare target implicit" attribute.

	* c-decl.c (c_decl_attributes): Don't diagnose vars without mappable
	type here, instead add "omp declare target implicit" attribute.
	(finish_decl): Diagnose vars without mappable type here.

	* decl2.c (cplus_decl_attributes): Don't diagnose vars without mappable
	type here, instead add "omp declare target implicit" attribute.  Add
	that attribute instead of "omp declare target" also when
	processing_template_decl.
	* decl.c (cp_finish_decl): Diagnose vars without mappable type here,
	and before calling cp_omp_mappable_type call complete_type.

	* c-c++-common/gomp/declare-target-3.c: New test.
	* g++.dg/gomp/declare-target-2.C: New test.

From-SVN: r262605
2018-07-12 21:36:01 +02:00
Paul Koning
f34756291a pdp11.c (pdp11_output_def): Fix typo in .set directive.
* config/pdp11/pdp11.c (pdp11_output_def): Fix typo in .set
	directive.

From-SVN: r262604
2018-07-12 15:26:22 -04:00
Paul Koning
f9adcdecb2 rtl.texi (REG_NONNEG): Remove decrement and branch until zero reference, add doloop_end instead.
* doc/rtl.texi (REG_NONNEG): Remove decrement and branch until
	zero reference, add doloop_end instead.
	* doc/md.texi (decrement_and_branch_until_zero): Remove.
	(Looping patterns): Remove decrement_and_branch_until_zero.  Add
	detail for doloop_end.

From-SVN: r262603
2018-07-12 15:02:57 -04:00
Christophe Lyon
e57aae39e0 [contrib] compare_tests: Print number of tests
2018-07-12  Christophe Lyon  <christophe.lyon@linaro.org>

	* compare_tests: Print number of tests in each category.

From-SVN: r262600
2018-07-12 20:18:41 +02:00
Martin Sebor
bffc62707f PR c/86453 - error: type variant differs by TYPE_PACKED in free_lang_data since r255469
gcc/ChangeLog:

	PR c/86453
	* attribs.c (decl_attributes): Reject conflicting attributes before
	calling attribute handlers.

gcc/testsuite/ChangeLog:

	PR c/86453
	* c-c++-common/Wattributes.c: Adjust.
	* gcc.dg/Wattributes-10.c: New test.
	* g++.dg/Wattributes-3.C: Adjust.
	* gcc.dg/Wattributes-6.c: Adjust.
	* gcc.dg/pr18079.c: Adjust.
	* gcc.dg/torture/pr42363.c: Adjust.

From-SVN: r262596
2018-07-12 10:21:06 -06:00
Julia Koval
d59442fae8 avx512vl-vpclmulqdq-2.c: Remove 128bit version
Remove 128bit version from gcc.target/i386/avx512vl-vpclmulqdq-2.c for:

commit 336f029101465aad8f497c753a3d5a77ff78ec88
Author: kyukhin <kyukhin@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Mon Jun 11 11:10:38 2018 +0000

    Remove redundant intrinsics

    gcc/
            * config/i386/vaesintrin.h (_mm_aesdec_epi128, _mm_aesdeclast_epi128)
            _mm_aesenc_epi128, _mm_aesenclast_epi128: Remove.
            * config/i386/vpclmulqdqintrin.h (_mm_clmulepi64_epi128): Remove.
    gcc/testsuite/
            * gcc.target/i386/avx512fvl-vaes-1.c: Remove 128bit versions from test.
            * gcc.target/i386/vpclmulqdq.c: Ditto.

	 * gcc.target/i386/avx512vl-vpclmulqdq-2.c: Remove 128bit
	 version.

From-SVN: r262595
2018-07-12 07:51:10 -07:00
Jan Hubicka
75fdb07e3e dumpfile.c (gcc::dump_manager::get_dump_file_name): Add PART parameter.
* dumpfile.c (gcc::dump_manager::get_dump_file_name): Add PART
	 parameter.
	(gcc::dump_manager::get_dump_file_name): likewise.
	(dump_begin): Likewise.
	* dumpfile.h (dump_begin): Update prototype.
	(gcc::dump_manager::get_dump_file_name,
	gcc::dump_manager::get_dump_file_name): Update prototype.

From-SVN: r262591
2018-07-12 13:14:52 +00:00
Richard Sandiford
5249ee4d79 Implement SLP of internal functions
SLP of calls was previously restricted to built-in functions.
This patch extends it to internal functions.

2018-07-12  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	* internal-fn.h (vectorizable_internal_fn_p): New function.
	* tree-vect-slp.c (compatible_calls_p): Likewise.
	(vect_build_slp_tree_1): Remove nops argument.  Handle calls
	to internal functions.
	(vect_build_slp_tree_2): Update call to vect_build_slp_tree_1.

gcc/testsuite/
	* gcc.dg/vect/vect-cond-arith-6.c: New test.
	* gcc.target/aarch64/sve/cond_arith_4.c: Likewise.
	* gcc.target/aarch64/sve/cond_arith_4_run.c: Likewise.
	* gcc.target/aarch64/sve/cond_arith_5.c: Likewise.
	* gcc.target/aarch64/sve/cond_arith_5_run.c: Likewise.
	* gcc.target/aarch64/sve/slp_14.c: Likewise.
	* gcc.target/aarch64/sve/slp_14_run.c: Likewise.

From-SVN: r262590
2018-07-12 13:02:17 +00:00
Richard Sandiford
2c58d42c3e Use conditional internal functions in if-conversion
This patch uses IFN_COND_* to vectorise conditionally-executed,
potentially-trapping arithmetic, such as most floating-point
ops with -ftrapping-math.  E.g.:

    if (cond) { ... x = a + b; ... }

becomes:

    ...
    x = .COND_ADD (cond, a, b, else_value);
    ...

When this transformation is done on its own, the value of x for
!cond isn't important, so else_value is simply the target's
preferred_else_value (i.e. the value it can handle the most
efficiently).

However, the patch also looks for the equivalent of:

    y = cond ? x : c;

in which the "then" value is the result of the conditionally-executed
operation and the "else" value "c" is some value that is available at x.
In that case we can instead use:

    x = .COND_ADD (cond, a, b, c);

and replace uses of y with uses of x.

The patch also looks for:

    y = !cond ? c : x;

which can be transformed in the same way.  This involved adding a new
utility function inverse_conditions_p, which was already open-coded
in a more limited way in match.pd.

2018-07-12  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	* fold-const.h (inverse_conditions_p): Declare.
	* fold-const.c (inverse_conditions_p): New function.
	* match.pd: Use inverse_conditions_p.  Add folds of view_converts
	that test the inverse condition of a conditional internal function.
	* internal-fn.h (vectorized_internal_fn_supported_p): Declare.
	* internal-fn.c (internal_fn_mask_index): Handle conditional
	internal functions.
	(vectorized_internal_fn_supported_p): New function.
	* tree-if-conv.c: Include internal-fn.h and fold-const.h.
	(any_pred_load_store): Replace with...
	(need_to_predicate): ...this new variable.
	(redundant_ssa_names): New variable.
	(ifcvt_can_use_mask_load_store): Move initial checks to...
	(ifcvt_can_predicate): ...this new function.  Handle tree codes
	for which a conditional internal function exists.
	(if_convertible_gimple_assign_stmt_p): Use ifcvt_can_predicate
	instead of ifcvt_can_use_mask_load_store.  Update after variable
	name change.
	(predicate_load_or_store): New function, split out from
	predicate_mem_writes.
	(check_redundant_cond_expr): New function.
	(value_available_p): Likewise.
	(predicate_rhs_code): Likewise.
	(predicate_mem_writes): Rename to...
	(predicate_statements): ...this.  Use predicate_load_or_store
	and predicate_rhs_code.
	(combine_blocks, tree_if_conversion): Update after above name changes.
	(ifcvt_local_dce): Handle redundant_ssa_names.
	* tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Handle
	general conditional functions.
	* tree-vect-stmts.c (vectorizable_call): Likewise.

gcc/testsuite/
	* gcc.dg/vect/vect-cond-arith-4.c: New test.
	* gcc.dg/vect/vect-cond-arith-5.c: Likewise.
	* gcc.target/aarch64/sve/cond_arith_1.c: Likewise.
	* gcc.target/aarch64/sve/cond_arith_1_run.c: Likewise.
	* gcc.target/aarch64/sve/cond_arith_2.c: Likewise.
	* gcc.target/aarch64/sve/cond_arith_2_run.c: Likewise.
	* gcc.target/aarch64/sve/cond_arith_3.c: Likewise.
	* gcc.target/aarch64/sve/cond_arith_3_run.c: Likewise.

From-SVN: r262589
2018-07-12 13:02:00 +00:00
Richard Sandiford
0936858f08 Support fused multiply-adds in fully-masked reductions
This patch adds support for fusing a conditional add or subtract
with a multiplication, so that we can use fused multiply-add and
multiply-subtract operations for fully-masked reductions.  E.g.
for SVE we vectorise:

  double res = 0.0;
  for (int i = 0; i < n; ++i)
    res += x[i] * y[i];

using a fully-masked loop in which the loop body has the form:

  res_1 = PHI<0(preheader), res_2(latch)>;
  avec = .MASK_LOAD (loop_mask, a)
  bvec = .MASK_LOAD (loop_mask, b)
  prod = avec * bvec;
  res_2 = .COND_ADD (loop_mask, res_1, prod, res_1);

where the last statement does the equivalent of:

  res_2 = loop_mask ? res_1 + prod : res_1;

(operating elementwise).  The point of the patch is to convert the last
two statements into:

  res_s = .COND_FMA (loop_mask, avec, bvec, res_1, res_1);

which is equivalent to:

  res_2 = loop_mask ? fma (avec, bvec, res_1) : res_1;

(again operating elementwise).

2018-07-12  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

gcc/
	* internal-fn.h (can_interpret_as_conditional_op_p): Declare.
	* internal-fn.c (can_interpret_as_conditional_op_p): New function.
	* tree-ssa-math-opts.c (convert_mult_to_fma_1): Handle conditional
	plus and minus and convert them into IFN_COND_FMA-based sequences.
	(convert_mult_to_fma): Handle conditional plus and minus.

gcc/testsuite/
	* gcc.dg/vect/vect-fma-2.c: New test.
	* gcc.target/aarch64/sve/reduc_4.c: Likewise.
	* gcc.target/aarch64/sve/reduc_6.c: Likewise.
	* gcc.target/aarch64/sve/reduc_7.c: Likewise.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>

From-SVN: r262588
2018-07-12 13:01:48 +00:00
Richard Sandiford
b41d1f6ed7 Add IFN_COND_FMA functions
This patch adds conditional equivalents of the IFN_FMA built-in functions.
Most of it is just a mechanical extension of the binary stuff.

2018-07-12  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	* doc/md.texi (cond_fma, cond_fms, cond_fnma, cond_fnms): Document.
	* optabs.def (cond_fma_optab, cond_fms_optab, cond_fnma_optab)
	(cond_fnms_optab): New optabs.
	* internal-fn.def (COND_FMA, COND_FMS, COND_FNMA, COND_FNMS): New
	internal functions.
	(FMA): Use DEF_INTERNAL_FLT_FN rather than DEF_INTERNAL_FLT_FLOATN_FN.
	* internal-fn.h (get_conditional_internal_fn): Declare.
	(get_unconditional_internal_fn): Likewise.
	* internal-fn.c (cond_ternary_direct): New macro.
	(expand_cond_ternary_optab_fn): Likewise.
	(direct_cond_ternary_optab_supported_p): Likewise.
	(FOR_EACH_COND_FN_PAIR): Likewise.
	(get_conditional_internal_fn): New function.
	(get_unconditional_internal_fn): Likewise.
	* gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 5.
	(gimple_match_op::gimple_match_op): Add a new overload for 5
	operands.
	(gimple_match_op::set_op): Likewise.
	(gimple_resimplify5): Declare.
	* genmatch.c (decision_tree::gen): Generate simplifications for
	5 operands.
	* gimple-match-head.c (gimple_simplify): Define an overload for
	5 operands.  Handle calls with 5 arguments in the top-level overload.
	(convert_conditional_op): Handle conversions from unconditional
	internal functions to conditional ones.
	(gimple_resimplify5): New function.
	(build_call_internal): Pass a fifth operand.
	(maybe_push_res_to_seq): Likewise.
	(try_conditional_simplification): Try converting conditional
	internal functions to unconditional internal functions.
	Handle 3-operand unconditional forms.
	* match.pd (UNCOND_TERNARY, COND_TERNARY): Operator lists.
	Define ternary equivalents of the current rules for binary conditional
	internal functions.
	* config/aarch64/aarch64.c (aarch64_preferred_else_value): Handle
	ternary operations.
	* config/aarch64/iterators.md (UNSPEC_COND_FMLA, UNSPEC_COND_FMLS)
	(UNSPEC_COND_FNMLA, UNSPEC_COND_FNMLS): New unspecs.
	(optab): Handle them.
	(SVE_COND_FP_TERNARY): New int iterator.
	(sve_fmla_op, sve_fmad_op): New int attributes.
	* config/aarch64/aarch64-sve.md (cond_<optab><mode>)
	(*cond_<optab><mode>_2, *cond_<optab><mode_4)
	(*cond_<optab><mode>_any): New SVE_COND_FP_TERNARY patterns.

gcc/testsuite/
	* gcc.dg/vect/vect-cond-arith-3.c: New test.
	* gcc.target/aarch64/sve/vcond_13.c: Likewise.
	* gcc.target/aarch64/sve/vcond_13_run.c: Likewise.
	* gcc.target/aarch64/sve/vcond_14.c: Likewise.
	* gcc.target/aarch64/sve/vcond_14_run.c: Likewise.
	* gcc.target/aarch64/sve/vcond_15.c: Likewise.
	* gcc.target/aarch64/sve/vcond_15_run.c: Likewise.
	* gcc.target/aarch64/sve/vcond_16.c: Likewise.
	* gcc.target/aarch64/sve/vcond_16_run.c: Likewise.

From-SVN: r262587
2018-07-12 13:01:33 +00:00
Richard Sandiford
6a86928d98 Extend tree code folds to IFN_COND_*
This patch adds match.pd support for applying normal folds to their
IFN_COND_* forms.  E.g. the rule:

  (plus @0 (negate @1)) -> (minus @0 @1)

also allows the fold:

  (IFN_COND_ADD @0 @1 (negate @2) @3) -> (IFN_COND_SUB @0 @1 @2 @3)

Actually doing this by direct matches in gimple-match.c would
probably lead to combinatorial explosion, so instead, the patch
makes gimple_match_op carry a condition under which the operation
happens ("cond"), and the value to use when the condition is false
("else_value").  Thus in the example above we'd do the following

(a) convert:

      cond:NULL_TREE (IFN_COND_ADD @0 @1 @4 @3) else_value:NULL_TREE

    to:

      cond:@0 (plus @1 @4) else_value:@3

(b) apply gimple_resimplify to (plus @1 @4)

(c) reintroduce cond and else_value when constructing the result.

Nested operations inherit the condition of the outer operation
(so that we don't introduce extra faults) but have a null else_value.
If we try to build such an operation, the target gets to choose what
else_value it can handle efficiently: obvious choices include one of
the operands or a zero constant.  (The alternative would be to have some
representation for an undefined value, but that seems a bit invasive,
and isn't likely to be useful here.)

I've made the condition a mandatory part of the gimple_match_op
constructor so that it doesn't accidentally get dropped.

2018-07-12  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	* target.def (preferred_else_value): New target hook.
	* doc/tm.texi.in (TARGET_PREFERRED_ELSE_VALUE): New hook.
	* doc/tm.texi: Regenerate.
	* targhooks.h (default_preferred_else_value): Declare.
	* targhooks.c (default_preferred_else_value): New function.
	* internal-fn.h (conditional_internal_fn_code): Declare.
	* internal-fn.c (FOR_EACH_CODE_MAPPING): New macro.
	(get_conditional_internal_fn): Use it.
	(conditional_internal_fn_code): New function.
	* gimple-match.h (gimple_match_cond): New struct.
	(gimple_match_op): Add a cond member function.
	(gimple_match_op::gimple_match_op): Update all forms to take a
	gimple_match_cond.
	* genmatch.c (expr::gen_transform): Use the same condition as res_op
	for the suboperation, but don't specify a particular else_value.
	* tree-ssa-sccvn.c (vn_nary_simplify, vn_reference_lookup_3)
	(visit_nary_op, visit_reference_op_load): Pass
	gimple_match_cond::UNCOND to the gimple_match_op constructor.
	* gimple-match-head.c: Include tree-eh.h
	(convert_conditional_op): New function.
	(maybe_resimplify_conditional_op): Likewise.
	(gimple_resimplify1): Call maybe_resimplify_conditional_op.
	(gimple_resimplify2): Likewise.
	(gimple_resimplify3): Likewise.
	(gimple_resimplify4): Likewise.
	(maybe_push_res_to_seq): Return null for conditional operations.
	(try_conditional_simplification): New function.
	(gimple_simplify): Call it.  Pass conditions to the gimple_match_op
	constructor.
	* match.pd: Fold VEC_COND_EXPRs of an IFN_COND_* call to a new
	IFN_COND_* call.
	* config/aarch64/aarch64.c (aarch64_preferred_else_value): New
	function.
	(TARGET_PREFERRED_ELSE_VALUE): Redefine.

gcc/testsuite/
	* gcc.dg/vect/vect-cond-arith-2.c: New test.
	* gcc.target/aarch64/sve/loop_add_6.c: Likewise.

From-SVN: r262586
2018-07-12 13:01:17 +00:00
Jan Hubicka
d5cbbf8739 lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream DECL_FCONTEXT
* lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream
	DECL_FCONTEXT
	(hash_tree): Do not hash DECL_FCONTEXT
	* tree-streamer-in.c (lto_input_ts_field_decl_tree_pointers):
	Do not stream DECL_FCONTEXT.
	* tree-streamer-out.c (write_ts_field_decl_tree_pointers): Likewise.
	* tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.

From-SVN: r262585
2018-07-12 12:56:45 +00:00
Richard Biener
4405d067ad re PR debug/86462 (Quite huge debug info size increase introduced in r262511)
2018-07-12  Richard Biener  <rguenther@suse.de>

	PR debug/86462
	* dwarf2out.c (gen_block_die): Only output blocks when they have
	at least one !DECL_IGNORED_P variable.

From-SVN: r262583
2018-07-12 12:32:30 +00:00
Richard Biener
42d406b9df re PR target/84829 (-mieee-fp causes to link with -lieee but that is no longer available)
2018-07-12  Richard Biener  <rguenther@suse.de>

	PR target/84829
	* config/gnu-user.h (GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC):
	Remove -mieee-fp handling.

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

From-SVN: r262582
2018-07-12 11:53:34 +00:00
Jakub Jelinek
38eb12ee90 * gcc.dg/torture/20180712-1.c: New test.
From-SVN: r262579
2018-07-12 13:19:03 +02:00
Richard Biener
d9931da9b7 tree-ssa-sccvn.c (vn_lookup_simplify_result): Remove bogus left-over from last patch.
2018-07-12  Richard Biener  <rguenther@suse.de>

	* tree-ssa-sccvn.c (vn_lookup_simplify_result): Remove bogus
	left-over from last patch.

From-SVN: r262578
2018-07-12 10:12:46 +00:00
Jakub Jelinek
a7fe648221 re PR tree-optimization/86492 (store-merging wrong-code)
PR tree-optimization/86492
	* gimple-ssa-store-merging.c
	(imm_store_chain_info::coalesce_immediate_stores): Call
	check_no_overlap even for the merge_overlapping case.  Formatting fix.

	* gcc.c-torture/execute/pr86492.c: New test.

From-SVN: r262576
2018-07-12 09:39:33 +02:00
Richard Biener
cd0762f3ca re PR c/86453 (error: type variant differs by TYPE_PACKED in free_lang_data since r255469)
2018-07-12  Richard Biener  <rguenther@suse.de>

	PR c/86453
	* c-attribs.c (handle_packed_attribute): Do not build a variant
	type with TYPE_PACKED, instead ignore the attribute if we may
	not apply to the original type.

	* g++.dg/warn/pr86453.C: New testcase.

From-SVN: r262575
2018-07-12 07:13:36 +00:00
Richard Biener
9e39298905 re PR tree-optimization/86479 ([graphite] ICE in gimplify_modify_expr, at gimplify.c:5756)
2018-07-12  Richard Biener  <rguenther@suse.de>

	PR middle-end/86479
	* fold-const.c (fold_binary_op_with_conditional_arg): Do not
	move possibly trapping operations into the conditional.

	* gcc.dg/graphite/pr86479.c: New testcase.

From-SVN: r262574
2018-07-12 07:11:50 +00:00
Richard Biener
19353855bf tree-ssa-sccvn.c (mprts_hook_cnt): Remove.
2018-07-12  Richard Biener  <rguenther@suse.de>

	* tree-ssa-sccvn.c (mprts_hook_cnt): Remove.
	(vn_lookup_simplify_result): Remove recursion limit applied
	here.
	(vn_nary_build_or_lookup_1): Adjust.
	(try_to_simplify): Likewise.
	* gimple-match-head.c (gimple_resimplify1): Instead apply one
	here.
	(gimple_resimplify2): Likewise.
	(gimple_resimplify3): Likewise.
	(gimple_resimplify4): Likewise.

From-SVN: r262573
2018-07-12 07:08:34 +00:00
Ian Lance Taylor
2c81daeeb5 compiler: build a single backend type for type alias
A type alias and its underlying type are identical. Build a
    single backend type for them. Previously we build two backend
    types, which sometimes confuse the backend's type system.
    
    Also don't include type aliases into the list of named type
    declarations, since they are not named types.
    
    Reviewed-on: https://go-review.googlesource.com/123362

From-SVN: r262572
2018-07-12 04:18:48 +00:00
GCC Administrator
9d196169cc Daily bump.
From-SVN: r262571
2018-07-12 00:16:19 +00:00
Jakub Jelinek
18379eeafc avx512bitalgintrin.h (_mm512_mask_bitshuffle_epi64_mask): Use __mmask64 type instead of __mmask8 for __M argument.
* config/i386/avx512bitalgintrin.h (_mm512_mask_bitshuffle_epi64_mask):
	Use __mmask64 type instead of __mmask8 for __M argument.
	* config/i386/avx512fintrin.h (_mm512_mask_xor_epi64,
	_mm512_maskz_xor_epi64): Use __mmask8 type instead of __mmask16 for
	__U argument.
	(_mm512_mask_cmpneq_epi64_mask): Use __mmask8 type instead of
	__mmask16 for __M argument.
	(_mm512_maskz_insertf32x4, _mm512_maskz_inserti32x4,
	_mm512_mask_insertf32x4, _mm512_mask_inserti32x4): Cast last argument
	to __mmask16 instead of __mmask8.
	* config/i386/avx512vlintrin.h (_mm_mask_add_ps, _mm_maskz_add_ps,
	_mm256_mask_add_ps, _mm256_maskz_add_ps, _mm_mask_sub_ps,
	_mm_maskz_sub_ps, _mm256_mask_sub_ps, _mm256_maskz_sub_ps,
	_mm256_maskz_cvtepi32_ps, _mm_maskz_cvtepi32_ps): Use __mmask8 type
	instead of __mmask16 for __U argument.
	* config/i386/avx512vlbwintrin.h (_mm_mask_cmp_epi8_mask): Use
	__mmask16 instead of __mmask8 for __U argument.
	(_mm256_mask_cmp_epi8_mask): Use __mmask32 instead of __mmask16 for
	__U argument.
	(_mm256_cmp_epi8_mask): Use __mmask32 return type instead of
	__mmask16.
	(_mm_mask_cmp_epu8_mask): Use __mmask16 instead of __mmask8 for __U
	argument.
	(_mm256_mask_cmp_epu8_mask): Use __mmask32 instead of __mmask16 for
	__U argument.
	(_mm256_cmp_epu8_mask): Use __mmask32 return type instead of
	__mmask16.
	(_mm_mask_cmp_epi16_mask): Cast last argument to __mmask8 instead
	of __mmask16.
	(_mm256_mask_cvtepi8_epi16): Use __mmask16 instead of __mmask32 for
	__U argument.
	(_mm_mask_cvtepi8_epi16): Use __mmask8 instead of __mmask32 for
	__U argument.
	(_mm256_mask_cvtepu8_epi16): Use __mmask16 instead of __mmask32 for
	__U argument.
	(_mm_mask_cvtepu8_epi16): Use __mmask8 instead of __mmask32 for
	__U argument.
	(_mm256_mask_cmpneq_epu8_mask, _mm256_mask_cmplt_epu8_mask,
	_mm256_mask_cmpge_epu8_mask, _mm256_mask_cmple_epu8_mask): Change
	return type as well as __M argument type and all casts from __mmask8
	to __mmask32.
	(_mm256_mask_cmpneq_epu16_mask, _mm256_mask_cmplt_epu16_mask,
	_mm256_mask_cmpge_epu16_mask, _mm256_mask_cmple_epu16_mask): Change
	return type as well as __M argument type and all casts from __mmask8
	to __mmask16.
	(_mm256_mask_cmpneq_epi8_mask, _mm256_mask_cmplt_epi8_mask,
	_mm256_mask_cmpge_epi8_mask, _mm256_mask_cmple_epi8_mask): Change
	return type as well as __M argument type and all casts from __mmask8
	to __mmask32.
	(_mm256_mask_cmpneq_epi16_mask, _mm256_mask_cmplt_epi16_mask,
	_mm256_mask_cmpge_epi16_mask, _mm256_mask_cmple_epi16_mask): Change
	return type as well as __M argument type and all casts from __mmask8
	to __mmask16.
	* config/i386/avx512vbmi2vlintrin.h (_mm_mask_shrdi_epi32,
	_mm_mask_shldi_epi32): Cast last argument to __mmask8 instead of
	__mmask16.

	* gcc.target/i386/avx512bw-vpcmpb-2.c (CMP): Use SIZE macro instead
	of hardcoding size.  Cast (rel) to MASK_TYPE.
	* gcc.target/i386/avx512bw-vpcmpub-2.c (CMP): Likewise.
	* gcc.target/i386/avx512f-vinserti32x4-3.c: New test.
	* gcc.target/i386/avx512f-vinsertf32x4-3.c: New test.
	* gcc.target/i386/avx512vl-vpcmpnequb-2.c: New test.
	* gcc.target/i386/avx512vl-vpcmpgeub-2.c: New test.
	* gcc.target/i386/avx512vl-vpcmpleb-2.c: New test.
	* gcc.target/i386/avx512vl-vpcmpgeb-2.c: New test.
	* gcc.target/i386/avx512vl-vpcmpltb-2.c: New test.
	* gcc.target/i386/avx512vl-vpcmpltub-2.c: New test.
	* gcc.target/i386/avx512vl-vpcmpleub-2.c: New test.
	* gcc.target/i386/avx512vl-vpcmpneqb-2.c: New test.
	* gcc.target/i386/avx512vl-vpcmpnequw-2.c: New test.
	* gcc.target/i386/avx512vl-vpcmpgeuw-2.c: New test.
	* gcc.target/i386/avx512vl-vpcmplew-2.c: New test.
	* gcc.target/i386/avx512vl-vpcmpgew-2.c: New test.
	* gcc.target/i386/avx512vl-vpcmpltw-2.c: New test.
	* gcc.target/i386/avx512vl-vpcmpltuw-2.c: New test.
	* gcc.target/i386/avx512vl-vpcmpleuw-2.c: New test.
	* gcc.target/i386/avx512vl-vpcmpneqw-2.c: New test.

2018-07-11  Grazvydas Ignotas  <notasas@gmail.com>

	* config/i386/avx512bwintrin.h: (_mm512_mask_cmp_epi8_mask,
	_mm512_mask_cmp_epu8_mask): Use __mmask64 type instead of __mmask32
	for __U argument.

	* gcc.target/i386/avx512bw-vpcmpb-2.c (SIZE): Define to
	(AVX512F_LEN / 8) instead of (AVX512F_LEN / 16).
	* gcc.target/i386/avx512bw-vpcmpub-2.c (SIZE): Likewise.

From-SVN: r262566
2018-07-11 22:57:15 +02:00
Paul Koning
2d05894b17 Correct date on ChangeLog entry.
From-SVN: r262563
2018-07-11 15:08:57 -04:00
Paul Koning
8245edf3c1 md.texi (define_subst): Document how multiple occurrences of the same argument in the replacement...
* doc/md.texi (define_subst): Document how multiple occurrences of
	the same argument in the replacement pattern are handled.

From-SVN: r262562
2018-07-11 15:08:16 -04:00
Paul Koning
bf8218dbef Add documentation for "mode" attribute for types.
* doc/extend.texi (Common Variable Attributes): Move "mode" into
	alphabetical order.
	(Common Type Attributes): Add "mode" attribute.

From-SVN: r262561
2018-07-11 15:06:41 -04:00
Jan Hubicka
69e02b3555 lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream DECL_ORIGINAL_TYPE.
* lto-streamer-out.c (DFS::DFS_write_tree_body): Do not
	stream DECL_ORIGINAL_TYPE.
	(DFS::DFS_write_tree_body): Drop hack handling local external decls.
	(hash_tree): Do not walk DECL_ORIGINAL_TYPE.
	* tree-streamer-in.c (lto_input_ts_decl_non_common_tree_pointers):
	Do not walk original type.
	* tree-streamer-out.c (streamer_write_chain): Drop hack handling
	external decls.
	(write_ts_decl_non_common_tree_pointers): Do not stream
	DECL_ORIGINAL_TYPE
	* tree.c (free_lang_data_in_decl): Clear DECL_ORIGINAL_TYPE.
	(find_decls_types_r): Do not walk DEC_ORIGINAL_TYPE.

From-SVN: r262560
2018-07-11 16:38:27 +00:00
Aldy Hernandez
f790df6be0 tree-ssa-threadupdate.c (thread_through_all_blocks): Do not jump thread twice from the same starting edge.
* tree-ssa-threadupdate.c (thread_through_all_blocks): Do not jump
	thread twice from the same starting edge.

From-SVN: r262559
2018-07-11 16:25:58 +00:00
Aldy Hernandez
288aaa5f85 vr-values.c (gimple_stmt_nonzero_p): Abstract common code to...
* vr-values.c (gimple_stmt_nonzero_p): Abstract common code to...
        * gimple.c (gimple_call_nonnull_result_p): ...here...
        (gimple_call_nonnull_arg): ...and here.
        * gimple.h (gimple_call_nonnull_result_p): New.
        (gimple_call_nonnull_arg): New.

From-SVN: r262557
2018-07-11 15:30:51 +00:00
Richard Earnshaw
dff2abcbee [arm] Put CPU's FPU capabilities directly in the ISA specification
As part of the transition from the original support for named FPUs to
general FPU properties I defined an entry in the CPU definitions in
arm-cpus.in to use a named FPU.  However, that has now outlived its
usefulness and increasingly we are likely to find that newer cores do
not fit the legacy FPU names very well.  Furthermore it is now possible
to encode all the FPU capatilities directly in the ISA definitions, often
as simply as using +fp or +simd.

So this patch removes the fpu field from the "define cpu" entries and
instead encodes the same information in the isa field.  This also alows us
to remove a bit of now-dead code from parsecpu.awk.

	* config/arm/arm-cpus.in: Move information from fpu field of each
	cpu definition to the isa field.
	* config/arm/parsecpu.awk (fpu): Delete match rule.
	(gen_comm_data): Don't add bits from the CPU's FPU entry.

From-SVN: r262556
2018-07-11 15:27:55 +00:00
Ian Lance Taylor
305130b92e compiler: fix evaluation order of LHS index expressions
The spec says that when an index expression appears on the left hand
    side of an assignment, the operands should be evaluated. The
    gofrontend code was assuming that that only referred to the index
    operand. But discussion of https://golang.org/issue/23188 has
    clarified that this means both the slice/map/string operand and the
    index operand. Adjust the gofrontend code accordingly.
    
    Fixes golang/go#23188
    
    Reviewed-on: https://go-review.googlesource.com/123155

From-SVN: r262554
2018-07-11 14:22:12 +00:00
Jakub Jelinek
2bae8b2fad re PR c++/86443 (ICEs on #pragma omp distribute parallel for with class iterators)
PR c++/86443
	* testsuite/libgomp.c++/for-15.C (a): Remove unused variable.
	(results): Make sure the variable is not inside declare target region.
	(qux): Remove unused function.

From-SVN: r262552
2018-07-11 15:13:31 +02:00
Richard Biener
cc71a1fe37 re PR debug/86457 (ICE in add_dwarf_attr, at dwarf2out.c:4405 since r251448)
2018-07-11  Richard Biener  <rguenther@suse.de>

	PR debug/86457
	* dwarf2out.c (init_sections_and_labels): Use
	output_asm_line_debug_info consistently.
	(dwarf2out_early_finish): Likewise.
	(dwarf2out_finish): Remove DW_AT_stmt_list from early generated
	type units.

From-SVN: r262551
2018-07-11 07:08:54 +00:00
Richard Biener
286fa9840d tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Rework father_bb setting in a way to avoid propagating constants multiple times...
2018-07-10  Richard Biener  <rguenther@suse.de>

	* tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1):
	Rework father_bb setting in a way to avoid propagating constants
	multiple times on a loop body.

From-SVN: r262550
2018-07-11 07:04:59 +00:00
GCC Administrator
7b8bddb4d3 Daily bump.
From-SVN: r262549
2018-07-11 00:16:58 +00:00
Mark Wielaard
6cdd696f3e PR debug/86459 - Fix -gsplit-dwarf -g3 gcc_assert
There was a typo in the output_macinfo_op gcc_assert.
The function is called dwarf_FORM, not dwarf_form.
Add the provided testcase from the bug to test -gsplit-dwarf -g3.

gcc/ChangeLog:

	PR debug/86459
	* dwarf2out.c (output_macinfo_op): Fix dwarf_FORM typo in gcc_assert.

gcc/testsuite/ChangeLog:

	PR debug/86459
	* gcc.dg/pr86459.c: New test.

From-SVN: r262545
2018-07-10 22:44:30 +00:00
Martin Sebor
a25bbd5413 PR testsuite/86461 - test case gcc.c-torture/execute/builtins/strlen-3.c fails
gcc/testsuite/ChangeLog:
	* gcc.c-torture/execute/builtins/strlen-3.c: Adjust.

From-SVN: r262543
2018-07-10 14:21:38 -06:00
Martin Liska
8a9f5d14f3 Change dg-warning to db-bogus in a test-case (PR testsuite/86445).
2018-07-10  Martin Liska  <mliska@suse.cz>

        PR testsuite/86445
	* gcc.dg/pr84100.c: Change it back to dg-bogus.

From-SVN: r262540
2018-07-10 14:50:28 +00:00
Richard Biener
86e0110413 hash-map.h (hash_map::iterator::operator*): Return references to key and value.
2018-07-10  Richard Biener  <rguenther@suse.de>

	* hash-map.h (hash_map::iterator::operator*): Return
	references to key and value.

From-SVN: r262539
2018-07-10 13:02:34 +00:00
Jakub Jelinek
f1bc6caec5 re PR sanitizer/86406 ([UBSAN] -fcompare-debug failure with -fsanitize=undefined)
PR sanitizer/86406
	* cp-gimplify.c (cp_maybe_instrument_return): Skip trailing
	DEBUG_BEGIN_STMTs.

	* g++.dg/ubsan/pr86406.C: New test.

From-SVN: r262536
2018-07-10 10:04:14 +02:00