aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ"orn Rennecke <amylaar@cygnus.co.uk>1999-02-25 11:16:17 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>1999-02-25 11:16:17 +0000
commitf38cbf0fd3367a7dc0df52250ec8f48acfd286cb (patch)
treeb7142fcf64245477de6a9288ec0bd85da437e5b2
parentdfa08768aa9e461d52b3c5f5e6840f2699be21ab (diff)
downloadgcc-f38cbf0fd3367a7dc0df52250ec8f48acfd286cb.zip
gcc-f38cbf0fd3367a7dc0df52250ec8f48acfd286cb.tar.gz
gcc-f38cbf0fd3367a7dc0df52250ec8f48acfd286cb.tar.bz2
rtl.h (insn_first_p): Don't declare.
* rtl.h (insn_first_p): Don't declare. * rtlanal.c (insn_first_p): Delete. * loop.c (loop_insn_first_p): Faster implementation. From-SVN: r25436
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/loop.c28
-rw-r--r--gcc/rtl.h1
-rw-r--r--gcc/rtlanal.c20
4 files changed, 27 insertions, 28 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 931b283..b1d72ee 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+Thu Feb 25 19:13:42 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * rtl.h (insn_first_p): Don't declare.
+ * rtlanal.c (insn_first_p): Delete.
+ * loop.c (loop_insn_first_p): Faster implementation.
+
Thu Feb 25 10:44:35 1999 Richard Earnshaw (rearnsha@arm.com)
* arm.h (TARGET_SWITCHES): Delete deprecated switches -m[236].
diff --git a/gcc/loop.c b/gcc/loop.c
index f658933..c5666f9 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -8106,18 +8106,32 @@ maybe_eliminate_biv (bl, loop_start, end, eliminate_p, threshold, insn_count)
}
/* INSN and REFERENCE are instructions in the same insn chain.
- Return non-zero if INSN is first.
- This is like insn_first_p, except that we use the luid information if
- available. */
+ Return non-zero if INSN is first. */
int
loop_insn_first_p (insn, reference)
rtx insn, reference;
{
- return ((INSN_UID (insn) < max_uid_for_loop
- && INSN_UID (reference) < max_uid_for_loop)
- ? INSN_LUID (insn) < INSN_LUID (reference)
- : insn_first_p (insn, reference));
+ rtx p, q;
+
+ for (p = insn, q = reference; ;)
+ {
+ /* Start with test for not first so that INSN == REFERENCE yields not
+ first. */
+ if (q == insn || ! p)
+ return 0;
+ if (p == reference || ! q)
+ return 1;
+
+ if (INSN_UID (p) < max_uid_for_loop
+ && INSN_UID (q) < max_uid_for_loop)
+ return INSN_LUID (p) < INSN_LUID (q);
+
+ if (INSN_UID (p) >= max_uid_for_loop)
+ p = NEXT_INSN (p);
+ if (INSN_UID (q) >= max_uid_for_loop)
+ q = NEXT_INSN (q);
+ }
}
/* We are trying to eliminate BIV in INSN using GIV. Return non-zero if
diff --git a/gcc/rtl.h b/gcc/rtl.h
index 2839c88..3d51c88 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -1036,7 +1036,6 @@ extern rtx replace_regs PROTO((rtx, rtx *, int, int));
extern int computed_jump_p PROTO((rtx));
typedef int (*rtx_function) PROTO((rtx *, void *));
extern int for_each_rtx PROTO((rtx *, rtx_function, void *));
-extern int insn_first_p PROTO((rtx, rtx));
extern rtx regno_use_in PROTO((int, rtx));
/* flow.c */
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index 1dabc36..d061273 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -2204,26 +2204,6 @@ for_each_rtx (x, f, data)
return 0;
}
-/* INSN and REFERENCE are instructions in the same insn chain.
- Return non-zero if INSN is first. */
-int
-insn_first_p (insn, reference)
- rtx insn, reference;
-{
- rtx p, q;
-
- for (p = insn, q = reference; ; p = NEXT_INSN (p), q = NEXT_INSN (q))
- {
- /* Start with test for not first so that INSN == REFERENCE yields not
- first. */
- if (q == insn || ! p)
- return 0;
- if (p == reference || ! q)
- return 1;
- }
-}
-
-
/* Searches X for any reference to REGNO, returning the rtx of the
reference found if any. Otherwise, returns NULL_RTX. */