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