[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