John David Anglin - Re: [committed] Fix bug target/30634 (original) (raw)

This is the mail archive of the gcc-patches@gcc.gnu.orgmailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Tested on hppa64-hp-hpux11.11 with no regressions.

Unfortunately, I somehow missed in testing that the 64-bit DFmode move pattern contained bugs and didn't actually support a zero CONST_DOUBLE as a source operand as intended. The enclosed change corrects this deficiency.

Tested on hppa64-hp-hpux11.11 and hppa-unknown-linux-gnu with no observed regressions. Committed to 4.1, 4.2 and trunk.

Dave

J. David Anglin dave.anglin@nrc-cnrc.gc.ca National Research Council of Canada (613) 990-0752 (FAX: 952-6602)

2007-02-27 John David Anglin dave.anglin@nrc-cnrc.gc.ca

* 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.

Index: config/pa/predicates.md

--- config/pa/predicates.md (revision 122374) +++ config/pa/predicates.md (working copy) @@ -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)); Index: config/pa/pa.md

--- config/pa/pa.md (revision 122374) +++ config/pa/pa.md (working copy) @@ -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"


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]