123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- //===- llvm/IR/DebugInfoFlags.def - Debug info flag definitions -*- 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
- //
- //===----------------------------------------------------------------------===//
- //
- // Macros for running through debug info flags.
- //
- //===----------------------------------------------------------------------===//
- #if !(defined HANDLE_DI_FLAG || defined HANDLE_DISP_FLAG)
- #error "Missing macro definition of HANDLE_DI*"
- #endif
- #ifndef HANDLE_DI_FLAG
- #define HANDLE_DI_FLAG(ID, NAME)
- #endif
- #ifndef HANDLE_DISP_FLAG
- #define HANDLE_DISP_FLAG(ID, NAME)
- #endif
- // General flags kept in DINode.
- HANDLE_DI_FLAG(0, Zero) // Use it as zero value.
- // For example: void foo(DIFlags Flags = FlagZero).
- HANDLE_DI_FLAG(1, Private)
- HANDLE_DI_FLAG(2, Protected)
- HANDLE_DI_FLAG(3, Public)
- HANDLE_DI_FLAG((1 << 2), FwdDecl)
- HANDLE_DI_FLAG((1 << 3), AppleBlock)
- // Used to be BlockByRef, can be reused for anything except DICompositeType.
- HANDLE_DI_FLAG((1 << 4), ReservedBit4)
- HANDLE_DI_FLAG((1 << 5), Virtual)
- HANDLE_DI_FLAG((1 << 6), Artificial)
- HANDLE_DI_FLAG((1 << 7), Explicit)
- HANDLE_DI_FLAG((1 << 8), Prototyped)
- HANDLE_DI_FLAG((1 << 9), ObjcClassComplete)
- HANDLE_DI_FLAG((1 << 10), ObjectPointer)
- HANDLE_DI_FLAG((1 << 11), Vector)
- HANDLE_DI_FLAG((1 << 12), StaticMember)
- HANDLE_DI_FLAG((1 << 13), LValueReference)
- HANDLE_DI_FLAG((1 << 14), RValueReference)
- HANDLE_DI_FLAG((1 << 15), ExportSymbols)
- HANDLE_DI_FLAG((1 << 16), SingleInheritance)
- HANDLE_DI_FLAG((2 << 16), MultipleInheritance)
- HANDLE_DI_FLAG((3 << 16), VirtualInheritance)
- HANDLE_DI_FLAG((1 << 18), IntroducedVirtual)
- HANDLE_DI_FLAG((1 << 19), BitField)
- HANDLE_DI_FLAG((1 << 20), NoReturn)
- HANDLE_DI_FLAG((1 << 22), TypePassByValue)
- HANDLE_DI_FLAG((1 << 23), TypePassByReference)
- HANDLE_DI_FLAG((1 << 24), EnumClass)
- HANDLE_DI_FLAG((1 << 25), Thunk)
- HANDLE_DI_FLAG((1 << 26), NonTrivial)
- HANDLE_DI_FLAG((1 << 27), BigEndian)
- HANDLE_DI_FLAG((1 << 28), LittleEndian)
- HANDLE_DI_FLAG((1 << 29), AllCallsDescribed)
- // To avoid needing a dedicated value for IndirectVirtualBase, we use
- // the bitwise or of Virtual and FwdDecl, which does not otherwise
- // make sense for inheritance.
- HANDLE_DI_FLAG((1 << 2) | (1 << 5), IndirectVirtualBase)
- #ifdef DI_FLAG_LARGEST_NEEDED
- // intended to be used with ADT/BitmaskEnum.h
- // NOTE: always must be equal to largest flag, check this when adding new flag
- HANDLE_DI_FLAG((1 << 29), Largest)
- #undef DI_FLAG_LARGEST_NEEDED
- #endif
- // Subprogram-specific flags kept in DISubprogram.
- // Use this as a zero/initialization value.
- // For example: void foo(DISPFlags Flags = SPFlagZero).
- HANDLE_DISP_FLAG(0, Zero)
- // Virtuality is a two-bit enum field in the LSB of the word.
- // Values should match DW_VIRTUALITY_*.
- HANDLE_DISP_FLAG(1u, Virtual)
- HANDLE_DISP_FLAG(2u, PureVirtual)
- HANDLE_DISP_FLAG((1u << 2), LocalToUnit)
- HANDLE_DISP_FLAG((1u << 3), Definition)
- HANDLE_DISP_FLAG((1u << 4), Optimized)
- HANDLE_DISP_FLAG((1u << 5), Pure)
- HANDLE_DISP_FLAG((1u << 6), Elemental)
- HANDLE_DISP_FLAG((1u << 7), Recursive)
- HANDLE_DISP_FLAG((1u << 8), MainSubprogram)
- // May also utilize this Flag in future, when adding support
- // for defaulted functions
- HANDLE_DISP_FLAG((1u << 9), Deleted)
- HANDLE_DISP_FLAG((1u << 11), ObjCDirect)
- #ifdef DISP_FLAG_LARGEST_NEEDED
- // Intended to be used with ADT/BitmaskEnum.h.
- // NOTE: Always must be equal to largest flag, check this when adding new flags.
- HANDLE_DISP_FLAG((1 << 11), Largest)
- #undef DISP_FLAG_LARGEST_NEEDED
- #endif
- #undef HANDLE_DI_FLAG
- #undef HANDLE_DISP_FLAG
|