1 //===----- ABI.h - ABI related declarations ---------------------*- 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 /// \file
10 /// Enums/classes describing ABI related information about constructors,
11 /// destructors and thunks.
12 ///
13 //===----------------------------------------------------------------------===//
14 
15 #ifndef LLVM_CLANG_BASIC_ABI_H
16 #define LLVM_CLANG_BASIC_ABI_H
17 
18 #include "llvm/Support/DataTypes.h"
19 #include <cstring>
20 
21 namespace clang {
22 
23 /// C++ constructor types.
24 enum CXXCtorType {
25   Ctor_Complete,       ///< Complete object ctor
26   Ctor_Base,           ///< Base object ctor
27   Ctor_Comdat,         ///< The COMDAT used for ctors
28   Ctor_CopyingClosure, ///< Copying closure variant of a ctor
29   Ctor_DefaultClosure, ///< Default closure variant of a ctor
30 };
31 
32 /// C++ destructor types.
33 enum CXXDtorType {
34     Dtor_Deleting, ///< Deleting dtor
35     Dtor_Complete, ///< Complete object dtor
36     Dtor_Base,     ///< Base object dtor
37     Dtor_Comdat    ///< The COMDAT used for dtors
38 };
39 
40 } // end namespace clang
41 
42 #endif
43