This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: GCC 4.3.2 bug (was: Illegal subtraction in tmp-dive_1.s)
- From: Gabriel Dos Reis <gdr at integrable-solutions dot net>
- To: Torbjorn Granlund <tg at gmplib dot org>
- Cc: gcc at gcc dot gnu dot org, gmp-discuss at gmplib dot org
- Date: Fri, 17 Apr 2009 12:09:42 -0500
- Subject: Re: GCC 4.3.2 bug (was: Illegal subtraction in tmp-dive_1.s)
- References: <53182.10.0.66.17.1239935538.squirrel@interact.purplecow.org> <863ac7bs3z.fsf@shell.gmplib.org> <20090417110846.GA14457@prunille.vinc17.org> <86hc0na454.fsf@shell.gmplib.org> <20090417150532.GA15548@prunille.vinc17.org> <20090417161727.GD15548@prunille.vinc17.org> <86iql38cyn.fsf@shell.gmplib.org>
At least, let's get it archived on GCC mailing lists.
On Fri, Apr 17, 2009 at 11:25 AM, Torbjorn Granlund <tg@gmplib.org> wrote:
> Vincent Lefevre <vincent@vinc17.org> writes:
>
> FYI, here's a simple testcase:
>
> /* With GCC 4.3.2 and -O2 option: output value is 1 instead of 0.
> * If -fno-strict-aliasing is added, this bug disappears.
> */
>
> #include <stdio.h>
> #include <stdlib.h>
>
> int test (int n)
> {
> unsigned long *p, *q;
> int i;
>
> q = p = malloc (n * sizeof (unsigned long));
> if (p == NULL)
> return 2;
> for (i = 0; i < n - 1; i++)
> p[i] = 0;
> p[n - 1] = 1;
> while ((*(q++))-- == 0) ;
> return p[n - 1] == 1;
> }
>
> int main (void)
> {
> int r;
>
> r = test (17);
> printf ("%d\n", r);
> return r;
> }
>
> You may want to use it in configure to detect the bug there (as not
> all users run "make check"). Possibly add -fno-strict-aliasing if
> the bug is detected.
>
> Nice. I think that test should go onto the GCC testsuite.
>
> I suppose a problem is that the code wrt GMP need to be *executed*;
> configure feature tests should work also when cross-compiling, I think.
>
> --
> Torbjörn
> _______________________________________________
> gmp-discuss mailing list
> gmp-discuss@gmplib.org
> http://gmplib.org/mailman/listinfo/gmp-discuss
>