From f38cbf0fd3367a7dc0df52250ec8f48acfd286cb Mon Sep 17 00:00:00 2001 From: "J\"orn Rennecke" Date: Thu, 25 Feb 1999 11:16:17 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/loop.c | 28 +++++++++++++++++++++------- gcc/rtl.h | 1 - gcc/rtlanal.c | 20 -------------------- 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 + + * 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. */ -- 2.7.4