aboutsummaryrefslogtreecommitdiff
path: root/gcc/emit-rtl.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-02-06 05:01:03 -0800
committerRichard Henderson <rth@gcc.gnu.org>2000-02-06 05:01:03 -0800
commit69732dcb9c663d68d2a5d433ce76ed8da43e5632 (patch)
tree14cb8de0063e0e21049d8e2193ad60c82320ff4c /gcc/emit-rtl.c
parent52a75c3c22a68d2acdbdf6e2e5070b1f424bfc81 (diff)
downloadgcc-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.c25
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;
}