https://gcc.gnu.org/g:4318821562638a3d909942f561a42f7272ddfed4

commit r15-7273-g4318821562638a3d909942f561a42f7272ddfed4
Author: Yoshinori Sato <ys...@users.sourceforge.jp>
Date:   Wed Jan 29 08:07:15 2025 -0700

    [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.

Diff:
---
 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)"))
                 )
            )
        )

Reply via email to