diff options
author | danglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-02-18 15:21:32 +0000 |
---|---|---|
committer | danglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-02-18 15:21:32 +0000 |
commit | 172258a4248d493377261eb1dfd0c19d5a50c382 (patch) | |
tree | 8ba0ef49d9742b4adcda26a5026f5f7d2948ba36 /gcc/config/pa/predicates.md | |
parent | abad9af1943b046046b8b14d04908014e8ab52be (diff) | |
download | gcc-172258a4248d493377261eb1dfd0c19d5a50c382.tar.gz |
PR target/56214
* config/pa/predicates.md (base14_operand): Except for BLKmode, QImode
and HImode, require all displacements to be an integer multiple of the
mode size.
* config/pa/pa.c (pa_legitimate_address_p): For REG+BASE addresses,
only allow QImode and HImode when reload is in progress and strict is
true. Likewise for symbolic addresses. Use base14_operand to check
displacements in REG+BASE addresses.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@196122 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/pa/predicates.md')
-rw-r--r-- | gcc/config/pa/predicates.md | 13 |
1 files changed, 2 insertions, 11 deletions
diff --git a/gcc/config/pa/predicates.md b/gcc/config/pa/predicates.md index 8823706026b..ba105f2e8cc 100644 --- a/gcc/config/pa/predicates.md +++ b/gcc/config/pa/predicates.md @@ -272,22 +272,13 @@ assumed in the instruction encoding. */ switch (mode) { + case BLKmode: case QImode: case HImode: return true; - case SImode: - case SFmode: - case SCmode: - return (INTVAL (op) % 4) == 0; - - case DImode: - case DFmode: - case DCmode: - return (INTVAL (op) % 8) == 0; - default: - break; + return (INTVAL (op) % GET_MODE_SIZE (mode)) == 0; } return false; |