diff options
author | Jan Hubicka <jh@suse.cz> | 2001-08-23 17:33:13 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2001-08-23 15:33:13 +0000 |
commit | ab75d1f125b1f3c49531f1be44f9298d3024c452 (patch) | |
tree | 683e4deef72e3ce3b0616d0f5f849e25fd198574 /gcc | |
parent | d0708dc1b9bcd94c95025bb532aeff64abba5b10 (diff) | |
download | gcc-ab75d1f125b1f3c49531f1be44f9298d3024c452.zip gcc-ab75d1f125b1f3c49531f1be44f9298d3024c452.tar.gz gcc-ab75d1f125b1f3c49531f1be44f9298d3024c452.tar.bz2 |
function.c (thread_prologue_and_epilogue_insns): Avoid fallthru flag on edge to exit.
* 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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 2 | ||||
-rw-r--r-- | gcc/flow.c | 7 | ||||
-rw-r--r-- | gcc/function.c | 1 |
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); @@ -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; } } |