diff --git a/gcc/ChangeLog b/gcc/ChangeLog index feb6f070ae83..f728c2e59491 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2000-01-11 Clinton Popetz + + * flow.c (propagate_block): When a prologue/epilogue insn + is marked dead, unconditionally clear libcall_is_dead and + insn_is_dead, and only dump rtl if warnings aren't being + suppressed. + Tue Jan 11 16:26:47 MET 2000 Jan Hubicka * i386.c (ix86_attr_length_default): Handle TYPE_STR and TYPE_CLD. diff --git a/gcc/flow.c b/gcc/flow.c index ae8ec5a1cf23..10bcdcf1fb8f 100644 --- a/gcc/flow.c +++ b/gcc/flow.c @@ -3295,14 +3295,17 @@ propagate_block (old, first, last, significant, bnum, flags) /* We almost certainly don't want to delete prologue or epilogue instructions. Warn about probable compiler losage. */ - if ((flags & PROP_KILL_DEAD_CODE) - && insn_is_dead + if (insn_is_dead && reload_completed && (HAVE_epilogue || HAVE_prologue) && prologue_epilogue_contains (insn)) { - warning ("ICE: would have deleted prologue/epilogue insn"); - debug_rtx (insn); + if (flags & PROP_KILL_DEAD_CODE) + { + warning ("ICE: would have deleted prologue/epilogue insn"); + if (!inhibit_warnings) + debug_rtx (insn); + } libcall_is_dead = insn_is_dead = 0; }