aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/pa
diff options
context:
space:
mode:
authorJohn David Anglin <dave.anglin@nrc-cnrc.gc.ca>2007-02-28 00:11:14 +0000
committerJohn David Anglin <danglin@gcc.gnu.org>2007-02-28 00:11:14 +0000
commite214de0a0ad583e7d04c9b97a2f17f42598e78e5 (patch)
treeab4740ff809d364494b0758dbaeafdba4bf091c4 /gcc/config/pa
parent8ab9333261065ccc8898f515571f0276321e005d (diff)
downloadgcc-e214de0a0ad583e7d04c9b97a2f17f42598e78e5.zip
gcc-e214de0a0ad583e7d04c9b97a2f17f42598e78e5.tar.gz
gcc-e214de0a0ad583e7d04c9b97a2f17f42598e78e5.tar.bz2
predicates.md (move_src_operand): Allow zero for mode.
* pa/predicates.md (move_src_operand): Allow zero for mode. * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode move pattern. From-SVN: r122388
Diffstat (limited to 'gcc/config/pa')
-rw-r--r--gcc/config/pa/pa.md2
-rw-r--r--gcc/config/pa/predicates.md5
2 files changed, 5 insertions, 2 deletions
diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md
index 720bf15..54335c3 100644
--- a/gcc/config/pa/pa.md
+++ b/gcc/config/pa/pa.md
@@ -4343,7 +4343,7 @@
[(set (match_operand:DF 0 "move_dest_operand"
"=!*r,*r,*r,*r,*r,Q,f,f,T")
(match_operand:DF 1 "move_src_operand"
- "!*r,J,N,K,RQ,*rM,fM,RT,f"))]
+ "!*r,J,N,K,RQ,*rG,fG,RT,f"))]
"(register_operand (operands[0], DFmode)
|| reg_or_0_operand (operands[1], DFmode))
&& !TARGET_SOFT_FLOAT && TARGET_64BIT"
diff --git a/gcc/config/pa/predicates.md b/gcc/config/pa/predicates.md
index 685a494..ff9ebac 100644
--- a/gcc/config/pa/predicates.md
+++ b/gcc/config/pa/predicates.md
@@ -207,11 +207,14 @@
;; instruction.
(define_predicate "move_src_operand"
- (match_code "subreg,reg,const_int,mem")
+ (match_code "subreg,reg,const_int,const_double,mem")
{
if (register_operand (op, mode))
return 1;
+ if (op == CONST0_RTX (mode))
+ return 1;
+
if (GET_CODE (op) == CONST_INT)
return cint_ok_for_move (INTVAL (op));