summaryrefslogtreecommitdiff
path: root/gcc48-rh1469697-8.patch
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2024-08-01 14:23:42 +0000
committerCoprDistGit <infra@openeuler.org>2024-08-01 14:23:42 +0000
commit82711f6567ef069eebb942e382e2c3fa61fbf538 (patch)
tree22200b7326b32ca672ffb6e4ce6d19a09dc476e5 /gcc48-rh1469697-8.patch
parent5d624aa0d36abe76a344f0593eae5cf36d083b15 (diff)
automatic import of compat-libgfortran-48openeuler24.03_LTSopeneuler23.09
Diffstat (limited to 'gcc48-rh1469697-8.patch')
-rw-r--r--gcc48-rh1469697-8.patch88
1 files changed, 88 insertions, 0 deletions
diff --git a/gcc48-rh1469697-8.patch b/gcc48-rh1469697-8.patch
new file mode 100644
index 0000000..1c3cdd6
--- /dev/null
+++ b/gcc48-rh1469697-8.patch
@@ -0,0 +1,88 @@
+commit 93ed472702aad6d9b8998592775a0ab4120b6242
+Author: law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Wed Sep 20 21:59:50 2017 +0000
+
+ * explow.c (compute_stack_clash_protection_loop_data): Use
+ CONST_INT_P instead of explicit test. Verify object is a
+ CONST_INT_P before looking at INTVAL.
+ (anti_adjust_stack_and_probe_stack_clash): Use CONST_INT_P
+ instead of explicit test.
+
+ * gcc.target/i386/stack-check-11.c: Update test and regexp
+ so that it works for both i?86 and x86_64.
+
+ git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@253034 138bc75d-0d04-0410-961f-82ee72b054a4
+
+diff --git a/gcc/explow.c b/gcc/explow.c
+index 2526e8513b7..d118e0d7782 100644
+--- a/gcc/explow.c
++++ b/gcc/explow.c
+@@ -1778,11 +1778,11 @@ compute_stack_clash_protection_loop_data (rtx *rounded_size, rtx *last_addr,
+ if (*rounded_size == CONST0_RTX (Pmode))
+ fprintf (dump_file,
+ "Stack clash skipped dynamic allocation and probing loop.\n");
+- else if (GET_CODE (*rounded_size) == CONST_INT
++ else if (CONST_INT_P (*rounded_size)
+ && INTVAL (*rounded_size) <= 4 * *probe_interval)
+ fprintf (dump_file,
+ "Stack clash dynamic allocation and probing inline.\n");
+- else if (GET_CODE (*rounded_size) == CONST_INT)
++ else if (CONST_INT_P (*rounded_size))
+ fprintf (dump_file,
+ "Stack clash dynamic allocation and probing in "
+ "rotated loop.\n");
+@@ -1880,7 +1880,8 @@ anti_adjust_stack_and_probe_stack_clash (rtx size)
+
+ if (rounded_size != CONST0_RTX (Pmode))
+ {
+- if (INTVAL (rounded_size) <= 4 * probe_interval)
++ if (CONST_INT_P (rounded_size)
++ && INTVAL (rounded_size) <= 4 * probe_interval)
+ {
+ for (HOST_WIDE_INT i = 0;
+ i < INTVAL (rounded_size);
+@@ -1900,7 +1901,7 @@ anti_adjust_stack_and_probe_stack_clash (rtx size)
+ else
+ {
+ rtx loop_lab, end_loop;
+- bool rotate_loop = GET_CODE (rounded_size) == CONST_INT;
++ bool rotate_loop = CONST_INT_P (rounded_size);
+ emit_stack_clash_protection_probe_loop_start (&loop_lab, &end_loop,
+ last_addr, rotate_loop);
+
+@@ -1938,7 +1939,7 @@ anti_adjust_stack_and_probe_stack_clash (rtx size)
+ might hold live data. So probe at *sp if we know that
+ an allocation was made, otherwise probe into the red zone
+ which is obviously undesirable. */
+- if (GET_CODE (size) == CONST_INT)
++ if (CONST_INT_P (size))
+ {
+ emit_stack_probe (stack_pointer_rtx);
+ emit_insn (gen_blockage ());
+diff --git a/gcc/testsuite/gcc.target/i386/stack-check-11.c b/gcc/testsuite/gcc.target/i386/stack-check-11.c
+index 183103f01e5..fe5b2c2b844 100644
+--- a/gcc/testsuite/gcc.target/i386/stack-check-11.c
++++ b/gcc/testsuite/gcc.target/i386/stack-check-11.c
+@@ -2,15 +2,17 @@
+ /* { dg-options "-O2 -fstack-clash-protection" } */
+ /* { dg-require-effective-target supports_stack_clash_protection } */
+
+-extern void arf (unsigned long int *, unsigned long int *);
++#include <stdint.h>
++
++extern void arf (uint64_t *, uint64_t *);
+ void
+ frob ()
+ {
+- unsigned long int num[859];
+- unsigned long int den[859];
++ uint64_t num[859];
++ uint64_t den[859];
+ arf (den, num);
+ }
+
+-/* { dg-final { scan-assembler-times "subq" 4 } } */
+-/* { dg-final { scan-assembler-times "orq" 3 } } */
++/* { dg-final { scan-assembler-times "sub\[ql\]" 4 } } */
++/* { dg-final { scan-assembler-times "or\[ql\]" 3 } } */
+