OSDN Git Service

* config/sh/sh.c (sh_expand_prologue): Let the second toggle_sz be
authoraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 13 Jan 2001 07:21:35 +0000 (07:21 +0000)
committeraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 13 Jan 2001 07:21:35 +0000 (07:21 +0000)
optimized away.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38976 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/sh/sh.c

index cb9b835..e4ea11f 100644 (file)
@@ -1,5 +1,8 @@
 2001-01-13  Alexandre Oliva  <aoliva@redhat.com>
 
+       * config/sh/sh.c (sh_expand_prologue): Let the second toggle_sz be
+       optimized away.
+
        * config/sh/sh.c (mova_p): Fix test for mova_const.
 
 2001-01-13  Neil Booth  <neil@daikokuya.demon.co.uk>
index 1526d78..d0142e6 100644 (file)
@@ -3969,7 +3969,16 @@ sh_expand_prologue ()
     emit_insn (gen_GOTaddr2picreg ());
 
   if (target_flags != save_flags)
-    emit_insn (gen_toggle_sz ());
+    {
+      rtx insn = emit_insn (gen_toggle_sz ());
+
+      /* If we're lucky, a mode switch in the function body will
+        overwrite fpscr, turning this insn dead.  Tell flow this
+        insn is ok to delete.  */
+      REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_MAYBE_DEAD,
+                                           const0_rtx,
+                                           REG_NOTES (insn));
+    }
 
   target_flags = save_flags;