nimble-dev / nimble

The base NIMBLE package for R
http://R-nimble.org
BSD 3-Clause "New" or "Revised" License
156 stars 23 forks source link

warnings about unused typdefs on M2 Mac #1391

Closed paciorek closed 8 months ago

paciorek commented 8 months ago

I'm only seeing these on my Mac and not on Linux (an M2; I haven't tried on an Intel Mac). Note that on Linux the unused typedefs are there in the C++ code but are not warned about.

 adfun <- nimbleFunction(
     setup = TRUE,
     run = function(x = double(1)) {
       return(sum(exp(x)))
       returnType(double())
     },
     methods = list(
       derivsRun = function(x = double(1)) {
         ans <- nimDerivs(run(x), wrt = 1:length(x), order = 0:2)
         return(ans$jacobian[1,])
         returnType(double(1))
       }),
     buildDerivs = 'run')
 Radfun1 <- adfun()
  Cadfun1 <- compileNimble(Radfun1,showCompilerOutput=TRUE)
Compiling
  [Note] This may take a minute.
  [Note] On some systems there may be some compiler warnings that can be safely ignored.
clang++ -arch arm64 -std=gnu++17 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -DR_NO_REMAP   -DEIGEN_MPL2_ONLY=1 -I"/Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/nimble/include" -Wno-misleading-indentation -Wno-ignored-attributes -Wno-deprecated-declarations  -I/opt/R/arm64/include    -fPIC  -falign-functions=64 -Wall -g -O2  -c dynamicRegistrations_01_11_09_10_12.cpp -o dynamicRegistrations_01_11_09_10_12.o
clang++ -arch arm64 -std=gnu++17 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -L/Library/Frameworks/R.framework/Resources/lib -L/opt/R/arm64/lib -o dynamicRegistrations_01_11_09_10_12.so dynamicRegistrations_01_11_09_10_12.o -L/Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/nimble/CppCode -lnimble -L/Library/Frameworks/R.framework/Resources/lib -lRlapack -L/Library/Frameworks/R.framework/Resources/lib -lRblas -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
using C++ compiler: ‘Apple clang version 15.0.0 (clang-1500.0.40.1)’
using SDK: ‘MacOSX14.0.sdk’
clang++ -arch arm64 -std=gnu++17 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -DR_NO_REMAP   -DEIGEN_MPL2_ONLY=1 -I"/Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/nimble/include" -Wno-misleading-indentation -Wno-ignored-attributes -Wno-deprecated-declarations  -I/opt/R/arm64/include    -fPIC  -falign-functions=64 -Wall -g -O2  -c nimbleCppADbaseClass.cpp -o nimbleCppADbaseClass.o
clang++ -arch arm64 -std=gnu++17 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -L/Library/Frameworks/R.framework/Resources/lib -L/opt/R/arm64/lib -o nimbleCppADbaseClass_01_11_09_10_13.so nimbleCppADbaseClass.o -L/Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/nimble/CppCode -lnimble -L/Library/Frameworks/R.framework/Resources/lib -lRlapack -L/Library/Frameworks/R.framework/Resources/lib -lRblas -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
using C++ compiler: ‘Apple clang version 15.0.0 (clang-1500.0.40.1)’
using SDK: ‘MacOSX14.0.sdk’
clang++ -arch arm64 -std=gnu++17 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -DR_NO_REMAP   -DEIGEN_MPL2_ONLY=1 -I"/Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/nimble/include" -Wno-misleading-indentation -Wno-ignored-attributes -Wno-deprecated-declarations  -I/opt/R/arm64/include    -fPIC  -falign-functions=64 -Wall -g -O2  -c P_1_nfRefClass_R_GlobalEnv42.cpp -o P_1_nfRefClass_R_GlobalEnv42.o
clang++ -arch arm64 -std=gnu++17 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -L/Library/Frameworks/R.framework/Resources/lib -L/opt/R/arm64/lib -o P_1_nfRefClass_R_GlobalEnv42_01_11_09_10_12.so P_1_nfRefClass_R_GlobalEnv42.o nimbleCppADbaseClass.o -L/Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/nimble/CppCode -lnimble -L/Library/Frameworks/R.framework/Resources/lib -lRlapack -L/Library/Frameworks/R.framework/Resources/lib -lRblas -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
using C++ compiler: ‘Apple clang version 15.0.0 (clang-1500.0.40.1)’
using SDK: ‘MacOSX14.0.sdk’
P_1_nfRefClass_R_GlobalEnv42.cpp:51:58: warning: unused typedef 'MatrixXd_TYPE_' [-Wunused-local-typedef]
typedef typename EigenTemplateTypes<TYPE_>::typeMatrixXd MatrixXd_TYPE_;
                                                         ^
P_1_nfRefClass_R_GlobalEnv42.cpp:172:62: warning: unused typedef 'EigenMapStrd_TYPE_' [-Wunused-local-typedef]
typedef typename EigenTemplateTypes<TYPE_>::typeEigenMapStrd EigenMapStrd_TYPE_;
                                                             ^
P_1_nfRefClass_R_GlobalEnv42.cpp:173:58: warning: unused typedef 'MatrixXd_TYPE_' [-Wunused-local-typedef]
typedef typename EigenTemplateTypes<TYPE_>::typeMatrixXd MatrixXd_TYPE_;
                                                         ^
3 warnings generated.

The specified C++ code does indeed have unused typedefs in some functions. Here's the C++ for the first of the three cases above, with MatrixXd_TYPE_ unused:

template<class TYPE_>  
TYPE_  nfRefClass_R_GlobalEnv42::run_AD2_ ( NimArr<1, TYPE_> & ARG1_x_, nimbleCppADrecordingInfoClass recordingInfo_ )  {
typedef typename EigenTemplateTypes<TYPE_>::typeEigenMapStrd EigenMapStrd_TYPE_;
typedef typename EigenTemplateTypes<TYPE_>::typeMatrixXd MatrixXd_TYPE_;
TYPE_ Interm_1;
EigenMapStrd_TYPE_ Eig_ARG1_x_Interm_2(0,0,0, EigStrDyn(0, 0));
new (&Eig_ARG1_x_Interm_2) EigenMapStrd_TYPE_(ARG1_x_.getPtr() + static_cast<int>(ARG1_x_.getOffset() + static_cast<int>(0)),ARG1_x_.dim()[0],1,EigStrDyn(0, ARG1_x_.strides()[0]));
Interm_1 = (((Eig_ARG1_x_Interm_2).array()).exp()).sum();
return(Interm_1);
}

@perrydv I'm going to leave it there for the moment to give you a chance to weigh in on whether this is something we should investigate further.

paciorek commented 8 months ago

We decided this was innocuous and occurs in other places.