Skip to content

Commit e32822c

Browse files
ldionneyuxuanchen1997
authored andcommitted
[libc++] Make libc++ forward-compatible with AppleClang's definition of __builtin_verbose_trap (#99529)
AppleClang as included in the Xcode 16 beta implements `__builtin_verbose_trap`, but it implements slightly different semantics from the ones implemented upstream. This patch makes libc++ compatible with either definition until we drop support for the version of AppleClang that differs from upstream.
1 parent 7d1094e commit e32822c

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

libcxx/vendor/llvm/default_assertion_handler.in

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,13 @@
2424
#else
2525

2626
# if __has_builtin(__builtin_verbose_trap)
27-
# define _LIBCPP_ASSERTION_HANDLER(message) __builtin_verbose_trap("libc++", message)
27+
// AppleClang shipped a slightly different version of __builtin_verbose_trap from the upstream
28+
// version before upstream Clang actually got the builtin.
29+
# if defined(_LIBCPP_APPLE_CLANG_VER) && _LIBCPP_APPLE_CLANG_VER < 17000
30+
# define _LIBCPP_ASSERTION_HANDLER(message) __builtin_verbose_trap(message)
31+
# else
32+
# define _LIBCPP_ASSERTION_HANDLER(message) __builtin_verbose_trap("libc++", message)
33+
# endif
2834
# else
2935
# define _LIBCPP_ASSERTION_HANDLER(message) ((void)message, __builtin_trap())
3036
# endif

0 commit comments

Comments
 (0)