// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___ASSERT
#define _LIBCPP___ASSERT

#include <__config>
#include <__verbose_abort>

#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#  pragma GCC system_header
#endif

// TODO: Remove in LLVM 17.
#if defined(_LIBCPP_DEBUG)
#   error "Defining _LIBCPP_DEBUG is not supported anymore. Please use _LIBCPP_ENABLE_DEBUG_MODE instead."
#endif

// Automatically enable assertions when the debug mode is enabled.
#if defined(_LIBCPP_ENABLE_DEBUG_MODE)
# ifndef _LIBCPP_ENABLE_ASSERTIONS
#   define _LIBCPP_ENABLE_ASSERTIONS 1
# endif
#endif

#ifndef _LIBCPP_ENABLE_ASSERTIONS
# define _LIBCPP_ENABLE_ASSERTIONS _LIBCPP_ENABLE_ASSERTIONS_DEFAULT
#endif

#if _LIBCPP_ENABLE_ASSERTIONS != 0 && _LIBCPP_ENABLE_ASSERTIONS != 1
# error "_LIBCPP_ENABLE_ASSERTIONS must be set to 0 or 1"
#endif

#if _LIBCPP_ENABLE_ASSERTIONS
# 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))
#elif !defined(_LIBCPP_ASSERTIONS_DISABLE_ASSUME) && __has_builtin(__builtin_assume)
# define _LIBCPP_ASSERT(expression, message)                                        \
    (_LIBCPP_DIAGNOSTIC_PUSH                                                        \
    _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wassume")                                    \
    __builtin_assume(static_cast<bool>(expression))                                 \
    _LIBCPP_DIAGNOSTIC_POP)
#else
# define _LIBCPP_ASSERT(expression, message) ((void)0)
#endif

#endif // _LIBCPP___ASSERT
