- 09 Aug, 2019 11 commits
-
-
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 -
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 -
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 -
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 -
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 -
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 -
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/ * 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 -
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 -
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 -
From-SVN: r274224
GCC Administrator committed
-
- 08 Aug, 2019 14 commits
-
-
/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 -
From-SVN: r274219
Mihailo Stojanovic committed -
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 -
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 -
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 -
PR c++/79520 * g++.dg/cpp1y/constexpr-79520.C: New test. From-SVN: r274214
Marek Polacek committed -
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 -
* 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. (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 -
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 -
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 -
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 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 -
From-SVN: r274205
GCC Administrator committed
-
- 07 Aug, 2019 15 commits
-
-
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 -
PR c++/67533 * g++.dg/tls/thread_local-ice5.C: New test. From-SVN: r274200
Marek Polacek committed -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
*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 -
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-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 -
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 -
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 -
* 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
-