1// -*- C++ -*-
2//===----------------------------------------------------------------------===//
3//
4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5// See https://llvm.org/LICENSE.txt for license information.
6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7//
8//===----------------------------------------------------------------------===//
9
10// The Itanium ABI requires that _Unwind_Exception objects are "double-word
11// aligned".
12
13#include <unwind.h>
14
15// EHABI : 8-byte aligned
16// itanium: largest supported alignment for the system
17#if defined(_LIBUNWIND_ARM_EHABI)
18static_assert(alignof(_Unwind_Control_Block) == 8,
19 "_Unwind_Control_Block must be double-word aligned");
20#else
21struct MaxAligned {} __attribute__((__aligned__));
22static_assert(alignof(_Unwind_Exception) == alignof(MaxAligned),
23 "_Unwind_Exception must be maximally aligned");
24#endif
25

source code of libunwind/test/alignment.compile.pass.cpp