This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] tile: Fix up corner cases with signed relocations
- From: "Joseph S. Myers" <joseph at codesourcery dot com>
- To: Rich Felker <dalias at libc dot org>
- Cc: Chris Metcalf <cmetcalf at tilera dot com>, Andreas Schwab <schwab at linux-m68k dot org>, <libc-alpha at sourceware dot org>
- Date: Mon, 8 Sep 2014 15:34:18 +0000
- Subject: Re: [PATCH] tile: Fix up corner cases with signed relocations
- Authentication-results: sourceware.org; auth=none
- References: <201409051854 dot s85IsfM0024659 at gx-1 dot internal dot tilera dot com> <8761h1hkog dot fsf at linux-m68k dot org> <540A1F34 dot 2020303 at tilera dot com> <871trphhkr dot fsf at linux-m68k dot org> <540B3349 dot 1000507 at tilera dot com> <Pine dot LNX dot 4 dot 64 dot 1409081518450 dot 6075 at digraph dot polyomino dot org dot uk> <20140908152707 dot GG23797 at brightrain dot aerifal dot cx>
On Mon, 8 Sep 2014, Rich Felker wrote:
> > In any case, the GNU C language defines signed shifts (as long as the
> > shift amount is >= 0 and < width of type), although it may still be useful
> > to avoid the cases that are outside what ISO C defines.
>
> I don't think this is true. For example, in many versions of GCC, this
> is (rightfully!) an infinite loop:
>
> int i;
> for (i=1; i>0; i<<=1);
That would be a bug (I fixed such a bug ten years ago, PR 7284); please
report it if present in trunk. Signed shifts are documented in
implement-c.texi; C90 makes some things implementation-defined even when
C99/C11 make them undefined.
--
Joseph S. Myers
joseph@codesourcery.com