https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99299
--- Comment #9 from Segher Boessenkool <segher at gcc dot gnu.org> --- The i386 port has === (define_insn "trap" [(trap_if (const_int 1) (const_int 6))] "" { #ifdef HAVE_AS_IX86_UD2 return "ud2"; #else return ASM_SHORT "0x0b0f"; #endif } [(set_attr "length" "2")]) === which implements __builtin_trap, and can implement __builtin_trap_no_abort just fine as well, if your OS kernel (or similar) can return after a ud2. If clang uses terribly confusing names (or semantics, or syntax, etc.) we should not copy that from them. *Especially* when that already conflicts with names they copied from us.