CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
83 lines
2.8 KiB
C++
83 lines
2.8 KiB
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___NEW_EXCEPTIONS_H
|
|
#define _LIBCPP___NEW_EXCEPTIONS_H
|
|
|
|
#include <__config>
|
|
#include <__exception/exception.h>
|
|
#include <__verbose_abort>
|
|
|
|
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
|
|
# pragma GCC system_header
|
|
#endif
|
|
|
|
// <vcruntime_exception.h> defines its own std::bad_alloc type,
|
|
// which we use in order to be ABI-compatible with other STLs on Windows.
|
|
#if defined(_LIBCPP_ABI_VCRUNTIME)
|
|
# include <vcruntime_exception.h>
|
|
#endif
|
|
|
|
_LIBCPP_BEGIN_UNVERSIONED_NAMESPACE_STD
|
|
_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS
|
|
|
|
#if !defined(_LIBCPP_ABI_VCRUNTIME)
|
|
|
|
class _LIBCPP_EXPORTED_FROM_ABI bad_alloc : public exception {
|
|
public:
|
|
bad_alloc() _NOEXCEPT;
|
|
_LIBCPP_HIDE_FROM_ABI bad_alloc(const bad_alloc&) _NOEXCEPT = default;
|
|
_LIBCPP_HIDE_FROM_ABI bad_alloc& operator=(const bad_alloc&) _NOEXCEPT = default;
|
|
~bad_alloc() _NOEXCEPT override;
|
|
[[__nodiscard__]] const char* what() const _NOEXCEPT override;
|
|
};
|
|
|
|
class _LIBCPP_EXPORTED_FROM_ABI bad_array_new_length : public bad_alloc {
|
|
public:
|
|
bad_array_new_length() _NOEXCEPT;
|
|
_LIBCPP_HIDE_FROM_ABI bad_array_new_length(const bad_array_new_length&) _NOEXCEPT = default;
|
|
_LIBCPP_HIDE_FROM_ABI bad_array_new_length& operator=(const bad_array_new_length&) _NOEXCEPT = default;
|
|
~bad_array_new_length() _NOEXCEPT override;
|
|
[[__nodiscard__]] const char* what() const _NOEXCEPT override;
|
|
};
|
|
|
|
#elif defined(_HAS_EXCEPTIONS) && _HAS_EXCEPTIONS == 0 // !_LIBCPP_ABI_VCRUNTIME
|
|
|
|
// When _HAS_EXCEPTIONS == 0, these complete definitions are needed,
|
|
// since they would normally be provided in vcruntime_exception.h
|
|
class bad_alloc : public exception {
|
|
public:
|
|
bad_alloc() noexcept : exception("bad allocation") {}
|
|
|
|
private:
|
|
friend class bad_array_new_length;
|
|
|
|
bad_alloc(char const* const __message) noexcept : exception(__message) {}
|
|
};
|
|
|
|
class bad_array_new_length : public bad_alloc {
|
|
public:
|
|
bad_array_new_length() noexcept : bad_alloc("bad array new length") {}
|
|
};
|
|
|
|
#endif // defined(_LIBCPP_ABI_VCRUNTIME) && defined(_HAS_EXCEPTIONS) && _HAS_EXCEPTIONS == 0
|
|
|
|
[[__noreturn__]] _LIBCPP_EXPORTED_FROM_ABI void __throw_bad_alloc(); // not in C++ spec
|
|
|
|
[[__noreturn__]] inline _LIBCPP_HIDE_FROM_ABI void __throw_bad_array_new_length() {
|
|
#if _LIBCPP_HAS_EXCEPTIONS
|
|
throw bad_array_new_length();
|
|
#else
|
|
_LIBCPP_VERBOSE_ABORT("bad_array_new_length was thrown in -fno-exceptions mode");
|
|
#endif
|
|
}
|
|
_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS
|
|
_LIBCPP_END_UNVERSIONED_NAMESPACE_STD
|
|
|
|
#endif // _LIBCPP___NEW_EXCEPTIONS_H
|