From 4318821562638a3d909942f561a42f7272ddfed4 Mon Sep 17 00:00:00 2001
From: Yoshinori Sato <ysato@users.sourceforge.jp>
Date: Wed, 29 Jan 2025 08:07:15 -0700
Subject: [PATCH] [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.
---
 gcc/config/rx/constraints.md | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gcc/config/rx/constraints.md b/gcc/config/rx/constraints.md
index 4fc242667ab4..4b81ae6aa75b 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)"))
 		 )
 	    )
        )
-- 
GitLab