aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGeorg-Johann Lay <avr@gjlay.de>2011-09-05 12:20:03 +0000
committerGeorg-Johann Lay <gjl@gcc.gnu.org>2011-09-05 12:20:03 +0000
commit1e3a7e8662804a55bd4d01c7d5fe626b982c013a (patch)
tree8e4f0fedf4621356b1673e0074d0bab1b27eebbf /gcc
parente1ab3876d2f2872741a554847a8ca503f58f430c (diff)
downloadgcc-1e3a7e8662804a55bd4d01c7d5fe626b982c013a.zip
gcc-1e3a7e8662804a55bd4d01c7d5fe626b982c013a.tar.gz
gcc-1e3a7e8662804a55bd4d01c7d5fe626b982c013a.tar.bz2
re PR target/50289 ([avr]: call-prologues saving/restoring global register variables)
PR target/50289 * config/avr/avr.c (sequent_regs_live): Don't recognize sequences that contain global register variable. From-SVN: r178528
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/avr/avr.c11
2 files changed, 17 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0f92802..1534d47 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2011-09-05 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/50289
+ * config/avr/avr.c (sequent_regs_live): Don't recognize sequences
+ that contain global register variable.
+
2011-09-05 Richard Guenther <rguenther@suse.de>
* tree-cfg.c (replace_uses_by): Use fold_stmt, not fold_stmt_inplace.
diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c
index d267ef0..f158cdd 100644
--- a/gcc/config/avr/avr.c
+++ b/gcc/config/avr/avr.c
@@ -522,6 +522,17 @@ sequent_regs_live (void)
for (reg = 0; reg < 18; ++reg)
{
+ if (fixed_regs[reg])
+ {
+ /* Don't recognize sequences that contain global register
+ variables. */
+
+ if (live_seq != 0)
+ return 0;
+ else
+ continue;
+ }
+
if (!call_used_regs[reg])
{
if (df_regs_ever_live_p (reg))