aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2014-09-19 18:42:26 +0200
committerSegher Boessenkool <segher@gcc.gnu.org>2014-09-19 18:42:26 +0200
commitf8fb3155820ca6cd39f2f7dbec796b399f705aa5 (patch)
tree34279d24ff4fd38531af3992c0fe6c7fd25209d0 /gcc
parent2b9c63a2d8368252eded6fbdbafb4786e2fdf412 (diff)
downloadgcc-f8fb3155820ca6cd39f2f7dbec796b399f705aa5.zip
gcc-f8fb3155820ca6cd39f2f7dbec796b399f705aa5.tar.gz
gcc-f8fb3155820ca6cd39f2f7dbec796b399f705aa5.tar.bz2
recog.c (scratch_operand): Do not simply allow all hard registers: only allow those that are allocatable.
2014-09-19 Segher Boessenkool <segher@kernel.crashing.org> * recog.c (scratch_operand): Do not simply allow all hard registers: only allow those that are allocatable. From-SVN: r215399
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/recog.c4
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 261eda3..22b068d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2014-09-19 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * recog.c (scratch_operand): Do not simply allow all hard registers:
+ only allow those that are allocatable.
+
2014-09-19 Felix Yang <felix.yang@huawei.com>
* cfgrtl.c ira.c ira-color.c ira-conflicts ira-lives.c: Update
diff --git a/gcc/recog.c b/gcc/recog.c
index b183809..5ee3816 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -1143,7 +1143,9 @@ scratch_operand (rtx op, enum machine_mode mode)
return (GET_CODE (op) == SCRATCH
|| (REG_P (op)
- && (lra_in_progress || REGNO (op) < FIRST_PSEUDO_REGISTER)));
+ && (lra_in_progress
+ || (REGNO (op) < FIRST_PSEUDO_REGISTER
+ && REGNO_REG_CLASS (REGNO (op)) != NO_REGS))));
}
/* Return 1 if OP is a valid immediate operand for mode MODE.