re PR target/78862 (tile*: ICE with -fstack-protetor-strong)
authorWalter Lee <walt@tilera.com>
Fri, 3 Feb 2017 18:41:57 +0000 (18:41 +0000)
committerWalter Lee <walt@gcc.gnu.org>
Fri, 3 Feb 2017 18:41:57 +0000 (18:41 +0000)
PR target/78862
* config/tilegx/tilegx.md (tilegx_expand_prologue): Add blockage
after initial stackframe link reg save.
* config/tilepro/tilepro.md (tilepro_expand_prologue): Likewise.

From-SVN: r245159

gcc/ChangeLog
gcc/config/tilegx/tilegx.c
gcc/config/tilepro/tilepro.c

index a1db127..733a325 100644 (file)
@@ -1,3 +1,10 @@
+2017-02-03  Walter Lee  <walt@tilera.com>
+
+       PR target/78862
+       * config/tilegx/tilegx.md (tilegx_expand_prologue): Add blockage
+       after initial stackframe link reg save.
+       * config/tilepro/tilepro.md (tilepro_expand_prologue): Likewise.
+
 2017-02-03  Jakub Jelinek  <jakub@redhat.com>
 
        PR target/79354
index b04e708..d8ca14b 100644 (file)
@@ -3998,8 +3998,11 @@ tilegx_expand_prologue (void)
   /* Save lr first in its special location because code after this
      might use the link register as a scratch register.  */
   if (df_regs_ever_live_p (TILEGX_LINK_REGNUM) || crtl->calls_eh_return)
-    FRP (frame_emit_store (TILEGX_LINK_REGNUM, TILEGX_LINK_REGNUM,
-                          stack_pointer_rtx, stack_pointer_rtx, 0));
+    {
+      FRP (frame_emit_store (TILEGX_LINK_REGNUM, TILEGX_LINK_REGNUM,
+                            stack_pointer_rtx, stack_pointer_rtx, 0));
+      emit_insn (gen_blockage ());
+    }
 
   if (total_size == 0)
     {
index b16ad38..aa1bb1c 100644 (file)
@@ -3533,8 +3533,11 @@ tilepro_expand_prologue (void)
   /* Save lr first in its special location because code after this
      might use the link register as a scratch register.  */
   if (df_regs_ever_live_p (TILEPRO_LINK_REGNUM) || crtl->calls_eh_return)
-    FRP (frame_emit_store (TILEPRO_LINK_REGNUM, TILEPRO_LINK_REGNUM,
-                          stack_pointer_rtx, stack_pointer_rtx, 0));
+    {
+      FRP (frame_emit_store (TILEPRO_LINK_REGNUM, TILEPRO_LINK_REGNUM,
+                            stack_pointer_rtx, stack_pointer_rtx, 0));
+      emit_insn (gen_blockage ());
+    }
 
   if (total_size == 0)
     {