summaryrefslogtreecommitdiff
path: root/gcc/recog.c
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1992-05-27 10:21:59 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1992-05-27 10:21:59 +0000
commitbb552490bdb5a404659453dad0326006afe2a3d7 (patch)
treedda5260c22a97cb47b329a993f08548f3a119328 /gcc/recog.c
parent34ed2989b0d628e04816d57d38f08fd2c9d9fc84 (diff)
downloadgcc-bb552490bdb5a404659453dad0326006afe2a3d7.tar.gz
*** empty log message ***
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@1095 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/recog.c')
-rw-r--r--gcc/recog.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/gcc/recog.c b/gcc/recog.c
index 94c4eca74a6..b9c27106398 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -1726,6 +1726,8 @@ constrain_operands (insn_code_num, strict)
if (strict < 0
|| GENERAL_REGS == ALL_REGS
|| GET_CODE (op) != REG
+ || (reload_in_progress
+ && REGNO (op) >= FIRST_PSEUDO_REGISTER)
|| reg_fits_class_p (op, GENERAL_REGS, offset, mode))
win = 1;
break;
@@ -1752,7 +1754,10 @@ constrain_operands (insn_code_num, strict)
case 'm':
if (GET_CODE (op) == MEM
/* Before reload, accept what reload can turn into mem. */
- || (strict < 0 && CONSTANT_P (op)))
+ || (strict < 0 && CONSTANT_P (op))
+ /* During reload, accept a pseudo */
+ || (reload_in_progress && GET_CODE (op) == REG
+ && REGNO (op) >= FIRST_PSEUDO_REGISTER))
win = 1;
break;
@@ -1845,7 +1850,10 @@ constrain_operands (insn_code_num, strict)
|| (strict == 0 && offsettable_nonstrict_memref_p (op))
/* Before reload, accept what reload can handle. */
|| (strict < 0
- && (CONSTANT_P (op) || GET_CODE (op) == MEM)))
+ && (CONSTANT_P (op) || GET_CODE (op) == MEM))
+ /* During reload, accept a pseudo */
+ || (reload_in_progress && GET_CODE (op) == REG
+ && REGNO (op) >= FIRST_PSEUDO_REGISTER))
win = 1;
break;