- Jan 28, 2025
- Jan 27, 2025
-
-
James K. Lowden authored
-
rdubner authored
-
- Jan 26, 2025
-
-
James K. Lowden authored
-
James K. Lowden authored
-
rdubner authored
-
James K. Lowden authored
-
James K. Lowden authored
-
James K. Lowden authored
-
James K. Lowden authored
-
rdubner authored
-
rdubner authored
-
James K. Lowden authored
-
- Jan 25, 2025
-
-
James K. Lowden authored
-
James K. Lowden authored
-
- Jan 24, 2025
-
-
James K. Lowden authored
-
James K. Lowden authored
-
rdubner authored
-
rdubner authored
-
Richard Biener authored
r15-491-gc290e6a0b7a9de fixed a latent issue with dr_analyze_innermost and dr_may_alias where not properly analyzed DRs would yield an invalid answer. This caused some missed optimizations in case there is not actually any evolution in the not analyzed base part. The following recovers this by only handling base parts which reference SSA vars as index in the conservative way. The gfortran.dg/vect/vect-8.f90 testcase is difficult to deal with, so the following merely bumps the maximum number of expected vectorized loops for both aarch64 and x86-64. PR tree-optimization/116010 * tree-data-ref.cc (contains_ssa_ref_p_1): New function. (contains_ssa_ref_p): Likewise. (dr_may_alias_p): Avoid treating unanalyzed base parts without SSA reference conservatively. * gfortran.dg/vect/vect-8.f90: Adjust.
-
Stefan Schulze Frielinghaus authored
Merge new optabs with the existing implementations for signbit and isinf. gcc/ChangeLog: * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): Remove. (S390_TDC_NEGATIVE_ZERO): Remove. (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): Remove. (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): Remove. (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): Remove. (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): Remove. (S390_TDC_POSITIVE_INFINITY): Remove. (S390_TDC_NEGATIVE_INFINITY): Remove. (S390_TDC_POSITIVE_QUIET_NAN): Remove. (S390_TDC_NEGATIVE_QUIET_NAN): Remove. (S390_TDC_POSITIVE_SIGNALING_NAN): Remove. (S390_TDC_NEGATIVE_SIGNALING_NAN): Remove. (S390_TDC_POSITIVE_DENORMALIZED_DFP_NUMBER): Remove. (S390_TDC_NEGATIVE_DENORMALIZED_DFP_NUMBER): Remove. (S390_TDC_POSITIVE_NORMALIZED_DFP_NUMBER): Remove. (S390_TDC_NEGATIVE_NORMALIZED_DFP_NUMBER): Remove. (S390_TDC_SIGNBIT_SET): Remove. (S390_TDC_INFINITY): Remove. * config/s390/s390.md (signbit<mode>2<tf_fpr>): Merge this one (isinf<mode>2<tf_fpr>): and this one into (<TDC_CLASS:tdc_insn><mode>2<tf_fpr>): new expander. (isnormal<mode>2<tf_fpr>): New BFP expander. (isnormal<mode>2): New DFP expander. * config/s390/vector.md (signbittf2_vr): Merge this one (isinftf2_vr): and this one into (<tdc_insn>tf2_vr): new expander. (signbittf2): Merge this one (isinftf2): and this one into (<tdc_insn>tf2): new expander. gcc/testsuite/ChangeLog: * gcc.target/s390/isfinite-isinf-isnormal-signbit-1.c: New test. * gcc.target/s390/isfinite-isinf-isnormal-signbit-2.c: New test. * gcc.target/s390/isfinite-isinf-isnormal-signbit-3.c: New test. * gcc.target/s390/isfinite-isinf-isnormal-signbit.h: New test.
-
Richard Biener authored
We no longer subtract the estimated eliminated number of instructions from the estimated size after unrolling we print - this is a bit confusing when comparing dumps to previous releases. The following changes the dump from Estimated size after unrolling: 42 to Estimated size after unrolling: 42-12 for the testcase in the PR. PR tree-optimization/118634 * tree-ssa-loop-ivcanon.cc (try_unroll_loop_completely): Dump the number of estimated eliminated insns.
-
Saurabh Jha authored
Earlier, we were gating SVE2 faminmax behind sve+faminmax. This was incorrect and this patch changes it so that it is gated behind sve2+faminmax. gcc/ChangeLog: * config/aarch64/aarch64-sve2.md: (*aarch64_pred_faminmax_fused): Fix to use the correct flags. * config/aarch64/aarch64.h (TARGET_SVE_FAMINMAX): Remove. * config/aarch64/iterators.md: Fix iterators so that famax and famin use correct flags. gcc/testsuite/ChangeLog: * gcc.target/aarch64/sve/faminmax_1.c: Fix test to use the correct flags. * gcc.target/aarch64/sve/faminmax_2.c: Fix test to use the correct flags. * gcc.target/aarch64/sve/faminmax_3.c: New test.
-
Alexandre Oliva authored
When comparing a signed narrow variable with a wider constant that has the bit corresponding to the variable's sign bit set, we would check that the constant is a sign-extension from that sign bit, and conclude that the compare fails if it isn't. When the signed variable is masked without getting the [lr]l_signbit variable set, or when the sign bit itself is masked out, we know the sign-extension bits from the extended variable are going to be zero, so the constant will only compare equal if it is a zero- rather than sign-extension from the narrow variable's precision, therefore, check that it satisfies this property, and yield a false compare result otherwise. for gcc/ChangeLog PR tree-optimization/118572 * gimple-fold.cc (fold_truth_andor_for_ifcombine): Compare as unsigned the variables whose extension bits are masked out. for gcc/testsuite/ChangeLog PR tree-optimization/118572 * gcc.dg/field-merge-24.c: New.
-
Alexandre Oliva authored
Don't reject an ifcombine field-merging opportunity just because the left-hand operands aren't both reversed, if the second compare needs to be swapped for operands to match. Also mention that reversep does NOT affect the turning of range tests into bit tests. for gcc/ChangeLog * gimple-fold.cc (fold_truth_andor_for_ifcombine): Document reversep's absence of effects on range tests. Don't reject reversep mismatches before trying compare swapping.
-
Alexandre Oliva authored
Check that BIT_FIELD_REFs of DECLs are in range before deciding they don't trap. Check that a replacement bitfield load is as trapping as the replaced load. for gcc/ChangeLog PR tree-optimization/118514 * tree-eh.cc (bit_field_ref_in_bounds_p): New. (tree_could_trap_p) <BIT_FIELD_REF>: Call it. * gimple-fold.cc (make_bit_field_load): Check trapping status of replacement load against original load. for gcc/testsuite/ChangeLog PR tree-optimization/118514 * gcc.dg/field-merge-23.c: New.
-
GCC Administrator authored
-
- Jan 23, 2025
-
-
Marek Polacek authored
The error here should also check that we aren't nested in another lambda; in it, at_function_scope_p() will be false. PR c++/117602 gcc/cp/ChangeLog: * cp-tree.h (current_nonlambda_scope): Add a default argument. * lambda.cc (current_nonlambda_scope): New bool parameter. Use it. * parser.cc (cp_parser_lambda_introducer): Use current_nonlambda_scope to check if the lambda is non-local. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/lambda-uneval21.C: New test. Reviewed-by:
Jason Merrill <jason@redhat.com>
-
Jakub Jelinek authored
After committing the append_ctor_to_tree_vector patch, I've realized that for the larger constructors make_tree_vector_from_ctor unnecessarily wastes one GC vector; make_tree_vector () / release_tree_vector () only caches GC vectors from 4 to 16 allocated tree elements, so in the likely case of a rather small ctor using make_tree_vector () can be beneficial, we can pick something from the cache and if we don't need it later, pt.cc calls release_tree_vector on it to return it back to the cache. But for the larger ctors, we just eat one vector from the cache, never use it (because the vec_safe_reserve will immediately allocate a different vector) and never return it back to the cache. So, the following patch passes NULL for the larger vectors, which append_ctor_to_tree_vector handles just fine now (vec_safe_reserve will just allocate appropriately sized vector). 2025-01-23 Jakub Jelinek <jakub@redhat.com> * c-common.cc (make_tree_vector_from_ctor): Only use make_tree_vector for ctors with <= 16 elements.
-
James K. Lowden authored
-
John David Anglin authored
2025-01-23 John David Anglin <danglin@gcc.gnu.org> gcc/ChangeLog: * config/pa/pa32-regs.h (ADDITIONAL_REGISTER_NAMES): Change register 86 name to "%fr31L".
-
rdubner authored
-
rdubner authored
-
Jakub Jelinek authored
vectorizable_{store,load} does roughly tree offvar; tree running_off; if (!costing_p) { ... initialize offvar ... } running_off = offvar; for (...) { if (costing_p) { ... continue; } ... use running_off ... } so, it copies unconditionally sometimes uninitialized variable (but then uses the copied variable only if it was set to something initialized). Still, I think it is better to avoid copying around maybe uninitialized vars. 2025-01-23 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/118628 * tree-vect-stmts.cc (vectorizable_store, vectorizable_load): Initialize offvar to NULL_TREE.
-
rdubner authored
-
Harald Anlauf authored
PR fortran/118613 gcc/fortran/ChangeLog: * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxval): Adjust algorithm for inlined version of MINLOC and MAXLOC so that arguments are only evaluted once, and create temporaries where necessary. Document change of algorithm. gcc/testsuite/ChangeLog: * gfortran.dg/maxval_arg_eval_count.f90: New test.
-
James K. Lowden authored
-