aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1992-08-17 07:36:39 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1992-08-17 07:36:39 -0400
commita73f9fc940405d5f82345a726a5e8a6e071dc418 (patch)
tree91c0fcb2faad104061ba17418b678cca0b5eec62
parentb8eb43a245a976d1e97f5afecdb0428867c68271 (diff)
downloadgcc-a73f9fc940405d5f82345a726a5e8a6e071dc418.zip
gcc-a73f9fc940405d5f82345a726a5e8a6e071dc418.tar.gz
gcc-a73f9fc940405d5f82345a726a5e8a6e071dc418.tar.bz2
(jump_optimize): Allow SUBREG in many places where REG is allowed.
From-SVN: r1872
-rw-r--r--gcc/jump.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/jump.c b/gcc/jump.c
index f99fbe8..f126700f 100644
--- a/gcc/jump.c
+++ b/gcc/jump.c
@@ -699,6 +699,7 @@ jump_optimize (f, cross_jump, noop_moves, after_regscan)
&& GET_CODE (PATTERN (temp2)) == SET
&& rtx_equal_p (SET_DEST (PATTERN (temp2)), temp1)
&& (GET_CODE (SET_SRC (PATTERN (temp2))) == REG
+ || GET_CODE (SET_SRC (PATTERN (temp2))) == SUBREG
|| CONSTANT_P (SET_SRC (PATTERN (temp2))))
&& (REG_NOTES (temp2) == 0
|| ((REG_NOTE_KIND (REG_NOTES (temp2)) == REG_EQUAL
@@ -830,6 +831,7 @@ jump_optimize (f, cross_jump, noop_moves, after_regscan)
#endif
&& GET_MODE_CLASS (GET_MODE (temp1)) == MODE_INT
&& (GET_CODE (temp2 = SET_SRC (PATTERN (temp))) == REG
+ || GET_CODE (temp2) == SUBREG
|| GET_CODE (temp2) == CONST_INT)
/* Allow either form, but prefer the former if both apply. */
&& (((temp3 = reg_set_last (temp1, insn)) != 0
@@ -838,6 +840,7 @@ jump_optimize (f, cross_jump, noop_moves, after_regscan)
&& REGNO (temp3) >= FIRST_PSEUDO_REGISTER
#endif
)
+ || GET_CODE (temp3) == SUBREG
|| GET_CODE (temp3) == CONST_INT))
/* Make the latter case look like x = x; if (...) x = 0; */
|| ((temp3 = temp1, BRANCH_COST >= 2)