aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2024-08-02 21:39:09 +0100
committerSam James <sam@gentoo.org>2024-08-02 21:39:09 +0100
commit831195db0373e4954ff47452375844caf997e34b (patch)
tree7b50d6e697f3d9703ce2427d91d244a63f06997b
parent15.0.0: drop 79_all_PR116120-revert-match-pattern.patch (diff)
downloadgcc-patches-831195db0373e4954ff47452375844caf997e34b.tar.gz
gcc-patches-831195db0373e4954ff47452375844caf997e34b.tar.bz2
gcc-patches-831195db0373e4954ff47452375844caf997e34b.zip
15.0.0: add 79_all_Revert-Make-may_trap_p_1-return-false-for-constant-p.patch
Bug: https://gcc.gnu.org/PR116200 Signed-off-by: Sam James <sam@gentoo.org>
-rw-r--r--15.0.0/gentoo/79_all_Revert-Make-may_trap_p_1-return-false-for-constant-p.patch98
1 files changed, 98 insertions, 0 deletions
diff --git a/15.0.0/gentoo/79_all_Revert-Make-may_trap_p_1-return-false-for-constant-p.patch b/15.0.0/gentoo/79_all_Revert-Make-may_trap_p_1-return-false-for-constant-p.patch
new file mode 100644
index 0000000..c65b792
--- /dev/null
+++ b/15.0.0/gentoo/79_all_Revert-Make-may_trap_p_1-return-false-for-constant-p.patch
@@ -0,0 +1,98 @@
+From 4def9ea5a1511d6adbbd15e59f2542326484454a Mon Sep 17 00:00:00 2001
+Message-ID: <4def9ea5a1511d6adbbd15e59f2542326484454a.1722631128.git.sam@gentoo.org>
+From: Sam James <sam@gentoo.org>
+Date: Fri, 2 Aug 2024 21:38:28 +0100
+Subject: [PATCH] Revert "Make may_trap_p_1 return false for constant pool
+ references [PR116145]"
+
+This reverts commit ba730fd10934e4ca004251aa3748bf9da4d35e62.
+
+Bug: https://gcc.gnu.org/PR116200
+---
+ gcc/rtlanal.cc | 14 ++----
+ .../aarch64/sve/acle/general/pr116145.c | 46 -------------------
+ 2 files changed, 4 insertions(+), 56 deletions(-)
+ delete mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr116145.c
+
+diff --git a/gcc/rtlanal.cc b/gcc/rtlanal.cc
+index 893a6afbbc53..4158a531bdd7 100644
+--- a/gcc/rtlanal.cc
++++ b/gcc/rtlanal.cc
+@@ -3152,16 +3152,10 @@ may_trap_p_1 (const_rtx x, unsigned flags)
+ && MEM_VOLATILE_P (x)
+ && XEXP (x, 0) == stack_pointer_rtx)
+ return true;
+- if (/* MEM_READONLY_P means that the memory is both statically
+- allocated and readonly, so MEM_NOTRAP_P should remain true
+- even if the memory reference is moved. This is certainly
+- true for the important case of force_const_mem.
+-
+- Otherwise, MEM_NOTRAP_P only relates to the actual position
+- of the memory reference; moving it out of context such as
+- when moving code when optimizing, might cause its address
+- to become invalid. */
+- (code_changed && !MEM_READONLY_P (x))
++ if (/* MEM_NOTRAP_P only relates to the actual position of the memory
++ reference; moving it out of context such as when moving code
++ when optimizing, might cause its address to become invalid. */
++ code_changed
+ || !MEM_NOTRAP_P (x))
+ {
+ poly_int64 size = MEM_SIZE_KNOWN_P (x) ? MEM_SIZE (x) : -1;
+diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr116145.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr116145.c
+deleted file mode 100644
+index a3d93d3e1c84..000000000000
+--- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr116145.c
++++ /dev/null
+@@ -1,46 +0,0 @@
+-// { dg-options "-O2" }
+-
+-#include <stdlib.h>
+-#include <arm_sve.h>
+-
+-#pragma GCC target "+sve2"
+-
+-typedef unsigned char uchar;
+-
+-const uchar *
+-search_line_fast (const uchar *s, const uchar *end)
+-{
+- size_t VL = svcntb();
+- svuint8_t arr1, arr2;
+- svbool_t pc, pg = svptrue_b8();
+-
+- // This should not be loaded inside the loop every time.
+- arr2 = svreinterpret_u8(svdup_u32(0x0a0d5c3f));
+-
+- for (; s+VL <= end; s += VL) {
+- arr1 = svld1_u8(pg, s);
+- pc = svmatch_u8(pg, arr1, arr2);
+-
+- if (svptest_any(pg, pc)) {
+- pc = svbrkb_z(pg, pc);
+- return s+svcntp_b8(pg, pc);
+- }
+- }
+-
+- // Handle remainder.
+- if (s < end) {
+- pg = svwhilelt_b8((size_t)s, (size_t)end);
+-
+- arr1 = svld1_u8(pg, s);
+- pc = svmatch_u8(pg, arr1, arr2);
+-
+- if (svptest_any(pg, pc)) {
+- pc = svbrkb_z(pg, pc);
+- return s+svcntp_b8(pg, pc);
+- }
+- }
+-
+- return end;
+-}
+-
+-// { dg-final { scan-assembler {:\n\tld1b\t[^\n]*\n\tmatch\t[^\n]*\n\tb\.} } }
+
+base-commit: 5ebfaf2d4994c124ce81aa0abd7eaa1529644749
+--
+2.45.2
+