1//===- llvm/IR/DebugInfoFlags.def - Debug info flag definitions -*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// Macros for running through debug info flags.
11//
12//===----------------------------------------------------------------------===//
13
14// TODO: Add other DW-based macros.
15#ifndef HANDLE_DI_FLAG
16#error "Missing macro definition of HANDLE_DI_FLAG"
17#endif
18
19HANDLE_DI_FLAG(0, Zero) // Use it as zero value.
20                        // For example: void foo(DIFlags Flags = FlagZero).
21HANDLE_DI_FLAG(1, Private)
22HANDLE_DI_FLAG(2, Protected)
23HANDLE_DI_FLAG(3, Public)
24HANDLE_DI_FLAG((1 << 2), FwdDecl)
25HANDLE_DI_FLAG((1 << 3), AppleBlock)
26HANDLE_DI_FLAG((1 << 4), BlockByrefStruct)
27HANDLE_DI_FLAG((1 << 5), Virtual)
28HANDLE_DI_FLAG((1 << 6), Artificial)
29HANDLE_DI_FLAG((1 << 7), Explicit)
30HANDLE_DI_FLAG((1 << 8), Prototyped)
31HANDLE_DI_FLAG((1 << 9), ObjcClassComplete)
32HANDLE_DI_FLAG((1 << 10), ObjectPointer)
33HANDLE_DI_FLAG((1 << 11), Vector)
34HANDLE_DI_FLAG((1 << 12), StaticMember)
35HANDLE_DI_FLAG((1 << 13), LValueReference)
36HANDLE_DI_FLAG((1 << 14), RValueReference)
37// 15 was formerly ExternalTypeRef, but this was never used.
38HANDLE_DI_FLAG((1 << 15), Reserved)
39HANDLE_DI_FLAG((1 << 16), SingleInheritance)
40HANDLE_DI_FLAG((2 << 16), MultipleInheritance)
41HANDLE_DI_FLAG((3 << 16), VirtualInheritance)
42HANDLE_DI_FLAG((1 << 18), IntroducedVirtual)
43HANDLE_DI_FLAG((1 << 19), BitField)
44HANDLE_DI_FLAG((1 << 20), NoReturn)
45HANDLE_DI_FLAG((1 << 21), MainSubprogram)
46HANDLE_DI_FLAG((1 << 22), TypePassByValue)
47HANDLE_DI_FLAG((1 << 23), TypePassByReference)
48HANDLE_DI_FLAG((1 << 24), FixedEnum)
49HANDLE_DI_FLAG((1 << 25), Thunk)
50HANDLE_DI_FLAG((1 << 26), Trivial)
51
52// To avoid needing a dedicated value for IndirectVirtualBase, we use
53// the bitwise or of Virtual and FwdDecl, which does not otherwise
54// make sense for inheritance.
55HANDLE_DI_FLAG((1 << 2) | (1 << 5), IndirectVirtualBase)
56
57#ifdef DI_FLAG_LARGEST_NEEDED
58// intended to be used with ADT/BitmaskEnum.h
59// NOTE: always must be equal to largest flag, check this when adding new flag
60HANDLE_DI_FLAG((1 << 26), Largest)
61#undef DI_FLAG_LARGEST_NEEDED
62#endif
63
64#undef HANDLE_DI_FLAG
65