Move HardeningAbort to a macro to address CUDA build issues

PiperOrigin-RevId: 922287526
Change-Id: Iff5d97f8ee48dde34cffd3b142430ee5f8b07b47
diff --git a/absl/base/internal/hardening.h b/absl/base/internal/hardening.h
index 31b25d9..188c8f3 100644
--- a/absl/base/internal/hardening.h
+++ b/absl/base/internal/hardening.h
@@ -45,7 +45,7 @@
   ABSL_ASSERT(cond);
 #if (ABSL_OPTION_HARDENED == 1 || ABSL_OPTION_HARDENED == 2) && defined(NDEBUG)
   if (ABSL_PREDICT_FALSE(!cond)) {
-    base_internal::HardeningAbort();
+    ABSL_INTERNAL_HARDENING_ABORT();
   }
 #endif
 }
@@ -59,7 +59,7 @@
   ABSL_ASSERT(cond);
 #if (ABSL_OPTION_HARDENED == 1) && defined(NDEBUG)
   if (ABSL_PREDICT_FALSE(!cond)) {
-    base_internal::HardeningAbort();
+    ABSL_INTERNAL_HARDENING_ABORT();
   }
 #endif
 }
@@ -69,7 +69,7 @@
   ABSL_ASSERT(val1 > val2);
 #if (ABSL_OPTION_HARDENED == 1 || ABSL_OPTION_HARDENED == 2) && defined(NDEBUG)
   if (!ABSL_PREDICT_TRUE(val1 > val2)) {
-    base_internal::HardeningAbort();
+    ABSL_INTERNAL_HARDENING_ABORT();
   }
 #endif
 }
@@ -79,7 +79,7 @@
   ABSL_ASSERT(val1 >= val2);
 #if (ABSL_OPTION_HARDENED == 1 || ABSL_OPTION_HARDENED == 2) && defined(NDEBUG)
   if (!ABSL_PREDICT_TRUE(val1 >= val2)) {
-    base_internal::HardeningAbort();
+    ABSL_INTERNAL_HARDENING_ABORT();
   }
 #endif
 }
@@ -89,7 +89,7 @@
   ABSL_ASSERT(val1 < val2);
 #if (ABSL_OPTION_HARDENED == 1 || ABSL_OPTION_HARDENED == 2) && defined(NDEBUG)
   if (!ABSL_PREDICT_TRUE(val1 < val2)) {
-    base_internal::HardeningAbort();
+    ABSL_INTERNAL_HARDENING_ABORT();
   }
 #endif
 }
@@ -99,7 +99,7 @@
   ABSL_ASSERT(val1 <= val2);
 #if (ABSL_OPTION_HARDENED == 1 || ABSL_OPTION_HARDENED == 2) && defined(NDEBUG)
   if (!ABSL_PREDICT_TRUE(val1 <= val2)) {
-    base_internal::HardeningAbort();
+    ABSL_INTERNAL_HARDENING_ABORT();
   }
 #endif
 }
@@ -113,7 +113,7 @@
   ABSL_ASSERT(!container.empty());
 #if (ABSL_OPTION_HARDENED == 1 || ABSL_OPTION_HARDENED == 2) && defined(NDEBUG)
   if (ABSL_PREDICT_FALSE(container.empty())) {
-    base_internal::HardeningAbort();
+    ABSL_INTERNAL_HARDENING_ABORT();
   }
 #endif
 }
@@ -123,7 +123,7 @@
   ABSL_ASSERT(ptr != nullptr);
 #if (ABSL_OPTION_HARDENED == 1 || ABSL_OPTION_HARDENED == 2) && defined(NDEBUG)
   if (ABSL_PREDICT_FALSE(ptr == nullptr)) {
-    base_internal::HardeningAbort();
+    ABSL_INTERNAL_HARDENING_ABORT();
   }
 #endif
 }
diff --git a/absl/base/macros.h b/absl/base/macros.h
index 8c4a34d..0dd69d7 100644
--- a/absl/base/macros.h
+++ b/absl/base/macros.h
@@ -135,7 +135,15 @@
 // aborts the program in release mode (when NDEBUG is defined). The
 // implementation should abort the program as quickly as possible and ideally it
 // should not be possible to ignore the abort request.
+#ifdef __CUDACC__
+#define ABSL_INTERNAL_HARDENING_ABORT()   \
+  do {                                    \
+    ABSL_INTERNAL_IMMEDIATE_ABORT_IMPL(); \
+    ABSL_INTERNAL_UNREACHABLE_IMPL();     \
+  } while (false)
+#else
 #define ABSL_INTERNAL_HARDENING_ABORT() ::absl::base_internal::HardeningAbort()
+#endif
 
 // ABSL_HARDENING_ASSERT()
 //
@@ -149,9 +157,12 @@
 // See `ABSL_OPTION_HARDENED` in `absl/base/options.h` for more information on
 // hardened mode.
 #if (ABSL_OPTION_HARDENED == 1 || ABSL_OPTION_HARDENED == 2) && defined(NDEBUG)
-#define ABSL_HARDENING_ASSERT(expr)                 \
-  (ABSL_PREDICT_TRUE((expr)) ? static_cast<void>(0) \
-                             : ABSL_INTERNAL_HARDENING_ABORT())
+#define ABSL_HARDENING_ASSERT(expr)    \
+  do {                                 \
+    if (!ABSL_PREDICT_TRUE((expr))) {  \
+      ABSL_INTERNAL_HARDENING_ABORT(); \
+    }                                  \
+  } while (false)
 #else
 #define ABSL_HARDENING_ASSERT(expr) ABSL_ASSERT(expr)
 #endif
@@ -168,9 +179,7 @@
 // See `ABSL_OPTION_HARDENED` in `absl/base/options.h` for more information on
 // hardened mode.
 #if ABSL_OPTION_HARDENED == 1 && defined(NDEBUG)
-#define ABSL_HARDENING_ASSERT_SLOW(expr)            \
-  (ABSL_PREDICT_TRUE((expr)) ? static_cast<void>(0) \
-                             : ABSL_INTERNAL_HARDENING_ABORT())
+#define ABSL_HARDENING_ASSERT_SLOW(expr) ABSL_HARDENING_ASSERT(expr)
 #else
 #define ABSL_HARDENING_ASSERT_SLOW(expr) ABSL_ASSERT(expr)
 #endif