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