From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18734 invoked by alias); 14 May 2013 14:31:16 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 18722 invoked by uid 89); 14 May 2013 14:31:16 -0000 X-Spam-SWARE-Status: No, score=-8.0 required=5.0 tests=AWL,BAYES_00,KHOP_THREADED,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.1 Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Tue, 14 May 2013 14:31:15 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r4EEVE7o000310 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 14 May 2013 10:31:14 -0400 Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id r4EEVCf4022197; Tue, 14 May 2013 10:31:13 -0400 Message-ID: <51924AB0.7070402@redhat.com> Date: Tue, 14 May 2013 14:31:00 -0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130311 Thunderbird/17.0.4 MIME-Version: 1.0 To: Tom Tromey CC: gdb-patches@sourceware.org Subject: Re: [RFC, v2] Fix PR symtab/15391 References: <87hai57jsc.fsf@fleche.redhat.com> In-Reply-To: <87hai57jsc.fsf@fleche.redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-SW-Source: 2013-05/txt/msg00469.txt.bz2 On 05/14/2013 02:50 PM, Tom Tromey wrote: > + if (TYPE_LENGTH (value_type (value)) < sizeof (LONGEST)) > + { > + LONGEST nbits = 8 * TYPE_LENGTH (value_type (value)); > + LONGEST m1 = -1; > + > + if (((byte_offset >> (nbits - 1)) & 1) != 0) > + byte_offset |= m1 << nbits; > + } I believe left-shifting a negative number is actually undefined behavior. It's more usual/idiomatic to do sign extension like: LONGEST nbits = 8 * TYPE_LENGTH (value_type (value)); int signbit = 1U << nbits; byte_offset = (byte_offset ^ signbit) - signbit; -- Pedro Alves