From 45f2532bebd037bf69acc7e806cbc8a7bf492f19 Mon Sep 17 00:00:00 2001
From: Andrey Prokopenko <prokopenkoav@ornl.gov>
Date: Fri, 7 Jun 2024 06:59:38 -0700
Subject: [PATCH] Fix some warnings for nvcc

---
 .../detail/ArborX_InterpDetailsPolynomialBasis.hpp     |  9 +++++++--
 test/tstCompileOnlyAccessTraits.cpp                    |  2 ++
 test/tstDendrogram.cpp                                 |  2 +-
 test/tstKokkosToolsExecutionSpaceInstances.cpp         | 10 ++++++----
 test/tstQueryTreeCallbacks.cpp                         |  6 ++++++
 5 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/src/interpolation/detail/ArborX_InterpDetailsPolynomialBasis.hpp b/src/interpolation/detail/ArborX_InterpDetailsPolynomialBasis.hpp
index cdda6affd..29e893652 100644
--- a/src/interpolation/detail/ArborX_InterpDetailsPolynomialBasis.hpp
+++ b/src/interpolation/detail/ArborX_InterpDetailsPolynomialBasis.hpp
@@ -95,8 +95,13 @@ KOKKOS_FUNCTION constexpr std::size_t polynomialBasisSize()
   static_assert(DIM > 0, "Polynomial basis with no dimension is invalid");
 
   std::size_t result = 1;
-  for (std::size_t k = 0; k < Kokkos::min(DIM, Degree); ++k)
-    result = result * (DIM + Degree - k) / (k + 1);
+
+  constexpr auto D = Kokkos::min(DIM, Degree);
+  if constexpr (D > 0)
+  {
+    for (std::size_t k = 0; k < D; ++k)
+      result = result * (DIM + Degree - k) / (k + 1);
+  }
   return result;
 }
 
diff --git a/test/tstCompileOnlyAccessTraits.cpp b/test/tstCompileOnlyAccessTraits.cpp
index 0870f8ae9..3b10afe86 100644
--- a/test/tstCompileOnlyAccessTraits.cpp
+++ b/test/tstCompileOnlyAccessTraits.cpp
@@ -120,6 +120,8 @@ void test_access_traits_compile_only()
   struct CustomIndex
   {
     char index;
+
+    KOKKOS_FUNCTION
     CustomIndex(int i) { index = i; }
   };
   auto q_with_custom_indices =
diff --git a/test/tstDendrogram.cpp b/test/tstDendrogram.cpp
index 136870f2b..3c834d178 100644
--- a/test/tstDendrogram.cpp
+++ b/test/tstDendrogram.cpp
@@ -142,7 +142,7 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(dendrogram_boruvka, DeviceType,
 
     auto permute = sortObjects(space, weights);
 
-    Kokkos::View<unsigned *, MemorySpace> inv_permute(
+    Kokkos::View<int *, MemorySpace> inv_permute(
         Kokkos::view_alloc(space, Kokkos::WithoutInitializing,
                            "Testing::inv_permute"),
         n - 1);
diff --git a/test/tstKokkosToolsExecutionSpaceInstances.cpp b/test/tstKokkosToolsExecutionSpaceInstances.cpp
index 3baa24dc0..2fce97b60 100644
--- a/test/tstKokkosToolsExecutionSpaceInstances.cpp
+++ b/test/tstKokkosToolsExecutionSpaceInstances.cpp
@@ -15,6 +15,7 @@
 
 #include <boost/test/unit_test.hpp>
 
+#include <limits>
 #include <string>
 
 #include "Search_UnitTestHelpers.hpp"
@@ -28,8 +29,9 @@ namespace
 // Lambdas can only be converted to function pointers if they do not capture.
 // Using a global non-static variable in an unnamed namespace to "capture" the
 // device id.
-uint32_t arborx_test_device_id = -1;
-uint32_t arborx_test_root_device_id = -1;
+uint32_t INVALID_DEVICE_ID = std::numeric_limits<uint32_t>::max();
+uint32_t arborx_test_device_id = INVALID_DEVICE_ID;
+uint32_t arborx_test_root_device_id = INVALID_DEVICE_ID;
 
 void arborx_test_parallel_x_callback(char const *label, uint32_t device_id,
                                      uint64_t * /*kernel_id*/)
@@ -66,8 +68,8 @@ void arborx_test_unset_tools_callbacks()
   Kokkos::Tools::Experimental::set_begin_parallel_for_callback(nullptr);
   Kokkos::Tools::Experimental::set_begin_parallel_reduce_callback(nullptr);
   Kokkos::Tools::Experimental::set_begin_parallel_scan_callback(nullptr);
-  arborx_test_device_id = -1;
-  arborx_test_root_device_id = -1;
+  arborx_test_device_id = INVALID_DEVICE_ID;
+  arborx_test_root_device_id = INVALID_DEVICE_ID;
 }
 
 } // namespace
diff --git a/test/tstQueryTreeCallbacks.cpp b/test/tstQueryTreeCallbacks.cpp
index 5ac78b26e..847d92b8e 100644
--- a/test/tstQueryTreeCallbacks.cpp
+++ b/test/tstQueryTreeCallbacks.cpp
@@ -142,6 +142,9 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(callback_nearest_predicate, TreeTypeTraits,
       Kokkos::RangePolicy<ExecutionSpace>(0, n), KOKKOS_LAMBDA(int i) {
         points(i) = {{(float)i, (float)i, (float)i}};
       });
+#ifdef KOKKOS_COMPILER_NVCC
+  [[maybe_unused]]
+#endif
   Point const origin = {{0., 0., 0.}};
 
   auto values = initialize_values(points, /*delta*/ 0.f);
@@ -328,6 +331,9 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(callback_with_attachment_nearest_predicate,
         points(i) = {{(float)i, (float)i, (float)i}};
       });
   float const delta = 5.f;
+#ifdef KOKKOS_COMPILER_NVCC
+  [[maybe_unused]]
+#endif
   Point const origin = {{0., 0., 0.}};
 
   auto values = initialize_values(points, delta);