aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2022-06-15 13:42:23 +0100
committerRichard Earnshaw <rearnsha@arm.com>2022-06-15 13:43:25 +0100
commitdc8071da0e89eab4935751f3b16745c95cbc0d30 (patch)
treef6cd7e65c8d35a40c7eaffc7a7afa166801b3d76 /gcc
parent57b2adae536a6399ed7d2c881b1bc0d4b88e936a (diff)
downloadgcc-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.cc6
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