[Rd] Optimization bug when byte compiling with gcc 5.2.0 on windows
luke-tierney at uiowa.edu
luke-tierney at uiowa.edu
Mon Sep 14 23:40:16 CEST 2015
On Mon, 14 Sep 2015, Jeroen Ooms wrote:
> On Mon, Sep 14, 2015 at 8:49 PM, Jeroen Ooms <jeroen.ooms at stat.ucla.edu> wrote:
>
>> I tested this hypothesis by replacing '__GNUC__ <= 4' with '__GNUC__
>> <= 5' and rebuilding R, but this introduces a whole lot of problems
>> that were not there before. In particular R crashes when using the
>> graphics device, which it did not without this fix.
>
> I found that the problem goes away when we use isnanl() instead of
> isnan(). This is very similar to the problem we have for R_pow() where
> we need to use powl() instead of pow() for recent versions mingw-w64
> (this still needs to be patched in r-devel).
>
> So the full solution is:
>
> #if (defined(_WIN32) || defined(_WIN64)) && defined(__GNUC__)
> # define R_sqrt(x) (isnanl(x) ? x : sqrt(x))
> #else
> # define R_sqrt sqrt
> #endif
That can't possibly be the right solution. We use ISNAN in lots of
places and long doubles in very few.
Best,
luke
>
> Below the relevant mingw-w64 sources:
>
> https://github.com/Alexpux/mingw-w64/blob/master/mingw-w64-crt/math/isnan.c
> https://github.com/Alexpux/mingw-w64/blob/master/mingw-w64-crt/math/isnanf.c
> https://github.com/Alexpux/mingw-w64/blob/master/mingw-w64-crt/math/isnanl.c
>
> I think mingw-w64 takes powl from glibc.
>
--
Luke Tierney
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa Phone: 319-335-3386
Department of Statistics and Fax: 319-335-3017
Actuarial Science
241 Schaeffer Hall email: luke-tierney at uiowa.edu
Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu
More information about the R-devel
mailing list