diff options
author | Georg-Johann Lay <avr@gjlay.de> | 2011-09-05 12:20:03 +0000 |
---|---|---|
committer | Georg-Johann Lay <gjl@gcc.gnu.org> | 2011-09-05 12:20:03 +0000 |
commit | 1e3a7e8662804a55bd4d01c7d5fe626b982c013a (patch) | |
tree | 8e4f0fedf4621356b1673e0074d0bab1b27eebbf /gcc | |
parent | e1ab3876d2f2872741a554847a8ca503f58f430c (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/avr/avr.c | 11 |
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)) |