summaryrefslogtreecommitdiff
path: root/gcc/config/pa/predicates.md
diff options
context:
space:
mode:
authordanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>2013-02-18 15:21:32 +0000
committerdanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>2013-02-18 15:21:32 +0000
commit172258a4248d493377261eb1dfd0c19d5a50c382 (patch)
tree8ba0ef49d9742b4adcda26a5026f5f7d2948ba36 /gcc/config/pa/predicates.md
parentabad9af1943b046046b8b14d04908014e8ab52be (diff)
downloadgcc-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.md13
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;