mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-23 02:44:18 +08:00
[target/116104] Fix more rtl-checking failures in ext-dce
More enable-rtl-checking fixes for ext-dce. Very similar to the one recently posted, this time covering more of the shift ops. I checked all instances of CONSTANT_P guarding [U]INTVAL and fixed all that looked wrong. I also created a dummy assembler/linker so that I could run the GCC testsuite on gcn and verified that wasn't tripping any rtl-checking bugs in ext-dce anymore. Obviously this has also gone through x86 bootstrap and regression tested. Pushing to the trunk. pr target/116104 gcc/ * ext-dce.cc (carry_backpropagate): Change more guards of [U]INTVAL to test CONST_INT_P rather than CONSTANT_P, fixing rtl-checking failures.
This commit is contained in:
parent
dcdefe47e1
commit
69a9ee05c6
@ -501,7 +501,7 @@ carry_backpropagate (unsigned HOST_WIDE_INT mask, enum rtx_code code, rtx x)
|
||||
/* We propagate for the shifted operand, but not the shift
|
||||
count. The count is handled specially. */
|
||||
case LSHIFTRT:
|
||||
if (CONSTANT_P (XEXP (x, 1))
|
||||
if (CONST_INT_P (XEXP (x, 1))
|
||||
&& known_lt (UINTVAL (XEXP (x, 1)), GET_MODE_BITSIZE (mode)))
|
||||
return mmask & (mask << INTVAL (XEXP (x, 1)));
|
||||
return mmask;
|
||||
@ -509,7 +509,7 @@ carry_backpropagate (unsigned HOST_WIDE_INT mask, enum rtx_code code, rtx x)
|
||||
/* We propagate for the shifted operand, but not the shift
|
||||
count. The count is handled specially. */
|
||||
case ASHIFTRT:
|
||||
if (CONSTANT_P (XEXP (x, 1))
|
||||
if (CONST_INT_P (XEXP (x, 1))
|
||||
&& known_lt (UINTVAL (XEXP (x, 1)), GET_MODE_BITSIZE (mode)))
|
||||
{
|
||||
HOST_WIDE_INT sign = 0;
|
||||
@ -526,7 +526,7 @@ carry_backpropagate (unsigned HOST_WIDE_INT mask, enum rtx_code code, rtx x)
|
||||
return 0;
|
||||
if (XEXP (x, 1) == const1_rtx)
|
||||
return mmask;
|
||||
if (CONSTANT_P (XEXP (x, 1)))
|
||||
if (CONST_INT_P (XEXP (x, 1)))
|
||||
{
|
||||
if (pow2p_hwi (INTVAL (XEXP (x, 1))))
|
||||
return mmask & (mask << (GET_MODE_BITSIZE (mode).to_constant ()
|
||||
@ -549,7 +549,7 @@ carry_backpropagate (unsigned HOST_WIDE_INT mask, enum rtx_code code, rtx x)
|
||||
count. The count is handled specially. */
|
||||
case SS_ASHIFT:
|
||||
case US_ASHIFT:
|
||||
if (CONSTANT_P (XEXP (x, 1))
|
||||
if (CONST_INT_P (XEXP (x, 1))
|
||||
&& UINTVAL (XEXP (x, 1)) < GET_MODE_BITSIZE (mode).to_constant ())
|
||||
{
|
||||
return ((mmask & ~((unsigned HOST_WIDE_INT)mmask
|
||||
|
Loading…
Reference in New Issue
Block a user