diff options
author | Richard Earnshaw <rearnsha@arm.com> | 2022-06-15 13:42:23 +0100 |
---|---|---|
committer | Richard Earnshaw <rearnsha@arm.com> | 2022-06-15 13:43:25 +0100 |
commit | dc8071da0e89eab4935751f3b16745c95cbc0d30 (patch) | |
tree | f6cd7e65c8d35a40c7eaffc7a7afa166801b3d76 /gcc | |
parent | 57b2adae536a6399ed7d2c881b1bc0d4b88e936a (diff) | |
download | gcc-dc8071da0e89eab4935751f3b16745c95cbc0d30.zip gcc-dc8071da0e89eab4935751f3b16745c95cbc0d30.tar.gz gcc-dc8071da0e89eab4935751f3b16745c95cbc0d30.tar.bz2 |
arm: fix thinko in arm_bfi_1_p() [PR105974]
I clearly wasn't thinking straight when I wrote the arm_bfi_1_p
function and used XUINT rather than UINTVAL when extracting CONST_INT
values. It seemed to work in testing, but was incorrect and failed
RTL checking.
Fixed thusly:
gcc/ChangeLog:
PR target/105974
* config/arm/arm.cc (arm_bfi_1_p): Use UINTVAL instead of XUINT.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/arm/arm.cc | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/config/arm/arm.cc b/gcc/config/arm/arm.cc index 2a76c7b..5aa48fc 100644 --- a/gcc/config/arm/arm.cc +++ b/gcc/config/arm/arm.cc @@ -10211,15 +10211,15 @@ arm_bfi_1_p (rtx op0, rtx op1, rtx *sub0, rtx *sub1) if (!CONST_INT_P (XEXP (op0, 1))) return false; - const1 = XUINT (XEXP (op0, 1), 0); + const1 = UINTVAL (XEXP (op0, 1)); if (!CONST_INT_P (XEXP (op1, 1)) - || ~XUINT (XEXP (op1, 1), 0) != const1) + || ~UINTVAL (XEXP (op1, 1)) != const1) return false; if (GET_CODE (XEXP (op0, 0)) == ASHIFT && CONST_INT_P (XEXP (XEXP (op0, 0), 1))) { - const2 = XUINT (XEXP (XEXP (op0, 0), 1), 0); + const2 = UINTVAL (XEXP (XEXP (op0, 0), 1)); *sub0 = XEXP (XEXP (op0, 0), 0); } else |