From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9932 invoked by alias); 28 Feb 2007 00:38:45 -0000 Received: (qmail 9919 invoked by uid 22791); 28 Feb 2007 00:38:44 -0000 X-Spam-Check-By: sourceware.org Received: from hiauly1.hia.nrc.ca (HELO hiauly1.hia.nrc.ca) (132.246.100.193) by sourceware.org (qpsmtpd/0.31) with ESMTP; Wed, 28 Feb 2007 00:38:37 +0000 Received: from hiauly1.hia.nrc.ca (hiauly1.hia.nrc.ca [127.0.0.1] (may be forged)) by hiauly1.hia.nrc.ca (8.13.7/8.13.7) with ESMTP id l1S0cVKp003160; Tue, 27 Feb 2007 19:38:31 -0500 (EST) Received: (from dave@localhost) by hiauly1.hia.nrc.ca (8.13.7/8.13.7/Submit) id l1S0cU5k003158; Tue, 27 Feb 2007 19:38:30 -0500 (EST) Message-Id: <200702280038.l1S0cU5k003158@hiauly1.hia.nrc.ca> Subject: Re: [committed] Fix bug target/30634 To: dave@hiauly1.hia.nrc.ca (John David Anglin) Date: Wed, 28 Feb 2007 10:53:00 -0000 From: "John David Anglin" Cc: gcc-patches@gcc.gnu.org In-Reply-To: from "John David Anglin" at Feb 10, 2007 03:22:58 pm X-Mailer: ELM [version 2.4 PL25] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2007-02/txt/msg02197.txt.bz2 > 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 * 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"