OSDN Git Service

* function.c (thread_prologue_and_epilogue_insns): Avoid
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 23 Aug 2001 15:33:13 +0000 (15:33 +0000)
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 23 Aug 2001 15:33:13 +0000 (15:33 +0000)
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.

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

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

index 8f1cd83..9899b3f 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 13c7d00..8929304 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 5e3a6ae..1360c7e 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 f934200..fa440e3 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;
        }
     }