From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13674 invoked by alias); 14 Oct 2003 14:36:29 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 13664 invoked from network); 14 Oct 2003 14:36:27 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sources.redhat.com with SMTP; 14 Oct 2003 14:36:27 -0000 Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.11.6/8.11.6) with ESMTP id h9EEaRM32191 for ; Tue, 14 Oct 2003 10:36:27 -0400 Received: from pobox.corp.redhat.com (pobox.corp.redhat.com [172.16.52.156]) by int-mx1.corp.redhat.com (8.11.6/8.11.6) with ESMTP id h9EEaRr29148 for ; Tue, 14 Oct 2003 10:36:27 -0400 Received: from localhost.redhat.com (devserv.devel.redhat.com [172.16.58.1]) by pobox.corp.redhat.com (8.12.8/8.12.8) with ESMTP id h9EEaQDb027808 for ; Tue, 14 Oct 2003 10:36:26 -0400 Received: by localhost.redhat.com (Postfix, from userid 469) id 68A6F2C43F; Tue, 14 Oct 2003 10:47:41 -0400 (EDT) From: Elena Zannoni MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <16268.3213.203430.515589@localhost.redhat.com> Date: Tue, 14 Oct 2003 14:36:00 -0000 To: gdb-patches@sources.redhat.com Subject: Re: [RFA] sh-tdep.c: Fix little endian problem with doubles In-Reply-To: <20031014130623.GZ14344@cygbert.vinschen.de> References: <20031007164256.GO29063@cygbert.vinschen.de> <16263.10472.942634.557769@localhost.redhat.com> <20031011085429.GA1981@cygbert.vinschen.de> <16266.46150.968896.729579@localhost.redhat.com> <20031014130623.GZ14344@cygbert.vinschen.de> X-SW-Source: 2003-10/txt/msg00447.txt.bz2 Corinna Vinschen writes: > On Mon, Oct 13, 2003 at 10:18:46AM -0400, Elena Zannoni wrote: > > Corinna Vinschen writes: > > > Erm... sorry, I don't quite understand. An `else if' in conjuction > > > with what `if'? Actually, the double case is handled normally in > > > BE mode, it's only slightly different in LE mode in that the registers > > > are swapped. The above code just makes the swap so I really don't see > > > what the problem is. > > Corinna, whatever. I'll clean it up myself. I am tired of arguing. Please check it in. elena > > I mean: the function is structured so that there is pretty much a > > clause for each possible type. Just add another one. I don't care if > > there is a bit of code duplication. Something like that, or similar. > > > > else if (TYPE_CODE (type) == TYPE_CODE_FLT > > && flt_argreg <= FLOAT_ARGLAST_REGNUM > > && TYPE_LENGTH(type) == reg_size) > > { do old stuff} > > > > else if (TYPE_CODE (type) == TYPE_CODE_FLT > > && TYPE_LENGTH(type) == 2 * reg_size > > && flt_argreg <= FLOAT_ARGLAST_REGNUM) > > { > > if (TARGET_BYTE_ORDER == BFD_ENDIAN_LITTLE) > > {do something} > > else > > {do something else} > > } > > > > else if (blah) > > Hmm, but you see that this messes up the code more than it cleans it up, > don't you? The reg_size variable depends already on the decision, that > we know if the argument goes in a general or a floating point register. > So the outer if/else if's do have to be kept as they are, to be able to > evaluate the register size correctly, and only then the code can react > on the information that it's a regsize or 2*regsize argument. Except we > drop the reg_size variable again, since we know that registers are always > 4 byte anyway. > > > Actually, the test that (flt_argreg <= FLOAT_ARGLAST_REGNUM) may not > > be sufficient anymore, because you are going to be using 2 registers, > > and you could end up beyond FLOAT_ARGLAST_REGNUM. Or is it fine to > > have the argument using the last float register, and the stack? Hmm, > > No. See the code right before the loop. > > > is sh_next_flt_argreg taking care that doesn't happen? Seems so. > > Yes. Consider that doubles are always passed in even register pairs. > > Corinna > > -- > Corinna Vinschen > Cygwin Developer > Red Hat, Inc.