aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2000-08-21 09:18:05 +0000
committerRichard Earnshaw <rearnsha@gcc.gnu.org>2000-08-21 09:18:05 +0000
commit056b68414ebe6f82a052ae1aaf1ea5c4c6d2bcaf (patch)
tree69052589dd57c2361340b61497d40be53b2eea93 /gcc
parent46639003c86c36421c93da0da89469d551a30884 (diff)
downloadgcc-056b68414ebe6f82a052ae1aaf1ea5c4c6d2bcaf.zip
gcc-056b68414ebe6f82a052ae1aaf1ea5c4c6d2bcaf.tar.gz
gcc-056b68414ebe6f82a052ae1aaf1ea5c4c6d2bcaf.tar.bz2
flow.c (init_propagate_block_info): Handle SUBREG in a jump condition expression.
* flow.c (init_propagate_block_info): Handle SUBREG in a jump condition expression. From-SVN: r35835
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/flow.c10
2 files changed, 13 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9d1c66e..53d0e6c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2000-08-21 Richard Earnshaw <rearnsha@arm.com>
+
+ * flow.c (init_propagate_block_info): Handle SUBREG in a jump
+ condition expression.
+
2000-08-20 Richard Henderson <rth@cygnus.com>
* flow.c (merge_blocks_nomove): Don't seek back past the bb note.
diff --git a/gcc/flow.c b/gcc/flow.c
index a1ea1a8..e37512a 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -3727,9 +3727,15 @@ init_propagate_block_info (bb, live, local_set, flags)
if (bitmap_operation (diff, bb_true->global_live_at_start,
bb_false->global_live_at_start, BITMAP_XOR))
{
- if (GET_CODE (XEXP (cond_true, 0)) != REG)
+ rtx reg = XEXP (cond_true, 0);
+
+ if (GET_CODE (reg) == SUBREG)
+ reg = SUBREG_REG (reg);
+
+ if (GET_CODE (reg) != REG)
abort ();
- SET_REGNO_REG_SET (pbi->reg_cond_reg, REGNO (XEXP (cond_true, 0)));
+
+ SET_REGNO_REG_SET (pbi->reg_cond_reg, REGNO (reg));
/* For each such register, mark it conditionally dead. */
EXECUTE_IF_SET_IN_REG_SET