summaryrefslogtreecommitdiff
path: root/gcc/regmove.c
diff options
context:
space:
mode:
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>1998-05-11 18:11:22 +0000
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>1998-05-11 18:11:22 +0000
commit41b0d1e735534e07db6b1498208af6776788e186 (patch)
treedd3fdadca628c1bf3fe5e14f12741cfc87ad4b06 /gcc/regmove.c
parentc856a3d8d8aa40105b000e345f96662007d67ff0 (diff)
downloadgcc-41b0d1e735534e07db6b1498208af6776788e186.tar.gz
Add missing comments pointed out by Andreas Schwab.
* regmove.c (fixup_match_2, find_matches, regmove_profitable): Add explanatory comments. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@19677 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/regmove.c')
-rw-r--r--gcc/regmove.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/gcc/regmove.c b/gcc/regmove.c
index 81a987035f1..75798b043e9 100644
--- a/gcc/regmove.c
+++ b/gcc/regmove.c
@@ -570,8 +570,24 @@ reg_is_remote_constant_p (reg, insn, first)
return 0;
}
+/* INSN is adding a CONST_INT to a REG. We search backwards looking for
+ another add immediate instruction with the same source and dest registers,
+ and if we find one, we change INSN to an increment, and return 1. If
+ no changes are made, we return 0.
+
+ This changes
+ (set (reg100) (plus reg1 offset1))
+ ...
+ (set (reg100) (plus reg1 offset2))
+ to
+ (set (reg100) (plus reg1 offset1))
+ ...
+ (set (reg100) (plus reg100 offset2-offset1)) */
+
+/* ??? What does this comment mean? */
/* cse disrupts preincrement / postdecrement squences when it finds a
hard register as ultimate source, like the frame pointer. */
+
int
fixup_match_2 (insn, dst, src, offset, regmove_dump_file)
rtx insn, dst, src, offset;
@@ -1143,6 +1159,11 @@ regmove_optimize (f, nregs, regmove_dump_file)
#endif /* REGISTER_CONSTRAINTS */
}
+/* Returns the INSN_CODE for INSN if its pattern has matching constraints for
+ any operand. Returns -1 if INSN can't be recognized, or if the alternative
+ can't be determined.
+
+ Initialize the info in MATCHP based on the constraints. */
static int
find_matches (insn, matchp)
@@ -1711,7 +1732,10 @@ stable_but_for_p (x, src, dst)
}
}
-/* Test if regmove seems profitable for this target. */
+/* Test if regmove seems profitable for this target. Regmove is useful only
+ if some common patterns are two address, i.e. require matching constraints,
+ so we check that condition here. */
+
int
regmove_profitable_p ()
{