summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/rtlanal.c10
2 files changed, 13 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index eada5df2d2d..e2410c3d32f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-04-01 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * rtlanal.c (find_reg_note): Manually
+ unswitch the loop.
+
2004-04-01 Mark Mitchell <mark@codesourcery.com>
* genemit.c (gen_split): Change prototype of generated code.
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index 3f3a4289d63..c66cc9adc8c 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -1911,10 +1911,16 @@ find_reg_note (rtx insn, enum reg_note kind, rtx datum)
/* Ignore anything that is not an INSN, JUMP_INSN or CALL_INSN. */
if (! INSN_P (insn))
return 0;
+ if (datum == 0)
+ {
+ for (link = REG_NOTES (insn); link; link = XEXP (link, 1))
+ if (REG_NOTE_KIND (link) == kind)
+ return link;
+ return 0;
+ }
for (link = REG_NOTES (insn); link; link = XEXP (link, 1))
- if (REG_NOTE_KIND (link) == kind
- && (datum == 0 || datum == XEXP (link, 0)))
+ if (REG_NOTE_KIND (link) == kind && datum == XEXP (link, 0))
return link;
return 0;
}