Commit e304ff50 by Dino Radakovic Committed by Copybara-Service

`log/internal/check_op`: Add ABSL_ATTRIBUTE_UNUSED to CHECK macros when STRIP_LOG is enabled

When `STRIP_LOG` is off, the internal variable `absl_log_internal_check_op_result` is passed to `absl::log_internal::LogMessageFatal()` and used in the failure message.
When `STRIP_LOG` is on, the variable is truly unused.

Applying a `ABSL_ATTRIBUTE_UNUSED` on the variable triggers `-Wused-but-marked-unused` when `STRIP_LOG` is off, not applying the attribute triggers `-Wunused-but-set-variable` when `STRIP_LOG` is on.

Define a new internal macro `ABSL_LOG_INTERNAL_ATTRIBUTE_UNUSED_IF_STRIP_LOG` that evaluates to `ABSL_ATTRIBUTE_UNUSED` when `STRIP_LOG` is on and nothing when `STRIP_LOG` is off to address both of these scenarios.

PiperOrigin-RevId: 625049155
Change-Id: Ia3f8a6ca916dd67a287bbda4b9bd6c574c92247a
parent 85419307
...@@ -290,6 +290,7 @@ absl_cc_library( ...@@ -290,6 +290,7 @@ absl_cc_library(
LINKOPTS LINKOPTS
${ABSL_DEFAULT_LINKOPTS} ${ABSL_DEFAULT_LINKOPTS}
DEPS DEPS
absl::core_headers
absl::log_internal_message absl::log_internal_message
absl::log_internal_nullstream absl::log_internal_nullstream
absl::log_severity absl::log_severity
......
...@@ -266,6 +266,7 @@ cc_library( ...@@ -266,6 +266,7 @@ cc_library(
deps = [ deps = [
":log_message", ":log_message",
":nullstream", ":nullstream",
"//absl/base:core_headers",
"//absl/base:log_severity", "//absl/base:log_severity",
], ],
) )
......
...@@ -58,12 +58,13 @@ ...@@ -58,12 +58,13 @@
#endif #endif
#define ABSL_LOG_INTERNAL_CHECK_OP(name, op, val1, val1_text, val2, val2_text) \ #define ABSL_LOG_INTERNAL_CHECK_OP(name, op, val1, val1_text, val2, val2_text) \
while (::std::string* absl_log_internal_check_op_result = \ while (::std::string* absl_log_internal_check_op_result \
::absl::log_internal::name##Impl( \ ABSL_LOG_INTERNAL_ATTRIBUTE_UNUSED_IF_STRIP_LOG = \
::absl::log_internal::GetReferenceableValue(val1), \ ::absl::log_internal::name##Impl( \
::absl::log_internal::GetReferenceableValue(val2), \ ::absl::log_internal::GetReferenceableValue(val1), \
ABSL_LOG_INTERNAL_STRIP_STRING_LITERAL( \ ::absl::log_internal::GetReferenceableValue(val2), \
val1_text " " #op " " val2_text))) \ ABSL_LOG_INTERNAL_STRIP_STRING_LITERAL( \
val1_text " " #op " " val2_text))) \
ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS, true) \ ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS, true) \
ABSL_LOG_INTERNAL_CHECK(*absl_log_internal_check_op_result).InternalStream() ABSL_LOG_INTERNAL_CHECK(*absl_log_internal_check_op_result).InternalStream()
#define ABSL_LOG_INTERNAL_QCHECK_OP(name, op, val1, val1_text, val2, \ #define ABSL_LOG_INTERNAL_QCHECK_OP(name, op, val1, val1_text, val2, \
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#ifndef ABSL_LOG_INTERNAL_STRIP_H_ #ifndef ABSL_LOG_INTERNAL_STRIP_H_
#define ABSL_LOG_INTERNAL_STRIP_H_ #define ABSL_LOG_INTERNAL_STRIP_H_
#include "absl/base/attributes.h" // IWYU pragma: keep
#include "absl/base/log_severity.h" #include "absl/base/log_severity.h"
#include "absl/log/internal/log_message.h" #include "absl/log/internal/log_message.h"
#include "absl/log/internal/nullstream.h" #include "absl/log/internal/nullstream.h"
...@@ -29,6 +30,9 @@ ...@@ -29,6 +30,9 @@
// of defines comes in three flavors: vanilla, plus two variants that strip some // of defines comes in three flavors: vanilla, plus two variants that strip some
// logging in subtly different ways for subtly different reasons (see below). // logging in subtly different ways for subtly different reasons (see below).
#if defined(STRIP_LOG) && STRIP_LOG #if defined(STRIP_LOG) && STRIP_LOG
#define ABSL_LOG_INTERNAL_ATTRIBUTE_UNUSED_IF_STRIP_LOG ABSL_ATTRIBUTE_UNUSED
#define ABSL_LOGGING_INTERNAL_LOG_INFO ::absl::log_internal::NullStream() #define ABSL_LOGGING_INTERNAL_LOG_INFO ::absl::log_internal::NullStream()
#define ABSL_LOGGING_INTERNAL_LOG_WARNING ::absl::log_internal::NullStream() #define ABSL_LOGGING_INTERNAL_LOG_WARNING ::absl::log_internal::NullStream()
#define ABSL_LOGGING_INTERNAL_LOG_ERROR ::absl::log_internal::NullStream() #define ABSL_LOGGING_INTERNAL_LOG_ERROR ::absl::log_internal::NullStream()
...@@ -48,7 +52,11 @@ ...@@ -48,7 +52,11 @@
#define ABSL_LOG_INTERNAL_CHECK(failure_message) ABSL_LOGGING_INTERNAL_LOG_FATAL #define ABSL_LOG_INTERNAL_CHECK(failure_message) ABSL_LOGGING_INTERNAL_LOG_FATAL
#define ABSL_LOG_INTERNAL_QCHECK(failure_message) \ #define ABSL_LOG_INTERNAL_QCHECK(failure_message) \
ABSL_LOGGING_INTERNAL_LOG_QFATAL ABSL_LOGGING_INTERNAL_LOG_QFATAL
#else // !defined(STRIP_LOG) || !STRIP_LOG #else // !defined(STRIP_LOG) || !STRIP_LOG
#define ABSL_LOG_INTERNAL_ATTRIBUTE_UNUSED_IF_STRIP_LOG
#define ABSL_LOGGING_INTERNAL_LOG_INFO \ #define ABSL_LOGGING_INTERNAL_LOG_INFO \
::absl::log_internal::LogMessage( \ ::absl::log_internal::LogMessage( \
__FILE__, __LINE__, ::absl::log_internal::LogMessage::InfoTag{}) __FILE__, __LINE__, ::absl::log_internal::LogMessage::InfoTag{})
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment