function.c (thread_prologue_and_epilogue_insns): Avoid fallthru flag on edge to exit.
authorJan Hubicka <jh@suse.cz>
Thu, 23 Aug 2001 15:33:13 +0000 (17:33 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Thu, 23 Aug 2001 15:33:13 +0000 (15:33 +0000)
* function.c (thread_prologue_and_epilogue_insns): Avoid
fallthru flag on edge to exit.

* i386.md (trunc?fsi splitter): Conditionionize for non-sse.

* flow.c (delete_noop_moves, propagate_block_delete_insn): Purge
dead edges.

From-SVN: r45135

gcc/ChangeLog
gcc/config/i386/i386.md
gcc/flow.c
gcc/function.c

index 8f1cd83aab3e03d384e3f3b34ebb94e70ebd747f..9899b3f994ea10e05bc051b8aa8bfd7708212268 100644 (file)
@@ -1,3 +1,13 @@
+Thu Aug 23 17:21:43 CEST 2001  Jan Hubicka  <jh@suse.cz>
+
+       * function.c (thread_prologue_and_epilogue_insns): Avoid
+       fallthru flag on edge to exit.
+
+       * i386.md (trunc?fsi splitter): Conditionionize for non-sse.
+
+       * flow.c (delete_noop_moves, propagate_block_delete_insn): Purge
+       dead edges.
+
 2001-08-23  Lars Brinkhoff  <lars@nocrew.org>
 
        * config/mcore/mcore.h (MACHINE_DEPENDENT_SIMPLIFY): Remove.
index 13c7d00f5c0e2c91f7f4758a540982a604af4925..892930474f767d078b4aa917d6507f11028c4a4f 100644 (file)
    && !reload_completed && !reload_in_progress
    && !SSE_FLOAT_MODE_P (GET_MODE (operands[1]))"
   "#"
-  ""
+  "&& 1"
   [(const_int 0)]
 {
   operands[2] = assign_386_stack_local (HImode, 1);
index 5e3a6ae1c62a8da663d624be0d5ca912ce2be21c..1360c7e9b2e44aacf295389466416104cfbca9bd 100644 (file)
@@ -4663,6 +4663,8 @@ delete_noop_moves (f)
              PUT_CODE (insn, NOTE);
              NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
              NOTE_SOURCE_FILE (insn) = 0;
+             if (insn == bb->end)
+               purge_dead_edges (bb);
            }
        }
     }
@@ -5250,7 +5252,10 @@ propagate_block_delete_insn (bb, insn)
     }
 
   if (bb->end == insn)
-    bb->end = PREV_INSN (insn);
+    {
+      bb->end = PREV_INSN (insn);
+      purge_dead_edges (bb);
+    }
   flow_delete_insn (insn);
 }
 
index f934200f9980990d3c2ad3b12be5b65a49e3ea59..fa440e362842ed33897b0df8b8d9bdbe7a40b4cc 100644 (file)
@@ -7336,6 +7336,7 @@ thread_prologue_and_epilogue_insns (f)
          emit_barrier_after (last->end);
          emit_return_into_block (last, epilogue_line_note);
          epilogue_end = last->end;
+         last->succ->flags &= ~EDGE_FALLTHRU;
          goto epilogue_done;
        }
     }