diff options
author | Renlin Li <renlin.li@arm.com> | 2014-11-19 15:15:51 +0000 |
---|---|---|
committer | Renlin Li <renlin@gcc.gnu.org> | 2014-11-19 15:15:51 +0000 |
commit | 9d6e10c70a5c5c2ae0a867f287623b1d83f2969a (patch) | |
tree | 7e28af5fb6d3e43de7aca4a46ff43b6e5cfaf21a /gcc/ira.c | |
parent | dd308ed81c37f3342ea6d15767d9360f365d9800 (diff) | |
download | gcc-9d6e10c70a5c5c2ae0a867f287623b1d83f2969a.zip gcc-9d6e10c70a5c5c2ae0a867f287623b1d83f2969a.tar.gz gcc-9d6e10c70a5c5c2ae0a867f287623b1d83f2969a.tar.bz2 |
re PR middle-end/63762 ([ARM]GCC generates UNPREDICTABLE STR with Rn = Rt when hard-float abi is used)
2014-11-19 Renlin Li <Renlin.Li@arm.com>
PR middle-end/63762
* ira.c (ira): Update preferred class.
* gcc.dg/pr63762.c: New test.
From-SVN: r217783
Diffstat (limited to 'gcc/ira.c')
-rw-r--r-- | gcc/ira.c | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -5263,7 +5263,18 @@ ira (FILE *f) ira_allocno_iterator ai; FOR_EACH_ALLOCNO (a, ai) - ALLOCNO_REGNO (a) = REGNO (ALLOCNO_EMIT_DATA (a)->reg); + { + int old_regno = ALLOCNO_REGNO (a); + int new_regno = REGNO (ALLOCNO_EMIT_DATA (a)->reg); + + ALLOCNO_REGNO (a) = new_regno; + + if (old_regno != new_regno) + setup_reg_classes (new_regno, reg_preferred_class (old_regno), + reg_alternate_class (old_regno), + reg_allocno_class (old_regno)); + } + } else { |