[libcxx-commits] [libcxx] c5c329b - [libc++] Use __builtin_FILE and __builtin_LINE in _LIBCPP_ASSERT
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Feb 7 07:36:04 PST 2023
Author: Louis Dionne
Date: 2023-02-07T07:35:33-08:00
New Revision: c5c329b75287b070f1ac005493e0392a5041311a
URL: https://github.com/llvm/llvm-project/commit/c5c329b75287b070f1ac005493e0392a5041311a
DIFF: https://github.com/llvm/llvm-project/commit/c5c329b75287b070f1ac005493e0392a5041311a.diff
LOG: [libc++] Use __builtin_FILE and __builtin_LINE in _LIBCPP_ASSERT
This avoids theoretical potential ODR violations since __LINE__ and
__FILE__ expand to different things depending on where they are.
Differential Revision: https://reviews.llvm.org/D143443
Added:
Modified:
libcxx/include/__assert
Removed:
################################################################################
diff --git a/libcxx/include/__assert b/libcxx/include/__assert
index 3f4e933a5b8a6..d94a657aac509 100644
--- a/libcxx/include/__assert
+++ b/libcxx/include/__assert
@@ -41,7 +41,8 @@
# define _LIBCPP_ASSERT(expression, message) \
(__builtin_expect(static_cast<bool>(expression), 1) \
? (void)0 \
- : _LIBCPP_VERBOSE_ABORT("%s:%d: assertion %s failed: %s", __FILE__, __LINE__, #expression, message))
+ : _LIBCPP_VERBOSE_ABORT( \
+ "%s:%d: assertion %s failed: %s", __builtin_FILE(), __builtin_LINE(), #expression, message))
#elif !defined(_LIBCPP_ASSERTIONS_DISABLE_ASSUME) && __has_builtin(__builtin_assume)
# define _LIBCPP_ASSERT(expression, message) \
(_LIBCPP_DIAGNOSTIC_PUSH _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wassume") \
More information about the libcxx-commits
mailing list