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 a1db12741e6916b421485e0d61385fee12da1533..733a32519af10ee146f061cb544085498931a021 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 b04e708677226177e71de0db2b22163274f14b3d..d8ca14bb2ab0225289e4067f35e131a6fbfc4e7f 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 b16ad388b86762a825c2cdbbf84f3bbc220d2422..aa1bb1c537153c5959a7526bc38869ea3d448879 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)
     {