1. 09 Aug, 2019 11 commits
    • Strengthen alias_ptr_types_compatible_p in LTO mode. · 33e8e0ee
      2019-08-09  Martin Liska  <mliska@suse.cz>
      
      	* alias.c (alias_ptr_types_compatible_p): Strengten
      	type comparison in LTO mode.
      
      From-SVN: r274235
      Martin Liska committed
    • Reject tail calls that read from an escaped RESULT_DECL (PR90313) · 97bf048c
      In this PR we have two return paths from a function "map".  The common
      code sets <result> to the value returned by one path, while the other
      path does:
      
         <retval> = map (&<retval>, ...);
      
      We treated this call as tail recursion, losing the copy semantics
      on the value returned by the recursive call.
      
      We'd correctly reject the same thing for variables:
      
         local = map (&local, ...);
      
      The problem is that RESULT_DECLs didn't get the same treatment.
      
      2019-08-09  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	PR middle-end/90313
      	* tree-tailcall.c (find_tail_calls): Reject calls that might
      	read from an escaped RESULT_DECL.
      
      gcc/testsuite/
      	PR middle-end/90313
      	* g++.dg/torture/pr90313.cc: New test.
      
      From-SVN: r274234
      Richard Sandiford committed
    • skip Cholesky decomposition in is>>n_mv_dist · c787deb0
      normal_mv_distribution maintains the variance-covariance matrix param
      in Cholesky-decomposed form.  Existing param_type constructors, when
      taking a full or lower-triangle varcov matrix, perform Cholesky
      decomposition to convert it to the internal representation.  This
      internal representation is visible both in the varcov() result, and in
      the streamed-out representation of a normal_mv_distribution object.
      
      The problem is that when that representation is streamed back in, the
      read-back decomposed varcov matrix is used as a lower-triangle
      non-decomposed varcov matrix, and it undergoes Cholesky decomposition
      again.  So, each cycle of stream-out/stream-in changes the varcov
      matrix to its "square root", instead of restoring the original
      params.
      
      This patch includes Corentin's changes that introduce verification in
      testsuite/ext/random/normal_mv_distribution/operators/serialize.cc and
      other similar tests that the object read back in compares equal to the
      written-out object: the modified tests pass only if (u == v).
      
      This patch also fixes the error exposed by his change, introducing an
      alternate private constructor for param_type, used only by operator>>.
      
      
      for  libstdc++-v3/ChangeLog
      
      	* include/ext/random
      	(normal_mv_distribution::param_type::param_type): New private
      	ctor taking a decomposed varcov matrix, for use by...
      	(operator>>): ... this, befriended.
      	* include/ext/random.tcc (operator>>): Use it.
      	(normal_mv_distribution::param_type::_M_init_lower): Adjust
      	member function name in exception message.
      
      for  libstdc++-v3/ChangeLog
      from  Corentin Gay  <gay@adacore.com>
      
      	* testsuite/ext/random/beta_distribution/operators/serialize.cc,
      	testsuite/ext/random/hypergeometric_distribution/operators/serialize.cc,
      	testsuite/ext/random/normal_mv_distribution/operators/serialize.cc,
      	testsuite/ext/random/triangular_distribution/operators/serialize.cc,
      	testsuite/ext/random/von_mises_distribution/operators/serialize.cc:
      	Add call to `VERIFY`.
      
      From-SVN: r274233
      Alexandre Oliva committed
    • Add -flto=auto option value. · 279dc7a3
      2019-08-09  Martin Liska  <mliska@suse.cz>
      
      	* doc/invoke.texi: Document the option value.
      	* lto-wrapper.c (run_gcc): Set auto_parallel
      	only with -flto=auto.
      2019-08-09  Martin Liska  <mliska@suse.cz>
      
      	* g++.dg/lto/devirt-19_0.C: Add -flto=auto.
      
      From-SVN: r274232
      Martin Liska committed
    • Provide proper error message for -flto=abcd. · 40077d15
      2019-08-09  Martin Liska  <mliska@suse.cz>
      
      	* opts.c (common_handle_option): Error for an invalid argument
      	to -flto=.
      2019-08-09  Martin Liska  <mliska@suse.cz>
      
      	* gcc.dg/spellcheck-options-21.c: New test.
      
      From-SVN: r274231
      Martin Liska committed
    • Implement -fopt-info support for IPA ICF. · fe6c4dc4
      2019-08-09  Martin Liska  <mliska@suse.cz>
      
      	* ipa-icf.c (sem_function::merge): Define AUTO_DUMP_SCOPE and
      	use dump_printf to report optimization.
      	(sem_variable::merge): Likwise.
      	(sem_item_optimizer::merge_classes): Use dump_printf to report
      	ICF hits.
      2019-08-09  Martin Liska  <mliska@suse.cz>
      
      	* g++.dg/ipa/ipa-icf-2.C: Add -optimized to -fdump-ipa-icf.
      	* g++.dg/ipa/ipa-icf-3.C: Likewise.
      	* g++.dg/ipa/ipa-icf-4.C: Likewise.
      	* g++.dg/ipa/ipa-icf-6.C: Likewise.
      	* gcc.dg/ipa/ipa-icf-1.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-10.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-11.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-12.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-13.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-16.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-18.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-2.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-20.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-21.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-23.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-25.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-26.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-27.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-3.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-35.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-36.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-37.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-38.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-39.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-5.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-7.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-8.c: Likewise.
      	* gcc.dg/ipa/ipa-icf-merge-1.c: Likewise.
      	* gcc.dg/ipa/pr64307.c: Likewise.
      	* gcc.dg/ipa/pr90555.c: Likewise.
      
      From-SVN: r274230
      Martin Liska committed
    • Port value profiling to -fopt-info infrastructure. · c220ecd2
      2019-08-09  Martin Liska  <mliska@suse.cz>
      
      	* value-prof.c (gimple_divmod_fixed_value_transform):
      	Use dump_printf_loc.
      	(gimple_mod_pow2_value_transform): Likewise.
      	(gimple_mod_subtract_transform): Likewise.
      	(init_node_map): Likewise.
      	(gimple_ic_transform): Likewise.
      	(gimple_stringops_transform): Likewise.
      2019-08-09  Martin Liska  <mliska@suse.cz>
      
      	* g++.dg/tree-prof/indir-call-prof.C: Add -optimize
      	to -fdump-ipa-profile.
      	* g++.dg/tree-prof/morefunc.C: Likewise.
      	* g++.dg/tree-prof/reorder.C: Likewise.
      	* gcc.dg/tree-prof/ic-misattribution-1.c: Likewise.
      	* gcc.dg/tree-prof/indir-call-prof.c: Likewise.
      	* gcc.dg/tree-prof/stringop-1.c: Likewise.
      	* gcc.dg/tree-prof/stringop-2.c: Likewise.
      	* gcc.dg/tree-prof/val-prof-1.c: Likewise.
      	* gcc.dg/tree-prof/val-prof-2.c: Likewise.
      	* gcc.dg/tree-prof/val-prof-3.c: Likewise.
      	* gcc.dg/tree-prof/val-prof-4.c: Likewise.
      	* gcc.dg/tree-prof/val-prof-5.c: Likewise.
      	* gcc.dg/tree-prof/val-prof-7.c: Likewise.
      
      From-SVN: r274229
      Martin Liska committed
    • c-parser.c (check_no_duplicate_clause): Simplify using omp_find_clause. · bb522e2e
      c/
      	* c-parser.c (check_no_duplicate_clause): Simplify using
      	omp_find_clause.
      	(c_parser_omp_clause_if): Fix up printing of target {enter,exit} data
      	directive name modifiers.
      	(c_parser_omp_clause_proc_bind): Check for duplicate proc_bind clause.
      cp/
      	* parser.c (check_no_duplicate_clause): Simplify using
      	omp_find_clause.
      	(cp_parser_omp_clause_if): Fix up printing of target {enter,exit} data
      	directive name modifiers.
      testsuite/
      	* c-c++-common/gomp/if-4.c: New test.
      	* c-c++-common/gomp/clause-dups-1.c: New test.
      
      From-SVN: r274227
      Jakub Jelinek committed
    • re PR c/91401 (schedule + dist_schedule clauses rejected on distribute parallel for) · 2c3b8bad
      	PR c/91401
      c/
      	* c-parser.c (c_parser_omp_clause_dist_schedule): Fix up typos in the
      	check_no_duplicate_clause call.  Comment it out, instead emit a
      	warning for duplicate dist_schedule clauses.
      cp/
      	* parser.c (cp_parser_omp_clause_dist_schedule): Comment out the
      	check_no_duplicate_clause call, instead emit a warning for duplicate
      	dist_schedule clauses.
      testsuite/
      	* c-c++-common/gomp/pr91401-1.c: New test.
      	* c-c++-common/gomp/pr91401-2.c: New test.
      
      From-SVN: r274226
      Jakub Jelinek committed
    • use rand instead of random · 5dd6b2da
      rand is in ISO C, whereas random is only in POSIX, so it makes sense
      to use the more portable function everywhere instead of falling back
      from one to the other on systems that miss the less portable one.
      
      
      for  gcc/testsuite/ChangeLog
      
      	* gcc.target/i386/sse2-mul-1.c: Use rand.  Drop fallback.
      	* gcc.target/i386/sse4_1-blendps-2.c: Likewise.
      	* gcc.target/i386/sse4_1-blendps.c: Likewise.
      	* gcc.target/i386/xop-vshift-1.c: Likewise.
      	* gcc.target/powerpc/direct-move.h: Likewise.
      
      From-SVN: r274225
      Alexandre Oliva committed
    • Daily bump. · 4e9d3fdb
      From-SVN: r274224
      GCC Administrator committed
  2. 08 Aug, 2019 14 commits
    • decl.c (grokdeclarator): Use id_loc and EXPR_LOCATION in a few error messages. · 327d3fd0
      /cp
      2019-08-08  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* decl.c (grokdeclarator): Use id_loc and EXPR_LOCATION in
      	a few error messages.
      
      /testsuite
      2019-08-08  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* g++.dg/cpp0x/enum20.C: Test location(s) too.
      	* g++.dg/other/friend3.C: Likewise.
      	* g++.dg/parse/dtor5.C: Likewise.
      	* g++.dg/parse/friend7.C: Likewise.
      	* g++.dg/template/error22.C: Likewise.
      	* g++.old-deja/g++.brendan/err-msg5.C: Likewise.
      
      From-SVN: r274220
      Paolo Carlini committed
    • rs6000: Rename DFP iterator and attr to DDTD and q · e35f75d3
      This is more in line with the other iterators we have, and a bit easier
      to read and write.
      
      
      	* config/rs6000/dfp.md (D64_D128): Rename to ...
      	(DDTD): ... this, throughout.
      	(dfp_suffix): Rename to ...
      	(q): ... this, throughout.
      
      From-SVN: r274218
      Segher Boessenkool committed
    • rs6000: Use iterators in more DFP patterns · b1bb8160
      I noticed some patterns in dfp.md could use the D64_D128 iterator but
      don't yet.  This converts all remaining simple cases.
      
      
      	* config/rs6000/dfp.md (D64_D128): Move earlier in the file.
      	(dfp_suffix): Ditto.
      	(adddd3, addtd3): Merge to ...
      	(add<mode>3 for D64_D128): ... this.
      	(subdd3, subtd3): Merge to ...
      	(sub<mode>3 for D64_D128): ... this.
      	(muldd3, multd3): Merge to ...
      	(mul<mode>3 for D64_D128): ... this.
      	(divdd3, divtd3): Merge to ...
      	(div<mode>3 for D64_D128): ... this.
      	(*cmpdd_internal1, *cmptd_internal1): Merge to ...
      	(*cmp<mode>_internal1 for D64_D128): ... this.
      	(ftruncdd2, ftrunctd2): Merge to ...
      	(ftrunc<mode>2 for D64_D128): ... this.
      	(fixdddi2, fixtddi2): Merge to ...
      	(fix<mode>di2 for D64_D128): ... this.
      
      From-SVN: r274217
      Segher Boessenkool committed
    • RISC-V: Fix C ABI for flattened struct with 0-length bitfield. · e98c3ee9
      	gcc/
      	PR target/91229
      	* config/riscv/riscv.c (riscv_flatten_aggregate_field): New arg
      	ignore_zero_width_bit_field_p.  Skip zero size bitfields when true.
      	Pass into recursive call.
      	(riscv_flatten_aggregate_argument): New arg.  Pass to
      	riscv_flatten_aggregate_field.
      	(riscv_pass_aggregate_in_fpr_pair_p): New local warned.  Call
      	riscv_flatten_aggregate_argument twice, with false and true as last
      	arg.  Process result twice.  Compare results and warn if different.
      	(riscv_pass_aggregate_in_fpr_and_gpr_p): Likewise.
      
      	gcc/testsuite/
      	* gcc.target/riscv/flattened-struct-abi-1.c: New test.
      	* gcc.target/riscv/flattened-struct-abi-2.c: New test.
      
      From-SVN: r274215
      Jim Wilson committed
    • re PR c++/79520 (Spurious caching for constexpr arguments) · 355229f2
      	PR c++/79520
      	* g++.dg/cpp1y/constexpr-79520.C: New test.
      
      From-SVN: r274214
      Marek Polacek committed
    • [C] Fix bogus nested enum error message · 99769e7f
      For:
      
          enum a { A };
          enum a { B };
      
      we emit a bogus error about nested definitions before the real error:
      
      foo.c:2:6: error: nested redefinition of ‘enum a’
          2 | enum a { B };
            |      ^
      foo.c:2:6: error: redeclaration of ‘enum a’
      foo.c:1:6: note: originally defined here
          1 | enum a { A };
            |      ^
      
      This is because we weren't clearing C_TYPE_BEING_DEFINED once the
      definition was over.
      
      I think it's OK to clear C_TYPE_BEING_DEFINED even for a definition
      that actually is nested (and so whose outer definition is still open),
      since we'll already have given an error by then.  It means that second
      and subsequent attempts to define a nested enum will usually get the
      redeclaration error instead of the nested error, but that seems just
      as accurate (nested_first and nested_second in the test).  The only
      exception is if the first nested enum was also invalid by being empty,
      but then the enum as a whole has already produced two errors
      (nested_empty in the test).
      
      2019-08-08  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/c/
      	* c-decl.c (finish_enum): Clear C_TYPE_BEING_DEFINED.
      
      gcc/testsuite/
      	* gcc.dg/pr79983.c (enum E): Don't allow an error about nested
      	definitions.
      	* gcc.dg/enum-redef-1.c: New test.
      
      From-SVN: r274213
      Richard Sandiford committed
    • PR c++/87519 - bogus warning with -Wsign-conversion. · 60bb9448
      	* typeck.c (cp_build_binary_op): Use same_type_p instead of comparing
      	the types directly.
      
      	* g++.dg/warn/Wsign-conversion-5.C: New test.
      
      From-SVN: r274211
      Marek Polacek committed
    • constexpr.c (inline_asm_in_constexpr_error): New. · 7c814975
      	* constexpr.c (inline_asm_in_constexpr_error): New.
      	(cxx_eval_constant_expression) <case ASM_EXPR>: Call it.
      	(potential_constant_expression_1) <case ASM_EXPR>: Likewise.
      
      	* g++.dg/cpp2a/inline-asm3.C: New test.
      
      From-SVN: r274210
      Marek Polacek committed
    • P0325R4 to_array from LFTS with updates · cb0de9b6
      As an extension to what the standard requires, this also adds
      conditional noexcept-specifiers to the std::to_array functions.
      
      	P0325R4 to_array from LFTS with updates
      	* include/experimental/array (to_array): Qualify call to __to_array.
      	* include/std/array (__cpp_lib_to_array, to_array): Define for C++20.
      	* include/std/version (__cpp_lib_to_array): Likewise.
      	* testsuite/23_containers/array/creation/1.cc: New test.
      	* testsuite/23_containers/array/creation/2.cc: New test.
      	* testsuite/23_containers/array/creation/3_neg.cc: New test.
      	* testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc:
      	Use zero for dg-error line number.
      
      From-SVN: r274209
      Jonathan Wakely committed
    • Fix file descriptor existence of MinGW. · 0fddb184
      2019-08-08  Martin Liska  <mliska@suse.cz>
      
      	PR bootstrap/91352
      	* gcc.c (driver::detect_jobserver): Use is_valid_fd.
      	* lto-wrapper.c (jobserver_active_p): Likewise.
      2019-08-08  Martin Liska  <mliska@suse.cz>
      
      	PR bootstrap/91352
      	* libiberty.h (is_valid_fd): New function.
      2019-08-08  Martin Liska  <mliska@suse.cz>
      
      	PR bootstrap/91352
      	* lrealpath.c (is_valid_fd): New function.
      
      From-SVN: r274208
      Martin Liska committed
    • When cloning set operator new/delete to false. · fe8e21fd
      2019-08-08  Martin Liska  <mliska@suse.cz>
      
      	* cgraphclones.c (set_new_clone_decl_and_node_flags): Drop
      	IS_OPERATOR_NEW and IS_OPERATOR_DELETE.
      	(create_version_clone_with_body): Likewise.
      
      From-SVN: r274207
      Martin Liska committed
    • gimplify.c (omp_add_variable): Use GOVD_PRIVATE | GOVD_EXPLICIT for VLA helper… · 8860d270
      gimplify.c (omp_add_variable): Use GOVD_PRIVATE | GOVD_EXPLICIT for VLA helper variables on target data even if...
      
      	* gimplify.c (omp_add_variable): Use GOVD_PRIVATE | GOVD_EXPLICIT
      	for VLA helper variables on target data even if not GOVD_FIRSTPRIVATE.
      	(gimplify_scan_omp_clauses): For OMP_CLAUSE_USE_DEVICE_* use just
      	GOVD_EXPLICIT flags.
      	(gimplify_omp_workshare): For OMP_TARGET_DATA move all
      	OMP_CLAUSE_USE_DEVICE_* clauses to the end of clauses chain.
      	* omp-low.c (scan_sharing_clauses): For OMP_CLAUSE_USE_DEVICE_*
      	call install_var_field with mask 11 instead of 3.
      	(lower_omp_target): For OMP_CLAUSE_USE_DEVICE_* use pass
      	(splay_tree_key) &DECL_UID (var) to build_sender_ref instead of var.
      gcc/c/
      	* c-typeck.c (c_finish_omp_clauses): For C_ORT_OMP
      	OMP_CLAUSE_USE_DEVICE_* clauses use oacc_reduction_head bitmap
      	instead of generic_head to track duplicates.
      gcc/cp/
      	* semantics.c (finish_omp_clauses): For C_ORT_OMP
      	OMP_CLAUSE_USE_DEVICE_* clauses use oacc_reduction_head bitmap
      	instead of generic_head to track duplicates.
      libgomp/
      	* target.c (gomp_map_vars_internal): For GOMP_MAP_USE_DEVICE_PTR
      	perform the lookup in the first loop only if !not_found_cnt, otherwise
      	perform lookups for it in the second loop guarded with
      	if (not_found_cnt || has_firstprivate).
      	* testsuite/libgomp.c/target-37.c: New test.
      	* testsuite/libgomp.c++/target-22.C: New test.
      
      From-SVN: r274206
      Jakub Jelinek committed
    • Daily bump. · 34f3ec07
      From-SVN: r274205
      GCC Administrator committed
  3. 07 Aug, 2019 15 commits
    • re PR fortran/91359 (logical function X returns .TRUE. - Warning: spaghetti code) · aec233aa
      2019-08-07  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/91359
      	* pr91359_2.f:  Fix missing hyphen in dg-do
      	* pr91359_1.f:  Ditto.  Remove RESULT variable to test actual fix!
      
      From-SVN: r274201
      Steven G. Kargl committed
    • re PR c++/67533 (internal compiler error: in build_call_a, at cp/call.c:372) · f2f9d24d
      	PR c++/67533
      	* g++.dg/tls/thread_local-ice5.C: New test.
      
      From-SVN: r274200
      Marek Polacek committed
    • [AArch64] Fix INSR for zero floats · 9b6fb97c
      We used INSR to handle zero integers but not zero floats.
      
      2019-08-07  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/constraints.md (Z): Handle floating-point zeros too.
      	* config/aarch64/predicates.md (aarch64_reg_or_zero): Likewise.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/init_13.c: New test.
      
      From-SVN: r274193
      Richard Sandiford committed
    • [AArch64] Prefer FPRs over GPRs for INSR · 61ee25b9
      INSR of GPRs involves a cross-file move while INSR of FPRs doesn't.
      We should therefore disparage the GPR version relative to the FPR
      version.
      
      The patch also adds MOVPRFX handling, but this is only tested
      properly by the ACLE.
      
      2019-08-07  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): Add
      	MOVPRFX alternatives.  Make the GPR alternatives more expensive
      	than the FPR ones.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/init_12.c: Expect w1 to be moved into
      	a temporary FPR.
      
      From-SVN: r274192
      Richard Sandiford committed
    • [AArch64] Prefer FPRs over GPRs for CLASTB · 801790b3
      This patch makes the SVE CLASTB GPR alternative more expensive than the
      FPR alternative in order to avoid unnecessary cross-file moves.  It also
      fixes the prefix used to print the FPR; <vw> only handles 32-bit and
      64-bit elements.
      
      2019-08-07  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/aarch64-sve.md (fold_extract_last_<mode>):
      	Disparage the GPR alternative relative to the FPR one.
      	Fix handling of 8-bit and 16-bit FPR values.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/clastb_8.c: New test.
      
      From-SVN: r274191
      Richard Sandiford committed
    • [AArch64] Merge SVE reduction patterns · b0760a40
      The reorg showed that we had an unnecessary separation between
      the bitwise and max/min reductions for integers, and the
      addition and max/min reductions for fp.
      
      2019-08-07  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/iterators.md (BITWISEV): Delete.
      	(SVE_INT_REDUCTION, SVE_FP_REDUCTION): New int iterators.
      	(optab): Handle UNSPEC_UMAXV, UNSPEC_UMINV, UNSPEC_SMAXV,
      	UNSPEC_SMINV, UNSPEC_FADDV, UNSPEC_FMAXNMV, UNSPEC_FMAXV,
      	UNSPEC_FMINNMV, UNSPEC_FMINV.
      	(bit_reduc_op): Delete.
      	(sve_int_op): New int attribute.
      	(sve_fp_op): Handle UNSPEC_FADDV, UNSPEC_FMAXNMV, UNSPEC_FMAXV,
      	UNSPEC_FMINNMV, UNSPEC_FMINV.
      	* config/aarch64/aarch64-sve.md
      	(reduc_<MAXMINV:maxmin_uns>_scal_<SVE_I:mode>)
      	(*reduc_<MAXMINV:maxmin_uns>_scal_<SVE_I:mode>)
      	(reduc_<BITWISEV:optab>_scal_<SVE_I:mode>)
      	(*reduc_<BITWISEV:optab>_scal_<SVE_I:mode>): Merge into...
      	(reduc_<SVE_INT_REDUCTION:optab>_scal_<SVE_I:mode>)
      	(*reduc_<SVE_INT_REDUCTION:optab>_scal_<SVE_I:mode>): ...these
      	new patterns.
      	(reduc_plus_scal_<SVE_F:mode>, *reduc_plus_scal_<SVE_I:mode>)
      	(reduc_<FMAXMINV:optab>_scal_<SVE_F:mode>)
      	(*reduc_<FMAXMINV:optab>_scal_<SVE_F:mode>): Merge into...
      	(reduc_<SVE_FP_REDUCTION:optab>_scal_<SVE_F:mode>)
      	(*reduc_<SVE_FP_REDUCTION:optab>_scal_<SVE_F:mode>): ...these
      	new patterns.
      
      From-SVN: r274190
      Richard Sandiford committed
    • [AArch64] Merge SVE ternary FP operations · 0d80d083
      This patch combines the four individual fused multiply-add optabs
      into one pattern and uses unspecs instead of rtx codes.  This is
      part of a series of patches that change the SVE FP patterns so that
      they can describe cases in which the predicate isn't all-true.
      
      2019-08-07  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/aarch64-sve.md (fma<mode>4, *fma<mode>4)
      	(fnma<mode>4, *fnma<mode>4, fnms<mode>4, *fnms<mode>4)
      	(fms<mode>4, *fms<mode>4): Replace with...
      	(<SVE_COND_FP_TERNARY:optab><SVE_F:mode>4)
      	(*<SVE_COND_FP_TERNARY:optab><SVE_F:mode>4): ...these new patterns.
      	Use unspecs instead of rtx codes.
      	(cond_<optab><mode>, *cond_<optab><mode>_2, *cond_<optab><mode>_4)
      	(*cond_<optab><mode>_any): Add the predicate to SVE_COND_FP_TERNARY.
      
      From-SVN: r274189
      Richard Sandiford committed
    • [AArch64] Merge SVE FMAXNM/FMINNM patterns · 214c42fa
      This patch makes us use the same define_insn for both the smax/smin
      and fmax/fmin optabs.  It also continues the process started by
      the earlier FP unary patch of moving predicated FP patterns from
      rtx codes to unspecs.
      
      There's no need to handle the FMAX and FMIN instructions until
      the ACLE patch, since we only use FMAXNM and FMINNM at present.
      
      2019-08-07  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/iterators.md (SVE_COND_FP_MAXMIN_PUBLIC): New
      	int iterator.
      	(maxmin_uns_op): Handle UNSPEC_COND_FMAXNM and UNSPEC_COND_FMINNM.
      	* config/aarch64/aarch64-sve.md
      	(<FMAXMIN:su><FMAXMIN:maxmin><SVE_F:mode>3): Rename to...
      	(<SVE_COND_FP_MAXMIN_PUBLIC:optab><SVE_F:mode>3): ...this and
      	use a single unspec for the rhs.
      	(*<su><maxmin><mode>3): Delete.
      	(<maxmin_uns><SVE_F:mode>3): Use a single unspec for the rhs.
      
      From-SVN: r274188
      Richard Sandiford committed
    • [AArch64] Merge SVE FP unary patterns · d45b20a5
      This patch merges the SVE FP rounding patterns with the other SVE
      FP unary patterns.
      
      At the moment, we only generate unary FP operations for full vectors,
      so we can use (sqrt:VNx4SF ...) etc. in the rtl pattern.  With the ACLE,
      it's also possible to generate predicated operations on partial vectors
      without specifying a value for inactive lanes.  (sqrt:VNx4SF ...) would
      then have different faulting behaviour from the instruction that the
      pattern generates.
      
      This patch therefore uses unspecs to represent the operations instead.
      Later patches make this change for other patterns.
      
      2019-08-07  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/iterators.md (UNSPEC_COND_FABS, UNSPEC_COND_FNEG)
      	(UNSPEC_COND_FRINTA, UNSPEC_COND_FRINTI, UNSPEC_COND_FRINTM)
      	(UNSPEC_COND_FRINTN, UNSPEC_COND_FRINTP, UNSPEC_COND_FRINTX)
      	(UNSPEC_COND_FRINTZ, UNSPEC_COND_FSQRT): New unspecs.
      	(optab, sve_fp_op): Handle them.
      	(SVE_FP_UNARY): Delete.
      	(optab): Remove sqrt entry.
      	(sve_fp_op): Remove neg, abs and sqrt entries.
      	(SVE_COND_FP_UNARY): New int iterator.
      	* config/aarch64/aarch64-sve.md (<frint_pattern><mode>2)
      	(*<frint_pattern><mode>2): Delete.
      	(<SVE_FP_UNARY:optab><SVE_F:mode>2): Replace with...
      	(<SVE_COND_FP_UNARY:optab><SVE_F:mode>2): ...this.
      	(*<SVE_FP_UNARY:optab><SVE_F:mode>2): Replace with...
      	(*<SVE_COND_FP_UNARY:optab><SVE_F:mode>2): ...this.
      
      From-SVN: r274187
      Richard Sandiford committed
    • [AArch64] Remove redundant SVE FADDA pattern · 8ad84de2
      *pred_fold_left_plus_<mode> could no longer match anything, since
      UNSPEC_FADDA now takes three operands.  Predicated FADDAs should
      now go through mask_fold_left_plus_<mode> instead.
      
      2019-08-07  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/aarch64-sve.md (*pred_fold_left_plus_<mode>): Delete.
      
      From-SVN: r274186
      Richard Sandiford committed
    • [AArch64] Make SVE UNSPEC_COND_*s match the insn mnemonic · cb18e86d
      This patch makes the UNSPEC_COND* names match the instruction mnemonics,
      rather than having the previous mixture in which some used instructions
      while others used operator names.
      
      2019-08-07  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/iterators.md (UNSPEC_COND_ADD): Rename to...
      	(UNSPEC_COND_FADD): ...this.
      	(UNSPEC_COND_SUB): Rename to...
      	(UNSPEC_COND_FSUB): ...this.
      	(UNSPEC_COND_MUL): Rename to...
      	(UNSPEC_COND_FMUL): ...this.
      	(UNSPEC_COND_DIV): Rename to...
      	(UNSPEC_COND_FDIV): ...this.
      	(UNSPEC_COND_MAX): Rename to...
      	(UNSPEC_COND_FMAXNM): ...this.
      	(UNSPEC_COND_MIN): Rename to...
      	(UNSPEC_COND_FMINNM): ...this.
      	(UNSPEC_COND_LT): Rename to...
      	(UNSPEC_COND_FCMLT): ...this.
      	(UNSPEC_COND_LE): Rename to...
      	(UNSPEC_COND_FCMLE): ...this.
      	(UNSPEC_COND_EQ): Rename to...
      	(UNSPEC_COND_FCMEQ): ...this.
      	(UNSPEC_COND_NE): Rename to...
      	(UNSPEC_COND_FCMNE): ...this.
      	(UNSPEC_COND_GE): Rename to...
      	(UNSPEC_COND_FCMGE): ...this.
      	(UNSPEC_COND_GT): Rename to...
      	(UNSPEC_COND_FCMGT): ...this.
      	(SVE_COND_FP_BINARY, SVE_COND_FP_CMP, optab, cmp_op, sve_fp_op)
      	(sve_fp_op_rev): Update accordingly.
      	* config/aarch64/aarch64.c (aarch64_unspec_cond_code): Likewise.
      
      From-SVN: r274185
      Richard Sandiford committed
    • [AArch64] Reorganise aarch64-sve.md · 915d28fe
      aarch64-sve.md was getting a bit jumbled, with related operations
      separated by unrelated operations.  Also, many SVE instructions need
      to have several patterns due to the various ways in which predication
      can be used, and it was getting hard to tell which instructions had a
      complete set of patterns.
      
      This patch therefore tries to use an explicit grouping scheme.
      Banner comments are usually frowned on, but md files have been
      a traditional exception (e.g. when using Mike's template for
      new targets).
      
      The patch also lists the instructions implemented by each section,
      so that it's possible to search the file by instruction mnemonic.
      
      I wouldn't be surprised if I end up having to rip out the contents
      section, but I found it useful for the month or so that that I've
      been using it locally.  The patch checks that the contents remain
      up-to-date by running a checking script during an early stage of
      the build.
      
      No functional change intended.
      
      2019-08-07  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/aarch64-sve.md: Reorganize contents and add
      	banner comments.
      	* config/aarch64/check-sve-md.awk: New file.
      	* config/aarch64/t-aarch64 (s-check-sve-md): New rule.
      	(insn-conditions.md): Depend on it.
      
      From-SVN: r274184
      Richard Sandiford committed
    • re PR target/91385 (Zero-extended negation (*negsi2_1_zext) is not generated) · e3b4d9d7
      	PR target/91385
      	* config/i386/sse.md (*negsi2_1_zext): Simplify insn pattern.
      	(*negsi2_cmpz_zext): Ditto.
      
      testsuite/ChangeLog:
      
      	PR target/91385
      	* gcc.target/i386/pr91385.c: New test.
      
      From-SVN: r274183
      Uros Bizjak committed
    • [AArch64] Remove unused commutative attribute · 871b49af
      The commutative attribute was once used by the SVE conditional binary
      expanders, but it's now dead code.
      
      2019-08-07  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/iterators.md (commutative): Remove.
      
      From-SVN: r274182
      Richard Sandiford committed
    • PR c++/81429 - wrong parsing of constructor with C++11 attribute. · 842901d0
      	* parser.c (cp_parser_constructor_declarator_p): Handle the scenario
      	when a parameter declaration begins with [[attribute]].
      
      	* g++.dg/cpp0x/gen-attrs-68.C: New test.
      	* g++.dg/cpp0x/gen-attrs-69.C: New test.
      
      From-SVN: r274181
      Marek Polacek committed