Make ABSL_ASSUME() see the unevaluated operand regardless of NDEBUG

PiperOrigin-RevId: 940922383
Change-Id: I8b283a40f5f6de94f44de05e46f8e08ec21b397f
diff --git a/absl/base/optimization.h b/absl/base/optimization.h
index 9b52a92..bce5ec5 100644
--- a/absl/base/optimization.h
+++ b/absl/base/optimization.h
@@ -266,7 +266,8 @@
 //   int y = x / 16;
 //
 #if !defined(NDEBUG)
-#define ABSL_ASSUME(cond) assert(cond)
+#define ABSL_ASSUME(cond) \
+  (ABSL_PREDICT_TRUE((cond)) ? void() : assert(false && #cond))
 #elif ABSL_HAVE_BUILTIN(__builtin_assume)
 #define ABSL_ASSUME(cond) __builtin_assume(cond)
 #elif defined(_MSC_VER)