diff options
author | Sergei Trofimovich <slyfox@gentoo.org> | 2019-09-20 22:49:00 +0100 |
---|---|---|
committer | Sergei Trofimovich <slyfox@gentoo.org> | 2019-09-20 22:49:00 +0100 |
commit | f762cf0401bbf5efc86031ba284338c0fb74023d (patch) | |
tree | b389e08b33a9feb0213f3e7bd2724dfcd98ebce9 /9.2.0/gentoo | |
parent | 8.3.0: backport 30_all_sparc-PIC-constant-PR91472.patch (diff) | |
download | gcc-patches-f762cf0401bbf5efc86031ba284338c0fb74023d.tar.gz gcc-patches-f762cf0401bbf5efc86031ba284338c0fb74023d.tar.bz2 gcc-patches-f762cf0401bbf5efc86031ba284338c0fb74023d.zip |
9.2.0: packport PR91269 (sparc subreg regression)
Bug: https://gcc.gnu.org/PR91269
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Diffstat (limited to '9.2.0/gentoo')
-rw-r--r-- | 9.2.0/gentoo/28_all_sparc-fpu-subregs-91269.patch | 105 | ||||
-rw-r--r-- | 9.2.0/gentoo/README.history | 1 |
2 files changed, 106 insertions, 0 deletions
diff --git a/9.2.0/gentoo/28_all_sparc-fpu-subregs-91269.patch b/9.2.0/gentoo/28_all_sparc-fpu-subregs-91269.patch new file mode 100644 index 0000000..e21d07d --- /dev/null +++ b/9.2.0/gentoo/28_all_sparc-fpu-subregs-91269.patch @@ -0,0 +1,105 @@ +https://gcc.gnu.org/PR91269 + +From bebaf06774baca584c7e9f8410d0e49606a11d60 Mon Sep 17 00:00:00 2001 +From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 20 Sep 2019 09:42:40 +0000 +Subject: [PATCH] PR target/91269 * config/sparc/sparc.h + (HARD_REGNO_CALLER_SAVE_MODE): Define. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@275994 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + gcc/config/sparc/sparc.h | 7 ++++ + gcc/testsuite/gcc.dg/pr91269.c | 70 ++++++++++++++++++++++++++++++++++ + +--- a/gcc/config/sparc/sparc.h ++++ b/gcc/config/sparc/sparc.h +@@ -711,6 +711,13 @@ along with GCC; see the file COPYING3. If not see + register window instruction in the prologue. */ + #define HARD_REGNO_RENAME_OK(FROM, TO) ((FROM) != 1) + ++/* Select a register mode required for caller save of hard regno REGNO. ++ Contrary to what is documented, the default is not the smallest suitable ++ mode but the largest suitable mode for the given (REGNO, NREGS) pair and ++ it quickly creates paradoxical subregs that can be problematic. */ ++#define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \ ++ ((MODE) == VOIDmode ? choose_hard_reg_mode (REGNO, NREGS, false) : (MODE)) ++ + /* Specify the registers used for certain standard purposes. + The values of these macros are register numbers. */ + +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/pr91269.c +@@ -0,0 +1,70 @@ ++/* PR target/91269 */ ++/* Testcase by Sergei Trofimovich <slyfox@inbox.ru> */ ++ ++/* { dg-do assemble } */ ++/* { dg-options "-O2 -Wno-int-conversion" } */ ++/* { dg-additional-options "-fcall-used-g6 -fPIE -mcpu=niagara4" { target sparc*-*-* } } */ ++ ++struct m; ++ ++enum { a = 2 }; ++int b[1]; ++int d[2715]; ++int e, f, h; ++enum { i = 2 } j; ++inline int c(int k) { ++ char *cp; ++ if (k >= 62 && k <= 247) ++ cp = b[k]; ++ if (cp) ++ return 65533; ++ return 2; ++} ++inline int g(int k) { ++ if (k < sizeof(d)) ++ return e; ++ return 0; ++} ++ ++int u(struct m*, char*, char*); ++ ++int l(struct m *k, char n, long o, int *p) { ++ int q, flags = j, r, s, lasttwo = *p; ++ char inptr, outptr; ++ while (inptr) { ++ if (__builtin_expect(h, 0)) ++ break; ++ unsigned ch = inptr; ++ if (lasttwo) { ++ long need = lasttwo >> 3; ++ if (__builtin_expect(need > n, 0)) ++ break; ++ } else if (s == i) { ++ long t = c(ch); ++ if (t != 65533) { ++ int jch = g(ch); ++ if (jch & 8) ++ continue; ++ } ++ } ++ if (ch <= 5) ++ ; ++ else { ++ long t = c(ch); ++ if (t != 65533) ++ ; ++ else { ++ switch (f >> 8) ++ case 79: ++ q = f == 20308 || f == 20350; ++ if (q) ++ if (j) ++ r = u(k, &inptr, &outptr); ++ s = *p; ++ if (r) ++ if (o && flags & a) ++ break; ++ } ++ } ++ } ++} +-- +2.23.0 + diff --git a/9.2.0/gentoo/README.history b/9.2.0/gentoo/README.history index c34d76c..37c8298 100644 --- a/9.2.0/gentoo/README.history +++ b/9.2.0/gentoo/README.history @@ -1,5 +1,6 @@ 2 TODO + 27_all_sparc-PIC-constant-PR91472.patch + + 28_all_sparc-fpu-subregs-91269.patch 1 12 Aug 2019 + 01_all_default-fortify-source.patch |