Hi,

since r225260 the backend register elimination hooks also get invoked
after reload is completed e.g. from sched2. During register
elimination we call s390_init_frame_layout which is not supposed to be
invoked after reload.  We had an assertion here to make sure this does
not happen.  This got triggered and currently breaks bootstrap on
S/390.  With the attached patch s390_init_frame_layout just becomes a
NOP when invoked after reload is completed.

Committed to mainline.

Bye,

-Andreas-


gcc/ChangeLog:

2015-07-08  Andreas Krebbel  <kreb...@linux.vnet.ibm.com>

        * config/s390/s390.c (s390_init_frame_layout): Replace assertion
        with early exit.

diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 4ef8e42..5715d89 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -9351,7 +9351,10 @@ s390_init_frame_layout (void)
   HOST_WIDE_INT frame_size;
   int base_used;
 
-  gcc_assert (!reload_completed);
+  /* After LRA the frame layout is supposed to be read-only and should
+     not be re-computed.  */
+  if (reload_completed)
+    return;
 
   /* On S/390 machines, we may need to perform branch splitting, which
      will require both base and return address register.  We have no

Reply via email to