aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrey Belevantsev <abel@ispras.ru>2010-08-19 14:03:39 +0400
committerAndrey Belevantsev <abel@gcc.gnu.org>2010-08-19 14:03:39 +0400
commit5e841c82c9daaacac3e73a20c2a32c75c2d1603d (patch)
tree0c5119003967ec2c376ca440652e2f63b362c091 /gcc
parent8ebbe10ff24935a773d06116217b000715bb4d49 (diff)
downloadgcc-5e841c82c9daaacac3e73a20c2a32c75c2d1603d.zip
gcc-5e841c82c9daaacac3e73a20c2a32c75c2d1603d.tar.gz
gcc-5e841c82c9daaacac3e73a20c2a32c75c2d1603d.tar.bz2
re PR rtl-optimization/44691 (ICE: RTL check: expected code 'reg', have 'plus' in rhs_regno, at rtl.h:1050)
PR rtl-optimization/44691 * sel-sched.c (count_occurrences_1): Also punt when SUBREG_REG is not a register. From-SVN: r163369
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/sel-sched.c3
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ff0e2c0..1b92353 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2010-08-19 Andrey Belevantsev <abel@ispras.ru>
+
+ PR rtl-optimization/44691
+ * sel-sched.c (count_occurrences_1): Also punt when SUBREG_REG
+ is not a register.
+
2010-08-19 Ian Bolton <ian.bolton@arm.com>
PR target/45070
diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c
index 3a86e22..534c55c 100644
--- a/gcc/sel-sched.c
+++ b/gcc/sel-sched.c
@@ -835,7 +835,8 @@ count_occurrences_1 (rtx *cur_rtx, void *arg)
if (GET_CODE (*cur_rtx) == SUBREG
&& REG_P (p->x)
- && REGNO (SUBREG_REG (*cur_rtx)) == REGNO (p->x))
+ && (!REG_P (SUBREG_REG (*cur_rtx))
+ || REGNO (SUBREG_REG (*cur_rtx)) == REGNO (p->x)))
{
/* ??? Do not support substituting regs inside subregs. In that case,
simplify_subreg will be called by validate_replace_rtx, and