At Tue, 30 Oct 2007 14:02:14 +0100 (CET),
Richard Guenther wrote:
>
>
> This also occurs on linux with GCC 4.3 and the problem is likely that
> the overflow check in
>
> void
> FUNCTION (my, initialize) (TYPE (gsl_vector) * v)
> {
> size_t i;
> ATOMIC k = 0, kk;
>
> /* Must be sorted initially */
>
> for (i = 0; i < v->size; i++)
> {
> kk = k;
> k++;
> if (k < kk) /* prevent overflow */
> k = kk;
> FUNCTION (gsl_vector, set) (v, i, k);
> }
> }
>
> is broken for signed integral values. As the ISO C standard defines
> signed integer overflow as invoking undefined behavior, the post-the-fact
> check is optimized away by compilers. That this triggers only the signed
> char case is probably due to the sizes not causing overflow on other
> singed integral tests.
Thanks for the information, I'll fix that in the next release.
--
Brian Gough
GNU Scientific Library -
http://www.gnu.org/software/gsl/
_______________________________________________
Bug-gsl mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-gsl