diff options
author | Jeff Law <law@gcc.gnu.org> | 1992-07-22 14:01:13 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1992-07-22 14:01:13 -0600 |
commit | 198586008bed3f282b57bc5ef40030f0534e293a (patch) | |
tree | e55a726e67f4c4f2b047fd887516731c8c7b3427 | |
parent | 0fb5ac6f94849fe7d5e4091a1cd3615f499d108b (diff) | |
download | gcc-198586008bed3f282b57bc5ef40030f0534e293a.zip gcc-198586008bed3f282b57bc5ef40030f0534e293a.tar.gz gcc-198586008bed3f282b57bc5ef40030f0534e293a.tar.bz2 |
(EXTRA_CONSTRAINT): Add new 'T' and 'U' constraints
which check for aligned accesses to memory and register pairs.
From-SVN: r1661
-rw-r--r-- | gcc/config/sparc/sparc.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h index c3c9614..b4f5f69 100644 --- a/gcc/config/sparc/sparc.h +++ b/gcc/config/sparc/sparc.h @@ -1090,8 +1090,12 @@ extern union tree_node *current_function_decl; && REG_OK_FOR_BASE_P (XEXP (OP, 0))) \ : (C) == 'S' \ ? (CONSTANT_P (OP) || memory_address_p (Pmode, OP)) \ + : (C) == 'T' \ + ? (mem_aligned_8 (OP)) \ + : (C) == 'U' \ + ? (register_ok_for_ldd (OP)) \ : 0) - + #else /* Nonzero if X is a hard reg that can be used as an index. */ @@ -1112,7 +1116,11 @@ extern union tree_node *current_function_decl; : ((C) == 'S' \ ? (CONSTANT_P (OP) \ || (GET_CODE (OP) == REG && reg_renumber[REGNO (OP)] > 0)\ - || strict_memory_address_p (Pmode, OP)) : 0))) + || strict_memory_address_p (Pmode, OP)) \ + : ((C) == 'T' ? \ + mem_aligned_8 (OP) && strict_memory_address_p (Pmode, OP) \ + : ((C) == 'U' ? \ + register_ok_for_ldd (OP) : 0))))) #endif /* GO_IF_LEGITIMATE_ADDRESS recognizes an RTL expression |