diff options
author | John David Anglin <dave.anglin@nrc-cnrc.gc.ca> | 2009-09-11 22:42:36 +0000 |
---|---|---|
committer | John David Anglin <danglin@gcc.gnu.org> | 2009-09-11 22:42:36 +0000 |
commit | 85ed9a3342005299627e853e450bd9a53d06c4fc (patch) | |
tree | 4d4ec4ec05eb03fee08d2862506be4e8852c5358 | |
parent | 9258b4c14f120aa74e3589461f3086caa5ca6e36 (diff) | |
download | gcc-85ed9a3342005299627e853e450bd9a53d06c4fc.zip gcc-85ed9a3342005299627e853e450bd9a53d06c4fc.tar.gz gcc-85ed9a3342005299627e853e450bd9a53d06c4fc.tar.bz2 |
predicates.md (symbolic_operand): Require a CONST symbolic operand to be a PLUS expression.
* config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
operand to be a PLUS expression.
* config/pa/pa.c (pa_secondary_reload): Likewise.
From-SVN: r151646
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/pa/pa.c | 7 | ||||
-rw-r--r-- | gcc/config/pa/predicates.md | 7 |
3 files changed, 14 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 82d9d36..002d19c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-09-11 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> + + * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic + operand to be a PLUS expression. + * config/pa/pa.c (pa_secondary_reload): Likewise. + 2009-09-11 Jakub Jelinek <jakub@redhat.com> * combine.c (propagate_for_debug_subst): Call wrap_constant on top. diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index 4355d0a..65a07d9 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -5793,9 +5793,10 @@ pa_secondary_reload (bool in_p, rtx x, enum reg_class rclass, break; case CONST: op = XEXP (x, 0); - is_symbolic = (((GET_CODE (XEXP (op, 0)) == SYMBOL_REF - && !SYMBOL_REF_TLS_MODEL (XEXP (op, 0))) - || GET_CODE (XEXP (op, 0)) == LABEL_REF) + is_symbolic = (GET_CODE (op) == PLUS + && ((GET_CODE (XEXP (op, 0)) == SYMBOL_REF + && !SYMBOL_REF_TLS_MODEL (XEXP (op, 0))) + || GET_CODE (XEXP (op, 0)) == LABEL_REF) && GET_CODE (XEXP (op, 1)) == CONST_INT); break; default: diff --git a/gcc/config/pa/predicates.md b/gcc/config/pa/predicates.md index 1fc921e..0f0a424 100644 --- a/gcc/config/pa/predicates.md +++ b/gcc/config/pa/predicates.md @@ -73,9 +73,10 @@ return 1; case CONST: op = XEXP (op, 0); - return (((GET_CODE (XEXP (op, 0)) == SYMBOL_REF - && !SYMBOL_REF_TLS_MODEL (XEXP (op, 0))) - || GET_CODE (XEXP (op, 0)) == LABEL_REF) + return (GET_CODE (op) == PLUS + && ((GET_CODE (XEXP (op, 0)) == SYMBOL_REF + && !SYMBOL_REF_TLS_MODEL (XEXP (op, 0))) + || GET_CODE (XEXP (op, 0)) == LABEL_REF) && GET_CODE (XEXP (op, 1)) == CONST_INT); default: return 0; |