On Mon, 13 Nov 2023 16:39:45 +0100 (CET) Romain Pierlot <romain.pier...@u-bordeaux.fr> wrote:
> Here is the error message, and the adequate code part is joint in the > mail : > > error: > loc("/data/gannet/ripley/R/packages/incoming/frailtypack.Rcheck/00_pkg_src/frailtypack/src/Integrale_mult_scl.f90":1811:17): > 'omp.reduction' op must be used within an operation supporting > reduction clause interface error: verification of lowering to FIR > failed Have you tried explaining this in the package submission comment? What was the response? Does the reviewer need more evidence? Linking to the LLVM issue on GitHub and/or the previous R-package-devel thread may help. (LLVM giveth and LLVM taketh away. While I'm sure that their diagnostics helped improve many packages, I have encountered a few places in the R code where clang suggested to replace boolean expressions && and || with bitwise operations & and |. The code still works, but now relies on boolean constants having certain exact bits set. Replace a 1 with a 2 and things will break.) It might be the case that CRAN cannot afford to make an exception for this compiler bug. I can imagine a number of workarounds: 1. In your ./configure script, check for the Fortran compiler being flang-new version 17. If the check succeeds, disable OpenMP altogether. 2. Rewrite your Fortran code so that a variable is never touched before it is used in an OpenMP reduction. You may have to declare a new variable for every OpenMP reduction loop inside a function. If you don't succeed in convincing CRAN regarding the compiler bug, which one of the two workarounds would you prefer? -- Best regards, Ivan ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel