aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorYoshinori Sato <ysato@users.sourceforge.jp>2025-01-29 08:07:15 -0700
committerJeff Law <jlaw@ventanamicro.com>2025-01-29 08:07:15 -0700
commit4318821562638a3d909942f561a42f7272ddfed4 (patch)
tree97357e0cbaaac8895a6746010d8944a4c76fa111 /gcc
parent09d1cbee10b8c51aed48f047f30717f622d6f811 (diff)
downloadgcc-4318821562638a3d909942f561a42f7272ddfed4.zip
gcc-4318821562638a3d909942f561a42f7272ddfed4.tar.gz
gcc-4318821562638a3d909942f561a42f7272ddfed4.tar.bz2
[PATCH] RX: Restrict displacement ranges in "Q" constraint
When using the "Q" constraint in the inline assembler, the displacement value could exceed the range specified by the instruction. To avoid this issue, a displacement range check is added to the "Q" constraint. gcc/ * config/rx/constraints.md (Q): Also check that the address passes rx_is_restricted_memory-address.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/rx/constraints.md3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/config/rx/constraints.md b/gcc/config/rx/constraints.md
index 4fc2426..4b81ae6 100644
--- a/gcc/config/rx/constraints.md
+++ b/gcc/config/rx/constraints.md
@@ -80,7 +80,8 @@
(ior (match_code "reg" "0")
(and (match_code "plus" "0")
(and (match_code "reg,subreg" "00")
- (match_code "const_int" "01")
+ (and (match_code "const_int" "01")
+ (match_test "rx_is_restricted_memory_address (XEXP (op, 0), mode)"))
)
)
)