From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17458 invoked by alias); 15 Jun 2003 16:50:51 -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 17429 invoked from network); 15 Jun 2003 16:50:50 -0000 Received: from unknown (HELO talisman.cambridge.redhat.com) (213.86.99.237) by sources.redhat.com with SMTP; 15 Jun 2003 16:50:50 -0000 Received: (from rsandifo@localhost) by talisman.cambridge.redhat.com (8.11.6/8.11.6) id h5FGmCC11761; Sun, 15 Jun 2003 17:48:12 +0100 X-Authentication-Warning: talisman.cambridge.redhat.com: rsandifo set sender to rsandifo@redhat.com using -f To: gdb-patches@sources.redhat.com Subject: Re: [mips sim]: Fix check for negative dmult operands References: From: Richard Sandiford Date: Sun, 15 Jun 2003 16:50:00 -0000 In-Reply-To: Message-ID: User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.1 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-SW-Source: 2003-06/txt/msg00516.txt.bz2 Ping? Richard Sandiford writes: > do_dmultx tests for negative operands with: > > if (op1 < 0) > { > op1 = - op1; > ++sign; > } > if (op2 < 0) > { > op2 = - op2; > ++sign; > } > > but op1 and op2 are unsigned... > > The patch below fixes some gcc.c-torture/execute/950426-2.c failures > on mipsisa64-elf. Please install if OK. > > Richard > > > * mips.igen (do_dmultx): Fix check for negative operands. > > Index: sim/mips/mips.igen > =================================================================== > RCS file: /cvs/src/src/sim/mips/mips.igen,v > retrieving revision 1.53 > diff -u -d -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.53 mips.igen > --- sim/mips/mips.igen 14 Jan 2003 19:01:41 -0000 1.53 > +++ sim/mips/mips.igen 7 Jun 2003 10:14:00 -0000 > @@ -1347,12 +1350,12 @@ 000000,5.RS,5.RT,0000000000,011011:SPECI > sign = 0; > if (signed_p) > { > - if (op1 < 0) > + if ((signed64) op1 < 0) > { > op1 = - op1; > ++sign; > } > - if (op2 < 0) > + if ((signed64) op2 < 0) > { > op2 = - op2; > ++sign;