summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwehle <wehle@138bc75d-0d04-0410-961f-82ee72b054a4>2000-08-19 16:34:44 +0000
committerwehle <wehle@138bc75d-0d04-0410-961f-82ee72b054a4>2000-08-19 16:34:44 +0000
commita8081abb437b8376c9869c342ffcd3c486098a9d (patch)
tree2b760b9e70242dd44efe6a433b13fa0b8c4ba519
parentf0d643fd31cc71c23d610bb29af9ea5a5b041cc2 (diff)
downloadppe42-gcc-a8081abb437b8376c9869c342ffcd3c486098a9d.tar.gz
ppe42-gcc-a8081abb437b8376c9869c342ffcd3c486098a9d.zip
* loop.c (scan_loop): Use CONST_CALL_P instead of
checking for REG_LIBCALL / REG_RETVAL. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35808 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/loop.c11
2 files changed, 7 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index eb714b1190f..dc35df43cee 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Sat Aug 19 12:37:08 EDT 2000 John Wehle (john@feith.com)
+
+ * loop.c (scan_loop): Use CONST_CALL_P instead of
+ checking for REG_LIBCALL / REG_RETVAL.
+
Sat Aug 19 09:18:47 2000 Jeffrey A Law (law@cygnus.com)
* reload1.c (reload_as_needed): Accept dumpfile argument,
diff --git a/gcc/loop.c b/gcc/loop.c
index ddaf017588a..fe9e0d4ebab 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -599,7 +599,6 @@ scan_loop (loop, flags)
rtx loop_entry_jump = 0;
/* Number of insns in the loop. */
int insn_count;
- int in_libcall = 0;
int tem;
rtx temp, update_start, update_end;
/* The SET from an insn, if it is the only SET in the insn. */
@@ -753,11 +752,6 @@ scan_loop (loop, flags)
p != NULL_RTX;
p = next_insn_in_loop (loop, p))
{
- if (INSN_P (p) && find_reg_note (p, REG_LIBCALL, NULL_RTX))
- in_libcall = 1;
- else if (INSN_P (p) && find_reg_note (p, REG_RETVAL, NULL_RTX))
- in_libcall = 0;
-
if (GET_CODE (p) == INSN
&& (set = single_set (p))
&& GET_CODE (SET_DEST (set)) == REG
@@ -1046,9 +1040,8 @@ scan_loop (loop, flags)
}
/* Past a call insn, we get to insns which might not be executed
because the call might exit. This matters for insns that trap.
- Call insns inside a REG_LIBCALL/REG_RETVAL block always return,
- so they don't count. */
- else if (GET_CODE (p) == CALL_INSN && ! in_libcall)
+ Constant and pure call insns always return, so they don't count. */
+ else if (GET_CODE (p) == CALL_INSN && ! CONST_CALL_P (p))
call_passed = 1;
/* Past a label or a jump, we get to insns for which we
can't count on whether or how many times they will be
OpenPOWER on IntegriCloud