diff options
author | J"orn Rennecke <joern.rennecke@superh.com> | 2003-12-15 17:42:43 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 2003-12-15 17:42:43 +0000 |
commit | 69f38ab9fd8ac5c7f5b68c01673c4c6366fd343c (patch) | |
tree | a160396a81237e124ff088404cc470129c589b51 /gcc/loop.c | |
parent | a5ac3982bc53a972881bed634e3cc3dfa2141656 (diff) | |
download | gcc-69f38ab9fd8ac5c7f5b68c01673c4c6366fd343c.zip gcc-69f38ab9fd8ac5c7f5b68c01673c4c6366fd343c.tar.gz gcc-69f38ab9fd8ac5c7f5b68c01673c4c6366fd343c.tar.bz2 |
reload.c (reg_overlap_mentioned_for_reload_p): When looking at a PLUS in X...
* reload.c (reg_overlap_mentioned_for_reload_p):
When looking at a PLUS in X, avoid spuriously returning nonzero
when IN is a REG or another simple PLUS, or a MEM containing one.
* loop.c (loop_invariant_p): Amend comment about where new registers
might come from.
From-SVN: r74638
Diffstat (limited to 'gcc/loop.c')
-rw-r--r-- | gcc/loop.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -3298,8 +3298,14 @@ loop_invariant_p (const struct loop *loop, rtx x) return 0; /* Out-of-range regs can occur when we are called from unrolling. - These have always been created by the unroller and are set in - the loop, hence are never invariant. */ + These registers created by the unroller are set in the loop, + hence are never invariant. + Other out-of-range regs can be generated by load_mems; those that + are written to in the loop are not invariant, while those that are + not written to are invariant. It would be easy for load_mems + to set n_times_set correctly for these registers, however, there + is no easy way to distinguish them from registers created by the + unroller. */ if (REGNO (x) >= (unsigned) regs->num) return 0; |