commit:     8cda62318174b911a7cba57fcf70efd38f265f0e
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Jul 30 00:44:05 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Jul 30 00:44:48 2025 +0000
URL:        https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=8cda6231

16.0.0: update patches

Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...sufficient-alignment-requirement-for-spec.patch | 55 ++++++++--------------
 ...ssing-skip-vector-check-for-peeling-with-.patch | 28 ++++++-----
 16.0.0/gentoo/README.history                       |  5 ++
 3 files changed, 39 insertions(+), 49 deletions(-)

diff --git 
a/16.0.0/gentoo/86_all_PR121190-vect-Fix-insufficient-alignment-requirement-for-spec.patch
 
b/16.0.0/gentoo/86_all_PR121190-vect-Fix-insufficient-alignment-requirement-for-spec.patch
index 9a03cdd..f05e749 100644
--- 
a/16.0.0/gentoo/86_all_PR121190-vect-Fix-insufficient-alignment-requirement-for-spec.patch
+++ 
b/16.0.0/gentoo/86_all_PR121190-vect-Fix-insufficient-alignment-requirement-for-spec.patch
@@ -1,10 +1,10 @@
 https://bugs.gentoo.org/959698
-https://inbox.sourceware.org/gcc-patches/[email protected]/T/#u
+https://inbox.sourceware.org/gcc-patches/db3pr08mb89626fa52fea5fb7ace33b19a4...@db3pr08mb8962.eurprd08.prod.outlook.com/
 
-From e120f6cb794a4d104b37913c918aabe0ae6b2c64 Mon Sep 17 00:00:00 2001
-Message-ID: 
<e120f6cb794a4d104b37913c918aabe0ae6b2c64.1753106388.git....@gentoo.org>
+From f91a62751e8198e6f02c21dffa35ac803b46d048 Mon Sep 17 00:00:00 2001
+Message-ID: 
<f91a62751e8198e6f02c21dffa35ac803b46d048.1753836047.git....@gentoo.org>
 From: Pengfei Li <[email protected]>
-Date: Mon, 21 Jul 2025 11:02:32 +0000
+Date: Tue, 29 Jul 2025 14:58:18 +0000
 Subject: [PATCH 1/2] vect: Fix insufficient alignment requirement for
  speculative loads [PR121190]
 
@@ -42,9 +42,9 @@ alignment, but the following ones (at offset 32) may not be 
safe because
 they could read from the beginning of the next memory page, potentially
 leading to segmentation faults.
 
-To avoid the issue, this patch increases the alignment requirement for
-speculative loads to DR_TARGET_ALIGNMENT. It ensures all vector loads in
-the same vector iteration access memory within the same page.
+To avoid the issue, this patch increases the alignment requirement to
+DR_TARGET_ALIGNMENT. It ensures all vector loads in the same vector
+iteration access memory within the same page.
 
 This patch is bootstrapped and regression-tested on x86_64-linux-gnu,
 arm-linux-gnueabihf and aarch64-linux-gnu.
@@ -61,20 +61,19 @@ gcc/testsuite/ChangeLog:
 * gcc.dg/vect/vect-early-break_52.c: Update an unsafe test.
        * gcc.dg/vect/vect-early-break_137.c-pr121190: New test.
 ---
- .../vect/vect-early-break_137-pr121190.c      | 60 +++++++++++++++++++
+ .../vect/vect-early-break_137-pr121190.c      | 62 +++++++++++++++++++
  .../gcc.dg/vect/vect-early-break_52.c         |  2 +-
- gcc/tree-vect-data-refs.cc                    | 15 ++++-
- 3 files changed, 75 insertions(+), 2 deletions(-)
+ gcc/tree-vect-data-refs.cc                    |  3 +-
+ 3 files changed, 65 insertions(+), 2 deletions(-)
  create mode 100644 gcc/testsuite/gcc.dg/vect/vect-early-break_137-pr121190.c
 
 diff --git a/gcc/testsuite/gcc.dg/vect/vect-early-break_137-pr121190.c 
b/gcc/testsuite/gcc.dg/vect/vect-early-break_137-pr121190.c
 new file mode 100644
-index 000000000000..da11146c578e
+index 000000000000..e6b071c411cf
 --- /dev/null
 +++ b/gcc/testsuite/gcc.dg/vect/vect-early-break_137-pr121190.c
-@@ -0,0 +1,60 @@
+@@ -0,0 +1,62 @@
 +/* PR tree-optimization/121190 */
