combine.c (reg_nonzero_bits_for_combine): Apply mask transformation as applied to nonzero_sign_valid when...
* combine.c (reg_nonzero_bits_for_combine): Apply mask transformation as applied to nonzero_sign_valid when last_set_mode has less precision than mode. Co-Authored-By: Eric Botcazou <ebotcazou@adacore.com> From-SVN: r205550
This commit is contained in:
parent
483b0aa49b
commit
67aca9dfae
2 changed files with 15 additions and 1 deletions
|
@ -1,3 +1,10 @@
|
|||
2013-11-30 Paulo Matos <pmatos@broadcom.com>
|
||||
Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* combine.c (reg_nonzero_bits_for_combine): Apply mask transformation
|
||||
as applied to nonzero_sign_valid when last_set_mode has less precision
|
||||
than mode.
|
||||
|
||||
2013-11-30 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR sanitizer/59275
|
||||
|
|
|
@ -9472,7 +9472,13 @@ reg_nonzero_bits_for_combine (const_rtx x, enum machine_mode mode,
|
|||
(DF_LR_IN (ENTRY_BLOCK_PTR_FOR_FN (cfun)->next_bb),
|
||||
REGNO (x)))))
|
||||
{
|
||||
*nonzero &= rsp->last_set_nonzero_bits;
|
||||
unsigned HOST_WIDE_INT mask = rsp->last_set_nonzero_bits;
|
||||
|
||||
if (GET_MODE_PRECISION (rsp->last_set_mode) < GET_MODE_PRECISION (mode))
|
||||
/* We don't know anything about the upper bits. */
|
||||
mask |= GET_MODE_MASK (mode) ^ GET_MODE_MASK (rsp->last_set_mode);
|
||||
|
||||
*nonzero &= mask;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -9505,6 +9511,7 @@ reg_nonzero_bits_for_combine (const_rtx x, enum machine_mode mode,
|
|||
if (GET_MODE_PRECISION (GET_MODE (x)) < GET_MODE_PRECISION (mode))
|
||||
/* We don't know anything about the upper bits. */
|
||||
mask |= GET_MODE_MASK (mode) ^ GET_MODE_MASK (GET_MODE (x));
|
||||
|
||||
*nonzero &= mask;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue