[R-pkg-devel] R, BLAS, and FCLEN

Göran Broström gor@n@bro@trom @end|ng |rom umu@@e
Sun Sep 1 11:34:49 CEST 2019



On 2019-08-31 21:26, Duncan Murdoch wrote:
> On 31/08/2019 12:47 p.m., Göran Broström wrote:
>> I'm having difficulties updating my package eha: When I run standard
>> checks 'at home' everything is fine, but 'CRAN-submissions' reports
>> (among other things):
>>
>> geomsup.f:324:9: warning: type of ‘dgemv’ does not match original
>> declaration [-Wlto-type-mismatch]
>>     324 |      &     one, score, ione)
>>         |         ^
>> /home/tmp/R-d-gcc-LTO/include/R_ext/BLAS.h:107:1: note: type mismatch in
>> parameter 12
>>     107 | F77_NAME(dgemv)(const char *trans, const int *m, const int *n,
>>         | ^
>>
>> This is odd since the LAPACK subroutine dgemv takes only 11 parameters.
>> However, in include/R_ext/BLAS.h we have
>>
>> F77_NAME(dgemv)(const char *trans, const int *m, const int *n,
>>         const double *alpha, const double *a, const int *lda,
>>         const double *x, const int *incx, const double *beta,
>>         double *y, const int *incy FCLEN);
>>
>> with a 12th parameter FCLEN?? How am I supposed to fix this, and what
>> the ... is FCLEN? googling leads to nothing useful (for me). It seems as
>> if R is redefining some standard LAPACK routines.
>>
>> Also a note I do not understand (in this context):
>>
>> note: type ‘void’ should match type ‘long int’
>>
>> Any help is much appreciated.
>>
> 
> Sounds likely to be related to this item from R-devel NEWS:
> 
> http://developer.r-project.org/blosxom.cgi/R-devel/2019/08/29#n2019-08-29
> 
> "   Header ‘Rconfig.h’ contains the value of ‘FC_LEN_T’ deduced at 
> installation which is used by the prototypes in headers ‘R_ext/BLAS.h’ 
> and ‘R_ext/Lapack.h’ but to avoid extensive breakage this is only 
> exposed when ‘USE_FC_LEN_T’ is defined.
> 
>      If a package's C/C++ calls to BLAS/LAPACK allow for the ‘hidden’ 
> arguments used by most Fortran compilers to pass the lengths of Fortran 
> character arguments, define ‘USE_FC_LEN_T’ and include ‘Rconfig.h’ 
> (possibly _via_ ‘R.h’) before including ‘R_ext/BLAS.h’ or 
> ‘R_ext/Lapack.h’."

Thanks Duncan,

but my call to dgemv is from a FORTRAN subroutine, no C is involved. It 
is called by .Fortran in R code. I am confused (not for the first time).

Göran

> 
> Duncan Murdoch



More information about the R-package-devel mailing list