Skip to content

Commit e304ff5

Browse files
dinordcopybara-github
authored andcommitted
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
1 parent 8541930 commit e304ff5

File tree

4 files changed

+17
-6
lines changed

4 files changed

+17
-6
lines changed

absl/log/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,7 @@ absl_cc_library(
290290
LINKOPTS
291291
${ABSL_DEFAULT_LINKOPTS}
292292
DEPS
293+
absl::core_headers
293294
absl::log_internal_message
294295
absl::log_internal_nullstream
295296
absl::log_severity

absl/log/internal/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ cc_library(
266266
deps = [
267267
":log_message",
268268
":nullstream",
269+
"//absl/base:core_headers",
269270
"//absl/base:log_severity",
270271
],
271272
)

absl/log/internal/check_op.h

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,13 @@
5858
#endif
5959

6060
#define ABSL_LOG_INTERNAL_CHECK_OP(name, op, val1, val1_text, val2, val2_text) \
61-
while (::std::string* absl_log_internal_check_op_result = \
62-
::absl::log_internal::name##Impl( \
63-
::absl::log_internal::GetReferenceableValue(val1), \
64-
::absl::log_internal::GetReferenceableValue(val2), \
65-
ABSL_LOG_INTERNAL_STRIP_STRING_LITERAL( \
66-
val1_text " " #op " " val2_text))) \
61+
while (::std::string* absl_log_internal_check_op_result \
62+
ABSL_LOG_INTERNAL_ATTRIBUTE_UNUSED_IF_STRIP_LOG = \
63+
::absl::log_internal::name##Impl( \
64+
::absl::log_internal::GetReferenceableValue(val1), \
65+
::absl::log_internal::GetReferenceableValue(val2), \
66+
ABSL_LOG_INTERNAL_STRIP_STRING_LITERAL( \
67+
val1_text " " #op " " val2_text))) \
6768
ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS, true) \
6869
ABSL_LOG_INTERNAL_CHECK(*absl_log_internal_check_op_result).InternalStream()
6970
#define ABSL_LOG_INTERNAL_QCHECK_OP(name, op, val1, val1_text, val2, \

absl/log/internal/strip.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#ifndef ABSL_LOG_INTERNAL_STRIP_H_
2121
#define ABSL_LOG_INTERNAL_STRIP_H_
2222

23+
#include "absl/base/attributes.h" // IWYU pragma: keep
2324
#include "absl/base/log_severity.h"
2425
#include "absl/log/internal/log_message.h"
2526
#include "absl/log/internal/nullstream.h"
@@ -29,6 +30,9 @@
2930
// of defines comes in three flavors: vanilla, plus two variants that strip some
3031
// logging in subtly different ways for subtly different reasons (see below).
3132
#if defined(STRIP_LOG) && STRIP_LOG
33+
34+
#define ABSL_LOG_INTERNAL_ATTRIBUTE_UNUSED_IF_STRIP_LOG ABSL_ATTRIBUTE_UNUSED
35+
3236
#define ABSL_LOGGING_INTERNAL_LOG_INFO ::absl::log_internal::NullStream()
3337
#define ABSL_LOGGING_INTERNAL_LOG_WARNING ::absl::log_internal::NullStream()
3438
#define ABSL_LOGGING_INTERNAL_LOG_ERROR ::absl::log_internal::NullStream()
@@ -48,7 +52,11 @@
4852
#define ABSL_LOG_INTERNAL_CHECK(failure_message) ABSL_LOGGING_INTERNAL_LOG_FATAL
4953
#define ABSL_LOG_INTERNAL_QCHECK(failure_message) \
5054
ABSL_LOGGING_INTERNAL_LOG_QFATAL
55+
5156
#else // !defined(STRIP_LOG) || !STRIP_LOG
57+
58+
#define ABSL_LOG_INTERNAL_ATTRIBUTE_UNUSED_IF_STRIP_LOG
59+
5260
#define ABSL_LOGGING_INTERNAL_LOG_INFO \
5361
::absl::log_internal::LogMessage( \
5462
__FILE__, __LINE__, ::absl::log_internal::LogMessage::InfoTag{})

0 commit comments

Comments
 (0)