Warning, /include/llvm/IR/DebugInfoFlags.def is written in an unsupported language. File is not indexed.
0001 //===- llvm/IR/DebugInfoFlags.def - Debug info flag definitions -*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 //
0009 // Macros for running through debug info flags.
0010 //
0011 //===----------------------------------------------------------------------===//
0012
0013 #if !(defined HANDLE_DI_FLAG || defined HANDLE_DISP_FLAG)
0014 #error "Missing macro definition of HANDLE_DI*"
0015 #endif
0016
0017 #ifndef HANDLE_DI_FLAG
0018 #define HANDLE_DI_FLAG(ID, NAME)
0019 #endif
0020
0021 #ifndef HANDLE_DISP_FLAG
0022 #define HANDLE_DISP_FLAG(ID, NAME)
0023 #endif
0024
0025 // General flags kept in DINode.
0026
0027 HANDLE_DI_FLAG(0, Zero) // Use it as zero value.
0028 // For example: void foo(DIFlags Flags = FlagZero).
0029 HANDLE_DI_FLAG(1, Private)
0030 HANDLE_DI_FLAG(2, Protected)
0031 HANDLE_DI_FLAG(3, Public)
0032 HANDLE_DI_FLAG((1 << 2), FwdDecl)
0033 HANDLE_DI_FLAG((1 << 3), AppleBlock)
0034 // Used to be BlockByRef, can be reused for anything except DICompositeType.
0035 HANDLE_DI_FLAG((1 << 4), ReservedBit4)
0036 HANDLE_DI_FLAG((1 << 5), Virtual)
0037 HANDLE_DI_FLAG((1 << 6), Artificial)
0038 HANDLE_DI_FLAG((1 << 7), Explicit)
0039 HANDLE_DI_FLAG((1 << 8), Prototyped)
0040 HANDLE_DI_FLAG((1 << 9), ObjcClassComplete)
0041 HANDLE_DI_FLAG((1 << 10), ObjectPointer)
0042 HANDLE_DI_FLAG((1 << 11), Vector)
0043 HANDLE_DI_FLAG((1 << 12), StaticMember)
0044 HANDLE_DI_FLAG((1 << 13), LValueReference)
0045 HANDLE_DI_FLAG((1 << 14), RValueReference)
0046 HANDLE_DI_FLAG((1 << 15), ExportSymbols)
0047 HANDLE_DI_FLAG((1 << 16), SingleInheritance)
0048 HANDLE_DI_FLAG((2 << 16), MultipleInheritance)
0049 HANDLE_DI_FLAG((3 << 16), VirtualInheritance)
0050 HANDLE_DI_FLAG((1 << 18), IntroducedVirtual)
0051 HANDLE_DI_FLAG((1 << 19), BitField)
0052 HANDLE_DI_FLAG((1 << 20), NoReturn)
0053 HANDLE_DI_FLAG((1 << 22), TypePassByValue)
0054 HANDLE_DI_FLAG((1 << 23), TypePassByReference)
0055 HANDLE_DI_FLAG((1 << 24), EnumClass)
0056 HANDLE_DI_FLAG((1 << 25), Thunk)
0057 HANDLE_DI_FLAG((1 << 26), NonTrivial)
0058 HANDLE_DI_FLAG((1 << 27), BigEndian)
0059 HANDLE_DI_FLAG((1 << 28), LittleEndian)
0060 HANDLE_DI_FLAG((1 << 29), AllCallsDescribed)
0061
0062 // To avoid needing a dedicated value for IndirectVirtualBase, we use
0063 // the bitwise or of Virtual and FwdDecl, which does not otherwise
0064 // make sense for inheritance.
0065 HANDLE_DI_FLAG((1 << 2) | (1 << 5), IndirectVirtualBase)
0066
0067 #ifdef DI_FLAG_LARGEST_NEEDED
0068 // intended to be used with ADT/BitmaskEnum.h
0069 // NOTE: always must be equal to largest flag, check this when adding new flag
0070 HANDLE_DI_FLAG((1 << 29), Largest)
0071 #undef DI_FLAG_LARGEST_NEEDED
0072 #endif
0073
0074 // Subprogram-specific flags kept in DISubprogram.
0075
0076 // Use this as a zero/initialization value.
0077 // For example: void foo(DISPFlags Flags = SPFlagZero).
0078 HANDLE_DISP_FLAG(0, Zero)
0079 // Virtuality is a two-bit enum field in the LSB of the word.
0080 // Values should match DW_VIRTUALITY_*.
0081 HANDLE_DISP_FLAG(1u, Virtual)
0082 HANDLE_DISP_FLAG(2u, PureVirtual)
0083 HANDLE_DISP_FLAG((1u << 2), LocalToUnit)
0084 HANDLE_DISP_FLAG((1u << 3), Definition)
0085 HANDLE_DISP_FLAG((1u << 4), Optimized)
0086 HANDLE_DISP_FLAG((1u << 5), Pure)
0087 HANDLE_DISP_FLAG((1u << 6), Elemental)
0088 HANDLE_DISP_FLAG((1u << 7), Recursive)
0089 HANDLE_DISP_FLAG((1u << 8), MainSubprogram)
0090 // May also utilize this Flag in future, when adding support
0091 // for defaulted functions
0092 HANDLE_DISP_FLAG((1u << 9), Deleted)
0093 HANDLE_DISP_FLAG((1u << 11), ObjCDirect)
0094
0095 #ifdef DISP_FLAG_LARGEST_NEEDED
0096 // Intended to be used with ADT/BitmaskEnum.h.
0097 // NOTE: Always must be equal to largest flag, check this when adding new flags.
0098 HANDLE_DISP_FLAG((1 << 11), Largest)
0099 #undef DISP_FLAG_LARGEST_NEEDED
0100 #endif
0101
0102 #undef HANDLE_DI_FLAG
0103 #undef HANDLE_DISP_FLAG