[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Tinycc-devel] Call for testing
From: |
Thomas Preud'homme |
Subject: |
Re: [Tinycc-devel] Call for testing |
Date: |
Thu, 17 Jan 2013 14:24:49 +0100 |
User-agent: |
KMail/1.13.7 (Linux/3.2.0-4-amd64; KDE/4.8.4; x86_64; ; ) |
Le jeudi 17 janvier 2013 01:48:01, Michael Matz a écrit :
> Hi,
>
>
> Pointer to integer conversions (and back) are implementation defined, the
> only requirement being that if the integer type is (u)intptr_t that a
> pointer converted to that one and back to a pointer shall compare equal to
> the original pointer.
>
> So, depending on how the compiler implements this conversion (and
>
> documents this) one might get different results:
> > $ gcc -o long_long long_long.c && ./long_long
> > [SNIP gcc warnings]
> > -66 -66 -66 -66 -66 -66
>
> This is a correct result for ILP32 (i.e. 32bit code). GCC sign extends
> pointers when the pointer representation needs fewer bits than the target
> type.
>
> > $ clang -o long_long long_long.c && ./long_long
> > -66 -66 -66 -66 4294967230 4294967230
>
> And this is also a correct result for 32bit code, when the compiler
> defines pointer to integer conversion to be zero-extending when the target
> type has more bits than a pointer. IMO sign-extending is more useful, and
> as GCC set the precedent a long time ago I would declare clang to at least
> have an QoI issue with compatibility with GCC. In other words: tcc has no
> bug here.
Thanks a lot for your explaination Michael. There is also the p -=
0x700000000042; assignment which is compiler-specific for C11 (not sure for
C99) I think because nothing in the standard say there should be overflow. The
compiler can do crazy things with it, as explained in
http://lwn.net/Articles/511259/.
Ok so no bug on tcc here, good :)
>
>
> Ciao,
> Michael.
Best regards,
Thomas
signature.asc
Description: This is a digitally signed message part.
Re: [Tinycc-devel] Call for testing, Thomas Preud'homme, 2013/01/16
Re: [Tinycc-devel] Call for testing, Thomas Preud'homme, 2013/01/24
- Re: [Tinycc-devel] Call for testing, Feng Nauh, 2013/01/24
- Re: [Tinycc-devel] Call for testing, grischka, 2013/01/24
- Re: [Tinycc-devel] Call for testing, Feng Nauh, 2013/01/26
- Re: [Tinycc-devel] Call for testing, Thomas Preud'homme, 2013/01/30
- Re: [Tinycc-devel] Call for testing, Jerry Reed, 2013/01/30
Re: [Tinycc-devel] Call for testing, Didier Barvaux, 2013/01/24