diff options
author | Richard Henderson <rth@cygnus.com> | 2000-02-06 05:01:03 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2000-02-06 05:01:03 -0800 |
commit | 69732dcb9c663d68d2a5d433ce76ed8da43e5632 (patch) | |
tree | 14cb8de0063e0e21049d8e2193ad60c82320ff4c /gcc/emit-rtl.c | |
parent | 52a75c3c22a68d2acdbdf6e2e5070b1f424bfc81 (diff) | |
download | gcc-69732dcb9c663d68d2a5d433ce76ed8da43e5632.zip gcc-69732dcb9c663d68d2a5d433ce76ed8da43e5632.tar.gz gcc-69732dcb9c663d68d2a5d433ce76ed8da43e5632.tar.bz2 |
flow.c (flow_delete_insn, [...]): Export.
* flow.c (flow_delete_insn, make_edge, remove_edge): Export.
* basic-block.h: Declare them.
* emit-rtl.h (active_insn_p): New.
(next_active_insn, prev_active_insn): Use it.
* rtl.h: Declare it.
* function.c (emit_return_into_block): New.
(thread_prologue_and_epilogue_insns): Insert return insns instead
of epilogues when possible.
* jump.c (jump_optimize_1): Remove code to insert a return insn
on the fallthru to the exit block.
From-SVN: r31826
Diffstat (limited to 'gcc/emit-rtl.c')
-rw-r--r-- | gcc/emit-rtl.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 7a40b82..26bfc44 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -2084,6 +2084,17 @@ prev_real_insn (insn) does not look inside SEQUENCEs. Until reload has completed, this is the same as next_real_insn. */ +int +active_insn_p (insn) + rtx insn; +{ + return (GET_CODE (insn) == CALL_INSN || GET_CODE (insn) == JUMP_INSN + || (GET_CODE (insn) == INSN + && (! reload_completed + || (GET_CODE (PATTERN (insn)) != USE + && GET_CODE (PATTERN (insn)) != CLOBBER)))); +} + rtx next_active_insn (insn) rtx insn; @@ -2091,12 +2102,7 @@ next_active_insn (insn) while (insn) { insn = NEXT_INSN (insn); - if (insn == 0 - || GET_CODE (insn) == CALL_INSN || GET_CODE (insn) == JUMP_INSN - || (GET_CODE (insn) == INSN - && (! reload_completed - || (GET_CODE (PATTERN (insn)) != USE - && GET_CODE (PATTERN (insn)) != CLOBBER)))) + if (insn == 0 || active_insn_p (insn)) break; } @@ -2114,12 +2120,7 @@ prev_active_insn (insn) while (insn) { insn = PREV_INSN (insn); - if (insn == 0 - || GET_CODE (insn) == CALL_INSN || GET_CODE (insn) == JUMP_INSN - || (GET_CODE (insn) == INSN - && (! reload_completed - || (GET_CODE (PATTERN (insn)) != USE - && GET_CODE (PATTERN (insn)) != CLOBBER)))) + if (insn == 0 || active_insn_p (insn)) break; } |