blob: d652e0d560f3fa62457f0a34e318e4f0600975f4 [file] [log] [blame]
// Copyright 2024 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef PREEMPT_SRC___SUPPORT_UINT128_H_
#define PREEMPT_SRC___SUPPORT_UINT128_H_
// TODO(https://fxbug.dev/42105189): These are defined as macros in
// <zircon/compiler.h> and used by some other headers such as in libzx. This
// conflicts with their use as scoped identifiers in the llvm-libc code reached
// from this header, when this header is included in someplace that also
// includes <zircon/compiler.h> and those headers that rely on its macros.
// <zircon/compiler.h> should not be defining macros in the public namespace
// this way, but until that's fixed work around the issue by hiding the macros
// during the evaluation of the llvm-libc headers.
#pragma push_macro("add_overflow")
#undef add_overflow
#pragma push_macro("sub_overflow")
#undef sub_overflow
#include_next "src/__support/uint128.h"
// TODO(https://fxbug.dev/42105189): See comment above.
#pragma pop_macro("add_overflow")
#pragma pop_macro("sub_overflow")
#endif // PREEMPT_SRC___SUPPORT_UINT128_H_