https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89775

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P2
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2019-03-20
                 CC|                            |jakub at gcc dot gnu.org
   Target Milestone|---                         |7.5
            Summary|S/390: Stackpointer         |[7/8/9 Regression] S/390:
                   |save/restore instructions   |Stackpointer save/restore
                   |optimized away              |instructions optimized away
     Ever confirmed|0                           |1

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Started with r203303.
Untested testcase:

--- gcc/testsuite/gcc.target/s390/pr89775-1.c   2019-01-14 16:30:42.457583504
-0500
+++ gcc/testsuite/gcc.target/s390/pr89775-1.c   2019-03-20 11:18:03.102516703
-0400
@@ -0,0 +1,17 @@
+/* PR target/89775 */
+/* { dg-do run } */
+/* { dg-options "-O0 -fomit-frame-pointer" } */
+/* { dg-additional-sources "pr89775-2.c" } */
+
+register void *sp __asm ("15");
+
+__attribute__((noipa)) int
+foo (const char *a, const char *b)
+{
+  while (1)
+    {
+      char c = *a++;
+      if (c != *b++) return 0;
+      if (c == '\0') return 1;
+    }
+}
--- gcc/testsuite/gcc.target/s390/pr89775-2.c   2019-01-14 16:30:42.457583504
-0500
+++ gcc/testsuite/gcc.target/s390/pr89775-2.c   2019-03-20 11:18:11.552516703
-0400
@@ -0,0 +1,25 @@
+/* PR target/89775 */
+/* { dg-do compile } */
+
+extern int foo (const char *, const char *);
+
+__attribute__((noipa)) void
+bar (const char *p)
+{
+  static const char *x;
+  if (!x)
+    x = p;
+  else if (p != x)
+    __builtin_abort ();
+}
+
+int
+main ()
+{
+  char a[8] = "abcdefg";
+  bar (a);
+  if (foo (a, a) != 1)
+    __builtin_abort ();
+  bar (a);
+  return 0;
+}

Reply via email to