-+/* { dg-do run } */
 +/* { dg-options "-O3" } */
 +/* { dg-additional-options "-march=znver2" { target x86_64-*-* i?86-*-* } } */
 +/* { dg-require-effective-target mmap } */
@@ -85,6 +84,7 @@ index 000000000000..da11146c578e
 +#include <stdio.h>
 +#include <sys/mman.h>
 +#include <unistd.h>
++#include "tree-vect.h"
 +
 +#define MAX_COMPARE 5000
 +
@@ -102,6 +102,8 @@ index 000000000000..da11146c578e
 +
 +int main ()
 +{
++  check_vect ();
++
 +  long pgsz = sysconf (_SC_PAGESIZE);
 +  if (pgsz == -1) {
 +    fprintf (stderr, "sysconf failed\n");
@@ -144,38 +146,19 @@ index 86a632f2a822..6abfcd6580e4 100644
 -/* { dg-final { scan-tree-dump "vectorized 1 loops in function" "vect" { 
target { ! "x86_64-*-* i?86-*-*" } } } } */
 +/* { dg-final { scan-tree-dump "vectorized 1 loops in function" "vect" { 
target { ! "x86_64-*-* i?86-*-* arm*-*-*" } } } } */
 diff --git a/gcc/tree-vect-data-refs.cc b/gcc/tree-vect-data-refs.cc
-index a24ddfbc3841..24048086857f 100644
+index e7919b73c258..66217c54b050 100644
 --- a/gcc/tree-vect-data-refs.cc
 +++ b/gcc/tree-vect-data-refs.cc
-@@ -2964,12 +2964,25 @@ vect_enhance_data_refs_alignment (loop_vec_info 
loop_vinfo)
-                   break;
-                 }
- 
-+            /* Normally, we require DRs to be aligned to the vector mode size.
-+               However, this is not sufficient when a statement involves safe
-+               speculative read.  In such cases, a single scalar load can be
-+               vectorized into multiple vector loads in one loop iteration.
-+               Even if the first vector load is safe, subsequent loads might
-+               still access an invalid memory page.  We increase the alignment
-+               requirement to prevent this.  */
-+            poly_uint64 required_align_size;
-+            if (dr_safe_speculative_read_required (stmt_info))
-+              required_align_size = DR_TARGET_ALIGNMENT (dr_info);
-+            else
-+              required_align_size = GET_MODE_SIZE (TYPE_MODE (vectype));
-+
-             /* At present we don't support versioning for alignment
-                with variable VF, since there's no guarantee that the
+@@ -2969,7 +2969,8 @@ vect_enhance_data_refs_alignment (loop_vec_info 
loop_vinfo)
                 VF is a power of two.  We could relax this if we added
                 a way of enforcing a power-of-two size.  */
              unsigned HOST_WIDE_INT size;
 -            if (!GET_MODE_SIZE (TYPE_MODE (vectype)).is_constant (&size))
-+            if (!required_align_size.is_constant (&size))
++            if (!LOOP_VINFO_VECT_FACTOR (loop_vinfo).is_constant ()
++                || !DR_TARGET_ALIGNMENT (dr_info).is_constant (&size))
                {
                  do_versioning = false;
                  break;
-
-base-commit: b441d735c092f5d60c4a9c7167ed9153003d49fa
 -- 
 2.50.1
 

diff --git 
a/16.0.0/gentoo/87_all_PR121020-vect-Add-missing-skip-vector-check-for-peeling-with-.patch
 
b/16.0.0/gentoo/87_all_PR121020-vect-Add-missing-skip-vector-check-for-peeling-with-.patch
index 5aae3a5..c472d5d 100644
--- 
a/16.0.0/gentoo/87_all_PR121020-vect-Add-missing-skip-vector-check-for-peeling-with-.patch
+++ 
b/16.0.0/gentoo/87_all_PR121020-vect-Add-missing-skip-vector-check-for-peeling-with-.patch
@@ -1,12 +1,12 @@
 https://bugs.gentoo.org/959698
-https://inbox.sourceware.org/gcc-patches/[email protected]/T/#u
+https://inbox.sourceware.org/gcc-patches/db3pr08mb8962138b27178069736147e5a4...@db3pr08mb8962.eurprd08.prod.outlook.com/
 
-From f66323025c47ba09cee296a8a638cfe63d1bdad3 Mon Sep 17 00:00:00 2001
-Message-ID: 
<f66323025c47ba09cee296a8a638cfe63d1bdad3.1753106388.git....@gentoo.org>
-In-Reply-To: 
<e120f6cb794a4d104b37913c918aabe0ae6b2c64.1753106388.git....@gentoo.org>
-References: 
<e120f6cb794a4d104b37913c918aabe0ae6b2c64.1753106388.git....@gentoo.org>
+From 652f42c43949e64961721b7c78758030a8b9b1e0 Mon Sep 17 00:00:00 2001
+Message-ID: 
<652f42c43949e64961721b7c78758030a8b9b1e0.1753836047.git....@gentoo.org>
+In-Reply-To: 
<f91a62751e8198e6f02c21dffa35ac803b46d048.1753836047.git....@gentoo.org>
+References: 
<f91a62751e8198e6f02c21dffa35ac803b46d048.1753836047.git....@gentoo.org>
 From: Pengfei Li <[email protected]>
-Date: Mon, 21 Jul 2025 11:06:42 +0000
+Date: Tue, 29 Jul 2025 14:53:46 +0000
 Subject: [PATCH 2/2] vect: Add missing skip-vector check for peeling with
  versioning [PR121020]
 
@@ -45,20 +45,19 @@ gcc/testsuite/ChangeLog:
 
 * gcc.dg/vect/vect-early-break_138-pr121020.c: New test.
 ---
- .../vect/vect-early-break_138-pr121020.c      | 52 +++++++++++++++++++
+ .../vect/vect-early-break_138-pr121020.c      | 54 +++++++++++++++++++
  gcc/tree-vect-loop-manip.cc                   |  2 +-
  gcc/tree-vectorizer.h                         |  4 ++
- 3 files changed, 57 insertions(+), 1 deletion(-)
+ 3 files changed, 59 insertions(+), 1 deletion(-)
  create mode 100644 gcc/testsuite/gcc.dg/vect/vect-early-break_138-pr121020.c
 
 diff --git a/gcc/testsuite/gcc.dg/vect/vect-early-break_138-pr121020.c 
b/gcc/testsuite/gcc.dg/vect/vect-early-break_138-pr121020.c
 new file mode 100644
-index 000000000000..86661e445a83
+index 000000000000..8cb62bf5bc93
 --- /dev/null
 +++ b/gcc/testsuite/gcc.dg/vect/vect-early-break_138-pr121020.c
-@@ -0,0 +1,52 @@
+@@ -0,0 +1,54 @@
 +/* PR tree-optimization/121020 */
-+/* { dg-do run } */
 +/* { dg-options "-O3 --vect-cost-model=unlimited" } */
 +/* { dg-additional-options "-march=znver2" { target x86_64-*-* i?86-*-* } } */
 +/* { dg-require-effective-target mmap } */
@@ -68,6 +67,7 @@ index 000000000000..86661e445a83
 +#include <stdio.h>
 +#include <sys/mman.h>
 +#include <unistd.h>
++#include "tree-vect.h"
 +
 +__attribute__((noipa))
 +bool equal (uint64_t *restrict p, uint64_t *restrict q, int length)
@@ -81,6 +81,8 @@ index 000000000000..86661e445a83
 +
 +int main ()
 +{
++  check_vect ();
++
 +  long pgsz = sysconf (_SC_PAGESIZE);
 +  if (pgsz == -1) {
 +    fprintf (stderr, "sysconf failed\n");
@@ -123,10 +125,10 @@ index 2d01a4b0ed1c..7fcbc1ad2eb8 100644
  
    /* Epilog loop must be executed if the number of iterations for epilog
 diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h
-index 80f8853733de..69428f1747cb 100644
+index 203e5ad964a6..e19002794324 100644
 --- a/gcc/tree-vectorizer.h
 +++ b/gcc/tree-vectorizer.h
-@@ -1168,6 +1168,10 @@ public:
+@@ -1197,6 +1197,10 @@ public:
     || LOOP_REQUIRES_VERSIONING_FOR_NITERS (L)         \
     || LOOP_REQUIRES_VERSIONING_FOR_SIMD_IF_COND (L))
  

diff --git a/16.0.0/gentoo/README.history b/16.0.0/gentoo/README.history
index 89b8363..c0dd40f 100644
--- a/16.0.0/gentoo/README.history
+++ b/16.0.0/gentoo/README.history
@@ -1,3 +1,8 @@
+9      ????
+
+       U 
86_all_PR121190-vect-Fix-insufficient-alignment-requirement-for-spec.patch
+       U 
87_all_PR121020-vect-Add-missing-skip-vector-check-for-peeling-with-.patch
+
 8      30 July 2025
 
        + 
86_all_PR121190-vect-Fix-insufficient-alignment-requirement-for-spec.patch

Reply via email to