From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28389 invoked by alias); 14 Mar 2003 19:53:53 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 28354 invoked from network); 14 Mar 2003 19:53:52 -0000 Received: from unknown (HELO mail-out1.apple.com) (17.254.0.52) by sources.redhat.com with SMTP; 14 Mar 2003 19:53:52 -0000 Received: from mailgate2.apple.com (A17-129-100-225.apple.com [17.129.100.225]) by mail-out1.apple.com (8.12.8/8.12.8) with ESMTP id h2EJrqOr024999 for ; Fri, 14 Mar 2003 11:53:52 -0800 (PST) Received: from scv2.apple.com (scv2.apple.com) by mailgate2.apple.com (Content Technologies SMTPRS 4.2.1) with ESMTP id ; Fri, 14 Mar 2003 11:53:31 -0800 Received: from apple.com (johada5.apple.com [17.201.20.185]) by scv2.apple.com (8.11.3/8.11.3) with ESMTP id h2EJrU029340; Fri, 14 Mar 2003 11:53:30 -0800 (PST) Date: Fri, 14 Mar 2003 20:10:00 -0000 Subject: Re: store double-cvtd-to-int to memory Content-Type: text/plain; charset=US-ASCII; format=flowed Mime-Version: 1.0 (Apple Message framework v551) Cc: Dale Johannesen , David Edelsohn , Richard Henderson , gcc@gcc.gnu.org To: Geoff Keating From: Dale Johannesen In-Reply-To: Message-Id: <86F38AF0-5656-11D7-B9FE-000393D76DAA@apple.com> Content-Transfer-Encoding: 7bit X-SW-Source: 2003-03/txt/msg00958.txt.bz2 On Friday, March 14, 2003, at 11:37 AM, Geoff Keating wrote: > David Edelsohn writes: > >> Can't you just mark the unnecessary temp with "X" constraint for >> the pattern that does not need it? > > That would be a good idea, but doesn't solve Dale's problem... Right. The problem is not that the pattern isn't recognized, it's that combine won't consider it in the first place. (I did run this by Geoff before asking the list, btw, which makes me think it's not a case of me missing something trivial.) Basically I'm trying to get combine to merge these 2 patterns: (insn 11 10 12 0 0x0 (set (mem:SI (reg:SI 5 r5) [0 S4 A32]) (reg:SI 120)) 309 {*movsi_internal1} (insn_list 10 (nil)) (insn 10 5 11 0 0x0 (parallel [ (set (reg:SI 120) (fix:SI (reg:DF 33 f1))) (clobber (reg:DI 121)) (clobber (mem/f:DI (plus:SI (reg/f:SI 30 r30) (const_int 32 [0x20])) [0 S8 A64])) It considers generating (insn 10 5 11 0 0x0 (parallel [ (set (mem:SI (reg:SI 5 r5) (fix:SI (reg:DF 33 f1))) (clobber (reg:DI 121)) (clobber (mem/f:DI (plus:SI (reg/f:SI 30 r30) (const_int 32 [0x20])) [0 S8 A64])) and rejects that because it thinks the mem's might conflict, as I said before. It also considers generating (set (mem:SI (reg:SI 5 r5) (fix:SI (reg:DF 33 f1))) which isn't adequate because I *do* need the floating point scratch reg. It does not consider generating (insn 10 5 11 0 0x0 (parallel [ (set (mem:SI (reg:SI 5 r5) (fix:SI (reg:DF 33 f1))) (clobber (reg:DI 121))] which is what I want. (Not that it has anything to do with this problem, but why is the scratch reg DI not DF?)