aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1998-08-24 11:06:09 +0000
committerJeff Law <law@gcc.gnu.org>1998-08-24 05:06:09 -0600
commitef9e3c5bce9f4279387578cdefc75f766a257cf9 (patch)
tree09a0bf04f251dce8f195129fbc2ee72d885fbe01
parentffa0ec710157f9ba81bcfec1059c162c21f05d7d (diff)
downloadgcc-ef9e3c5bce9f4279387578cdefc75f766a257cf9.zip
gcc-ef9e3c5bce9f4279387578cdefc75f766a257cf9.tar.gz
gcc-ef9e3c5bce9f4279387578cdefc75f766a257cf9.tar.bz2
* loop.c (scan_loop): Honor AVOID_CC_MODE_COPIES.
From-SVN: r21935
-rw-r--r--gcc/ChangeLog2
-rw-r--r--gcc/loop.c10
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3e3371d..4327d04 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,7 @@
Mon Aug 24 10:25:46 1998 Jeffrey A Law (law@cygnus.com)
+ * loop.c (scan_loop): Honor AVOID_CC_MODE_COPIES.
+
* h8300.h (STRIP_NAME_ENCODING): Fix typo.
* sparc.md (TFmode splits): Use reg_overlap_mentioned_p to detect
diff --git a/gcc/loop.c b/gcc/loop.c
index 34613cb..dda3aca 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -781,6 +781,16 @@ scan_loop (loop_start, end, unroll_p)
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
may_not_optimize[i] = 1, n_times_set[i] = 1;
+
+#ifdef AVOID_CCMODE_COPIES
+ /* Don't try to move insns which set CC registers if we should not
+ create CCmode register copies. */
+ be avoiding
+ for (i = FIRST_PSEUDO_REGISTER; i < nregs - loop_mems_idx; i++)
+ if (GET_MODE_CLASS (GET_MODE (regno_reg_rtx[i])) == MODE_CC)
+ may_not_optimize[i] = 1;
+#endif
+
bcopy ((char *) n_times_set, (char *) n_times_used, nregs * sizeof (int));
if (loop_dump_stream)