diff options
author | J"orn Rennecke <amylaar@cygnus.co.uk> | 1999-02-19 14:49:59 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 1999-02-19 14:49:59 +0000 |
commit | 1cb1fe669961c25d26c1ea92c1896f51ceeef898 (patch) | |
tree | fb2ec476871399a96596787b20690a0bf5ec2d0e /gcc | |
parent | cea0198ed908c7377b58611eff287588808b96f8 (diff) | |
download | gcc-1cb1fe669961c25d26c1ea92c1896f51ceeef898.zip gcc-1cb1fe669961c25d26c1ea92c1896f51ceeef898.tar.gz gcc-1cb1fe669961c25d26c1ea92c1896f51ceeef898.tar.bz2 |
rtlanal.c (insn_first_p): Fix return value for insn == reference.
* rtlanal.c (insn_first_p): Fix return value for insn == reference.
* loop.c (strength_reduce, check_final_value, check_dbra_loop):
Use loop_insn_first_p.
From-SVN: r25321
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/loop.c | 31 | ||||
-rw-r--r-- | gcc/rtlanal.c | 6 |
3 files changed, 21 insertions, 23 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 55d621b..a1946ef 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +Fri Feb 19 22:47:01 1999 J"orn Rennecke <amylaar@cygnus.co.uk> + + * rtlanal.c (insn_first_p): Fix return value for insn == reference. + + * loop.c (strength_reduce, check_final_value, check_dbra_loop): + Use loop_insn_first_p. + Fri Feb 19 15:49:26 1999 Michael Meissner <meissner@cygnus.com> David Edelsohn <edelsohn@mhpcc.edu> @@ -3784,13 +3784,7 @@ strength_reduce (scan_start, end, loop_top, insn_count, && (! condjump_p (insn) || (JUMP_LABEL (insn) != 0 && JUMP_LABEL (insn) != scan_start - && (INSN_UID (JUMP_LABEL (insn)) >= max_uid_for_loop - || (INSN_UID (p) < max_uid_for_loop - ? (INSN_LUID (JUMP_LABEL (insn)) - <= INSN_LUID (p)) - : (INSN_UID (insn) >= max_uid_for_loop - || (INSN_LUID (JUMP_LABEL (insn)) - < INSN_LUID (insn)))))))) + && ! loop_insn_first_p (p, JUMP_LABEL (insn))))) { maybe_multiple = 1; break; @@ -3856,7 +3850,7 @@ strength_reduce (scan_start, end, loop_top, insn_count, if (not_every_iteration && GET_CODE (p) == CODE_LABEL && no_labels_between_p (p, loop_end) - && insn_first_p (p, loop_cont)) + && loop_insn_first_p (p, loop_cont)) not_every_iteration = 0; } @@ -4031,7 +4025,7 @@ strength_reduce (scan_start, end, loop_top, insn_count, in-between when biv_toal_increment returns nonzero both times but we test it here in case some day some real cfg analysis gets used to set always_computable. */ - && ((insn_first_p (bl2->biv->insn, bl->biv->insn) + && ((loop_insn_first_p (bl2->biv->insn, bl->biv->insn) && no_labels_between_p (bl2->biv->insn, bl->biv->insn)) || (! reg_used_between_p (bl->biv->src_reg, bl->biv->insn, bl2->biv->insn) @@ -4090,7 +4084,7 @@ strength_reduce (scan_start, end, loop_top, insn_count, && ! reg_used_between_p (giv, bl->init_insn, loop_start)) delete_insn (bl->init_insn); } - else if (! insn_first_p (bl2->biv->insn, bl->biv->insn)) + else if (! loop_insn_first_p (bl2->biv->insn, bl->biv->insn)) { rtx p = PREV_INSN (giv_insn); while (INSN_UID (p) >= max_uid_for_loop) @@ -4453,7 +4447,7 @@ strength_reduce (scan_start, end, loop_top, insn_count, if (not_every_iteration && GET_CODE (p) == CODE_LABEL && no_labels_between_p (p, loop_end) - && insn_first_p (p, loop_cont)) + && loop_insn_first_p (p, loop_cont)) not_every_iteration = 0; } @@ -5664,13 +5658,10 @@ check_final_value (v, loop_start, loop_end, n_iterations) if (GET_CODE (p) == JUMP_INSN && JUMP_LABEL (p) && LABEL_NAME (JUMP_LABEL (p)) - && ((INSN_UID (JUMP_LABEL (p)) >= max_uid_for_loop) - || (INSN_UID (v->insn) >= max_uid_for_loop) - || (INSN_UID (last_giv_use) >= max_uid_for_loop) - || (INSN_LUID (JUMP_LABEL (p)) < INSN_LUID (v->insn) - && INSN_LUID (JUMP_LABEL (p)) > INSN_LUID (loop_start)) - || (INSN_LUID (JUMP_LABEL (p)) > INSN_LUID (last_giv_use) - && INSN_LUID (JUMP_LABEL (p)) < INSN_LUID (loop_end)))) + && ((loop_insn_first_p (JUMP_LABEL (p), v->insn) + && loop_insn_first_p (loop_start, JUMP_LABEL (p))) + || (loop_insn_first_p (last_giv_use, JUMP_LABEL (p)) + && loop_insn_first_p (JUMP_LABEL (p), loop_end)))) { v->replaceable = 0; v->not_replaceable = 1; @@ -7749,9 +7740,7 @@ check_dbra_loop (loop_end, insn_count, loop_start, loop_info) if (v->giv_type == DEST_REG && reg_mentioned_p (v->dest_reg, XEXP (loop_store_mems, 0)) - && (INSN_UID (v->insn) >= max_uid_for_loop - || (INSN_LUID (v->insn) - > INSN_LUID (first_loop_store_insn)))) + && loop_insn_first_p (first_loop_store_insn, v->insn)) reversible_mem_store = 0; } } diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index ffaad23..41744d7 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -2212,10 +2212,12 @@ insn_first_p (insn, reference) for (p = insn, q = reference; ; p = NEXT_INSN (p), q = NEXT_INSN (q)) { - if (p == reference || ! q) - return 1; + /* 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; } } |