# RFC: adding \`\_\_builtin\_verbose\_trap(string-literal)\`

**URL:** <https://discourse.llvm.org/t/rfc-adding-builtin-verbose-trap-string-literal/75845>\
**Category:** Clang Frontend\
**Tags:** debuginfo, clang\
**Created:** [December 21, 2023, 4:01am UTC](https://discourse.llvm.org/t/rfc-adding-builtin-verbose-trap-string-literal/75845 "2023-12-21T04:01:52Z")\
**Posts on this page:** 1\
**Page:** 2

<div class="post-metadata">

**Author:** ![user1984](https://avatars.discourse-cdn.com/v4/letter/u/ebca7d/32.png) [@user1984](https://discourse.llvm.org/u/user1984)\
**Post date:** [May 21, 2026, 10:40pm UTC](https://discourse.llvm.org/t/rfc-adding-builtin-verbose-trap-string-literal/75845/21 "2026-05-21T22:40:42Z")

</div>

> [@varconst](#):
>
> ```auto
> void foo(int* p) {
> if (p == nullptr)
> __builtin_verbose_trap("Argument must not be null");
> }
> 
> ```

Even better, use compile\_assert P4021 proposed to C++ - it will stop the build, there will be no bug in production code. This is a zero runtime cost, it is 100% at compile time with Clang, GCC, MSVC supported.

`void foo(int* p)`

`{`  
` compile_assert(nullptr!=p, “Argument must not be null”);`

` // your code`  
`}`

[Previous page](https://discourse.llvm.org/t/rfc-adding-builtin-verbose-trap-string-literal/75845.md?page=1)
