aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ext-dce.cc7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/ext-dce.cc b/gcc/ext-dce.cc
index 2869a38..6c961fe 100644
--- a/gcc/ext-dce.cc
+++ b/gcc/ext-dce.cc
@@ -632,10 +632,11 @@ ext_dce_process_uses (rtx_insn *insn, rtx obj, bitmap live_tmp)
else if (!CONSTANT_P (y))
break;
- /* We might have (ashift (const_int 1) (reg...)) */
- /* XXX share this logic with code below. */
+ /* We might have (ashift (const_int 1) (reg...))
+ By setting dst_mask we can continue iterating on the
+ the next operand and it will be considered fully live. */
if (binop_implies_op2_fully_live (GET_CODE (src)))
- break;
+ dst_mask = -1;
/* If this was anything but a binary operand, break the inner
loop. This is conservatively correct as it will cause the