1. 09 Aug, 2019 5 commits
    • 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 21 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
    • PR driver/91130 Use CL_DRIVER when handling of COLLECT_GCC_OPTIONS in lto-wrapper.c · c822ac7d
      Some options are handled differently by the main driver (gcc, g++,
      etc) from the back-end compiler programs (cc1, cc1plus, etc) in that
      in the driver they do not take an additional argument, while in the
      compiler programs they do.  The processing option option CL_DRIVER
      controls this alternative interpretation of the options.
      
      The environment variable COLLECT_GCC_OPTIONS is the list of options to
      add to a compile if the compiler re-invokes itself at some point.  As
      such, the options are driver options, so CL_DRIVER should be used when
      processing this list.  Currently lto-wrapper is doing this
      incorrectly.
      
      	PR driver/91130
      	* lto-wrapper.c (find_and_merge_options): Use CL_DRIVER when
      	processing COLLECT_GCC_OPTIONS.
      	(run_gcc): Likewise.
      
      From-SVN: r274176
      Richard Earnshaw committed
    • PR c++/91346 - Implement P1668R1, allow unevaluated asm in constexpr. · 529bc410
      	* constexpr.c (cxx_eval_constant_expression): Handle ASM_EXPR.
      	(potential_constant_expression_1) <case ASM_EXPR>: Allow.
      	* cp-tree.h (finish_asm_stmt): Adjust.
      	* parser.c (cp_parser_asm_definition): Grab the locaion of "asm" and
      	use it.  Change an error to a pedwarn.  Allow asm in C++2a, warn
      	otherwise.
      	* pt.c (tsubst_expr): Pass a location down to finish_asm_stmt.
      	* semantics.c (finish_asm_stmt): New location_t parameter.  Use it.
      
      	* g++.dg/cpp2a/inline-asm1.C: New test.
      	* g++.dg/cpp2a/inline-asm2.C: New test.
      	* g++.dg/cpp1y/constexpr-neg1.C: Adjust dg-error.
      
      From-SVN: r274169
      Marek Polacek committed
    • re PR tree-optimization/91109 ([arm] gcc.c-torture/execute/20040709-1.c fails since r273135) · 699ce759
      2019-08-07  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              PR tree-optimization/91109
              * lra-remat.c (update_scratch_ops): Remove assignment of the
              hard register.
      
      From-SVN: r274163
      Bernd Edlinger committed
    • Make IPA predicate::size a poly_int64 · 86003645
      This patch changes the IPA predicate::size field from a HOST_WIDE_INT
      to a poly_int64.
      
      2019-08-07  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* data-streamer.h (streamer_write_poly_uint64): Declare.
      	(streamer_read_poly_uint64): Likewise.
      	* data-streamer-in.c (streamer_read_poly_uint64): New function.
      	* data-streamer-out.c (streamer_write_poly_uint64): Likewise.
      	* ipa-predicate.h (condition::size): Turn into a poly_int64.
      	(add_condition): Take a poly_int64 size.
      	* ipa-predicate.c (add_condition): Likewise.
      	* ipa-prop.h (ipa_load_from_parm_agg): Take a poly_int64 size pointer.
      	* ipa-prop.c (ipa_load_from_parm_agg): Likewise.
      	(ipcp_modif_dom_walker::before_dom_children): Update accordingly.
      	* ipa-fnsummary.c (evaluate_conditions_for_known_args): Handle
      	condition::size as a poly_int64.
      	(unmodified_parm_1): Take a poly_int64 size pointer.
      	(unmodified_parm): Likewise.
      	(unmodified_parm_or_parm_agg_item): Likewise.
      	(set_cond_stmt_execution_predicate): Update accordingly.
      	(set_switch_stmt_execution_predicate): Likewise.
      	(will_be_nonconstant_expr_predicate): Likewise.
      	(will_be_nonconstant_predicate): Likewise.
      	(inline_read_section): Stream condition::size as a poly_int.
      	(ipa_fn_summary_write): Likewise.
      
      From-SVN: r274162
      Richard Sandiford committed
    • Replace int with boolean in predicate functions. · 12bbb1f7
      2019-08-07  Martin Liska  <mliska@suse.cz>
      
      	* fold-const.c (twoval_comparison_p): Replace int
      	with bool as a return type.
      	(simple_operand_p): Likewise.
      	(operand_equal_p): Replace int with bool as a return type.
      	* fold-const.h (operand_equal_p): Likewise.
      
      From-SVN: r274161
      Martin Liska committed
    • PR 53796 Make inquire(file=, recl=) conform to F2018 · 4047bab9
      In my original patch to fix PR 53796 I forgot to fix the behavior for
      unconnected units when inquiring via filename. This patch fixes that.
      
      Regtested on x86_64-pc-linux-gnu, committed as obvious.
      
      libgfortran/ChangeLog:
      
      2019-08-07  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	PR fortran/53796
      	* io/inquire.c (inquire_via_filename): Set recl to -1 for
      	unconnected units.
      
      gcc/testsuite/ChangeLog:
      
      2019-08-07  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	PR fortran/53796
      	* gfortran.dg/inquire_recl_f2018.f90: Test for unconnected unit
      	with inquire via filename.
      
      From-SVN: r274160
      Janne Blomqvist committed