aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/config/i386/i386.md2
-rw-r--r--gcc/flow.c7
-rw-r--r--gcc/function.c1
4 files changed, 18 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8f1cd83..9899b3f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 13c7d00..8929304 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -4818,7 +4818,7 @@
&& !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);
diff --git a/gcc/flow.c b/gcc/flow.c
index 5e3a6ae..1360c7e 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -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);
}
diff --git a/gcc/function.c b/gcc/function.c
index f934200..fa440e3 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -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;
}
}