1 //===-- Internal header for assert ------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLVM_LIBC_SRC_ASSERT_ASSERT_H 10 #define LLVM_LIBC_SRC_ASSERT_ASSERT_H 11 12 #include <stddef.h> 13 14 namespace __llvm_libc { 15 16 [[noreturn]] void __assert_fail(const char *assertion, const char *file, unsigned line, 17 const char *function); 18 19 } // namespace __llvm_libc 20 21 #endif // LLVM_LIBC_SRC_ASSERT_ASSERT_H 22 23 #undef assert 24 25 #ifdef NDEBUG 26 #define assert(e) (void)0 27 #else 28 #define assert(e) \ 29 ((e) ? (void)0 : \ 30 __llvm_libc::__assert_fail(#e, __FILE__, __LINE__, __PRETTY_FUNCTION__)) 31 #endif 32