mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-15 05:24:01 +00:00
[C++11] Expand and eliminate the LLVM_ENUM_INT_TYPE() macro
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@202607 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -41,7 +41,7 @@ template <typename PointerTy, unsigned IntBits, typename IntType=unsigned,
|
|||||||
typename PtrTraits = PointerLikeTypeTraits<PointerTy> >
|
typename PtrTraits = PointerLikeTypeTraits<PointerTy> >
|
||||||
class PointerIntPair {
|
class PointerIntPair {
|
||||||
intptr_t Value;
|
intptr_t Value;
|
||||||
enum LLVM_ENUM_INT_TYPE(uintptr_t) {
|
enum : uintptr_t {
|
||||||
/// PointerBitMask - The bits that come from the pointer.
|
/// PointerBitMask - The bits that come from the pointer.
|
||||||
PointerBitMask =
|
PointerBitMask =
|
||||||
~(uintptr_t)(((intptr_t)1 << PtrTraits::NumLowBitsAvailable)-1),
|
~(uintptr_t)(((intptr_t)1 << PtrTraits::NumLowBitsAvailable)-1),
|
||||||
|
@ -254,7 +254,7 @@ namespace llvm {
|
|||||||
/// SUnit - Scheduling unit. This is a node in the scheduling DAG.
|
/// SUnit - Scheduling unit. This is a node in the scheduling DAG.
|
||||||
class SUnit {
|
class SUnit {
|
||||||
private:
|
private:
|
||||||
enum LLVM_ENUM_INT_TYPE(unsigned) { BoundaryID = ~0u };
|
enum : unsigned { BoundaryID = ~0u };
|
||||||
|
|
||||||
SDNode *Node; // Representative node.
|
SDNode *Node; // Representative node.
|
||||||
MachineInstr *Instr; // Alternatively, a MachineInstr.
|
MachineInstr *Instr; // Alternatively, a MachineInstr.
|
||||||
|
@ -202,7 +202,7 @@ public:
|
|||||||
/// index `1'.
|
/// index `1'.
|
||||||
class AttributeSet {
|
class AttributeSet {
|
||||||
public:
|
public:
|
||||||
enum AttrIndex LLVM_ENUM_INT_TYPE(unsigned) {
|
enum AttrIndex : unsigned {
|
||||||
ReturnIndex = 0U,
|
ReturnIndex = 0U,
|
||||||
FunctionIndex = ~0U
|
FunctionIndex = ~0U
|
||||||
};
|
};
|
||||||
|
@ -197,7 +197,7 @@ public:
|
|||||||
// These are helper methods for dealing with flags in the INLINEASM SDNode
|
// These are helper methods for dealing with flags in the INLINEASM SDNode
|
||||||
// in the backend.
|
// in the backend.
|
||||||
|
|
||||||
enum LLVM_ENUM_INT_TYPE(uint32_t) {
|
enum : uint32_t {
|
||||||
// Fixed operands on an INLINEASM SDNode.
|
// Fixed operands on an INLINEASM SDNode.
|
||||||
Op_InputChain = 0,
|
Op_InputChain = 0,
|
||||||
Op_AsmString = 1,
|
Op_AsmString = 1,
|
||||||
|
@ -28,7 +28,7 @@ template<typename ValueSubClass, typename ItemParentClass>
|
|||||||
class SymbolTableListTraits;
|
class SymbolTableListTraits;
|
||||||
|
|
||||||
|
|
||||||
enum LLVMConstants LLVM_ENUM_INT_TYPE(uint32_t) {
|
enum LLVMConstants : uint32_t {
|
||||||
DEBUG_METADATA_VERSION = 1 // Current debug info version number.
|
DEBUG_METADATA_VERSION = 1 // Current debug info version number.
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ public:
|
|||||||
|
|
||||||
/// These are the section type and attributes fields. A MachO section can
|
/// These are the section type and attributes fields. A MachO section can
|
||||||
/// have only one Type, but can have any of the attributes specified.
|
/// have only one Type, but can have any of the attributes specified.
|
||||||
enum LLVM_ENUM_INT_TYPE(uint32_t) {
|
enum : uint32_t {
|
||||||
// TypeAndAttributes bitmasks.
|
// TypeAndAttributes bitmasks.
|
||||||
SECTION_TYPE = 0x000000FFU,
|
SECTION_TYPE = 0x000000FFU,
|
||||||
SECTION_ATTRIBUTES = 0xFFFFFF00U,
|
SECTION_ATTRIBUTES = 0xFFFFFF00U,
|
||||||
|
@ -28,7 +28,7 @@ private:
|
|||||||
unsigned Register; // gcc/gdb register number.
|
unsigned Register; // gcc/gdb register number.
|
||||||
int Offset; // Displacement if not register.
|
int Offset; // Displacement if not register.
|
||||||
public:
|
public:
|
||||||
enum LLVM_ENUM_INT_TYPE(uint32_t) {
|
enum : uint32_t {
|
||||||
// The target register number for an abstract frame pointer. The value is
|
// The target register number for an abstract frame pointer. The value is
|
||||||
// an arbitrary value that doesn't collide with any real target register.
|
// an arbitrary value that doesn't collide with any real target register.
|
||||||
VirtualFP = ~0U
|
VirtualFP = ~0U
|
||||||
|
@ -75,7 +75,7 @@ class BasicSymbolRef {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
// FIXME: should we add a SF_Text?
|
// FIXME: should we add a SF_Text?
|
||||||
enum Flags LLVM_ENUM_INT_TYPE(unsigned) {
|
enum Flags : unsigned {
|
||||||
SF_None = 0,
|
SF_None = 0,
|
||||||
SF_Undefined = 1U << 0, // Symbol is defined in another object file
|
SF_Undefined = 1U << 0, // Symbol is defined in another object file
|
||||||
SF_Global = 1U << 1, // Global symbol
|
SF_Global = 1U << 1, // Global symbol
|
||||||
|
@ -222,7 +222,7 @@ namespace COFF {
|
|||||||
uint32_t Characteristics;
|
uint32_t Characteristics;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum SectionCharacteristics LLVM_ENUM_INT_TYPE(uint32_t) {
|
enum SectionCharacteristics : uint32_t {
|
||||||
SC_Invalid = 0xffffffff,
|
SC_Invalid = 0xffffffff,
|
||||||
|
|
||||||
IMAGE_SCN_TYPE_NO_PAD = 0x00000008,
|
IMAGE_SCN_TYPE_NO_PAD = 0x00000008,
|
||||||
|
@ -365,24 +365,6 @@
|
|||||||
# define LLVM_STATIC_ASSERT(expr, msg)
|
# define LLVM_STATIC_ASSERT(expr, msg)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/// \macro LLVM_ENUM_INT_TYPE
|
|
||||||
/// \brief Expands to colon followed by the given integral type on compilers
|
|
||||||
/// which support C++11 strong enums. This can be used to make enums unsigned
|
|
||||||
/// with MSVC.
|
|
||||||
#if __has_feature(cxx_strong_enums) || LLVM_MSC_PREREQ(1600)
|
|
||||||
# define LLVM_ENUM_INT_TYPE(intty) : intty
|
|
||||||
#else
|
|
||||||
# define LLVM_ENUM_INT_TYPE(intty)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/// \brief Does the compiler support C++11 semantics for strongly typed forward
|
|
||||||
/// declared enums?
|
|
||||||
#if __has_feature(cxx_strong_enums) || LLVM_MSC_PREREQ(1700)
|
|
||||||
#define LLVM_HAS_STRONG_ENUMS 1
|
|
||||||
#else
|
|
||||||
#define LLVM_HAS_STRONG_ENUMS 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/// \brief Does the compiler support generalized initializers (using braced
|
/// \brief Does the compiler support generalized initializers (using braced
|
||||||
/// lists and std::initializer_list). While clang may claim it supports general
|
/// lists and std::initializer_list). While clang may claim it supports general
|
||||||
/// initializers, if we're using MSVC's headers, we might not have a usable
|
/// initializers, if we're using MSVC's headers, we might not have a usable
|
||||||
|
@ -24,7 +24,7 @@ namespace llvm {
|
|||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// Debug info constants.
|
// Debug info constants.
|
||||||
|
|
||||||
enum LLVM_ENUM_INT_TYPE(uint32_t) {
|
enum : uint32_t {
|
||||||
LLVMDebugVersion = (12 << 16), // Current version of debug information.
|
LLVMDebugVersion = (12 << 16), // Current version of debug information.
|
||||||
LLVMDebugVersion11 = (11 << 16), // Constant for version 11.
|
LLVMDebugVersion11 = (11 << 16), // Constant for version 11.
|
||||||
LLVMDebugVersion10 = (10 << 16), // Constant for version 10.
|
LLVMDebugVersion10 = (10 << 16), // Constant for version 10.
|
||||||
@ -47,7 +47,7 @@ namespace dwarf {
|
|||||||
// Do not mix the following two enumerations sets. DW_TAG_invalid changes the
|
// Do not mix the following two enumerations sets. DW_TAG_invalid changes the
|
||||||
// enumeration base type.
|
// enumeration base type.
|
||||||
|
|
||||||
enum LLVMConstants LLVM_ENUM_INT_TYPE(uint32_t) {
|
enum LLVMConstants : uint32_t {
|
||||||
// llvm mock tags
|
// llvm mock tags
|
||||||
DW_TAG_invalid = ~0U, // Tag for invalid results.
|
DW_TAG_invalid = ~0U, // Tag for invalid results.
|
||||||
|
|
||||||
@ -68,7 +68,7 @@ enum LLVMConstants LLVM_ENUM_INT_TYPE(uint32_t) {
|
|||||||
const uint32_t DW_CIE_ID = UINT32_MAX;
|
const uint32_t DW_CIE_ID = UINT32_MAX;
|
||||||
const uint64_t DW64_CIE_ID = UINT64_MAX;
|
const uint64_t DW64_CIE_ID = UINT64_MAX;
|
||||||
|
|
||||||
enum Tag LLVM_ENUM_INT_TYPE(uint16_t) {
|
enum Tag : uint16_t {
|
||||||
DW_TAG_array_type = 0x01,
|
DW_TAG_array_type = 0x01,
|
||||||
DW_TAG_class_type = 0x02,
|
DW_TAG_class_type = 0x02,
|
||||||
DW_TAG_entry_point = 0x03,
|
DW_TAG_entry_point = 0x03,
|
||||||
@ -175,7 +175,7 @@ inline bool isType(Tag T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enum Attribute LLVM_ENUM_INT_TYPE(uint16_t) {
|
enum Attribute : uint16_t {
|
||||||
// Attributes
|
// Attributes
|
||||||
DW_AT_sibling = 0x01,
|
DW_AT_sibling = 0x01,
|
||||||
DW_AT_location = 0x02,
|
DW_AT_location = 0x02,
|
||||||
@ -341,7 +341,7 @@ enum Attribute LLVM_ENUM_INT_TYPE(uint16_t) {
|
|||||||
DW_AT_APPLE_property = 0x3fed
|
DW_AT_APPLE_property = 0x3fed
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Form LLVM_ENUM_INT_TYPE(uint16_t) {
|
enum Form : uint16_t {
|
||||||
// Attribute form encodings
|
// Attribute form encodings
|
||||||
DW_FORM_addr = 0x01,
|
DW_FORM_addr = 0x01,
|
||||||
DW_FORM_block2 = 0x03,
|
DW_FORM_block2 = 0x03,
|
||||||
|
@ -651,7 +651,7 @@ enum {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// ARM Specific e_flags
|
// ARM Specific e_flags
|
||||||
enum LLVM_ENUM_INT_TYPE(unsigned) {
|
enum : unsigned {
|
||||||
EF_ARM_SOFT_FLOAT = 0x00000200U,
|
EF_ARM_SOFT_FLOAT = 0x00000200U,
|
||||||
EF_ARM_VFP_FLOAT = 0x00000400U,
|
EF_ARM_VFP_FLOAT = 0x00000400U,
|
||||||
EF_ARM_EABI_UNKNOWN = 0x00000000U,
|
EF_ARM_EABI_UNKNOWN = 0x00000000U,
|
||||||
@ -801,7 +801,7 @@ enum {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Mips Specific e_flags
|
// Mips Specific e_flags
|
||||||
enum LLVM_ENUM_INT_TYPE(unsigned) {
|
enum : unsigned {
|
||||||
EF_MIPS_NOREORDER = 0x00000001, // Don't reorder instructions
|
EF_MIPS_NOREORDER = 0x00000001, // Don't reorder instructions
|
||||||
EF_MIPS_PIC = 0x00000002, // Position independent code
|
EF_MIPS_PIC = 0x00000002, // Position independent code
|
||||||
EF_MIPS_CPIC = 0x00000004, // Call object with Position independent code
|
EF_MIPS_CPIC = 0x00000004, // Call object with Position independent code
|
||||||
@ -1222,7 +1222,7 @@ enum {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Section types.
|
// Section types.
|
||||||
enum LLVM_ENUM_INT_TYPE(unsigned) {
|
enum : unsigned {
|
||||||
SHT_NULL = 0, // No associated section (inactive entry).
|
SHT_NULL = 0, // No associated section (inactive entry).
|
||||||
SHT_PROGBITS = 1, // Program-defined contents.
|
SHT_PROGBITS = 1, // Program-defined contents.
|
||||||
SHT_SYMTAB = 2, // Symbol table.
|
SHT_SYMTAB = 2, // Symbol table.
|
||||||
@ -1270,7 +1270,7 @@ enum LLVM_ENUM_INT_TYPE(unsigned) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Section flags.
|
// Section flags.
|
||||||
enum LLVM_ENUM_INT_TYPE(unsigned) {
|
enum : unsigned {
|
||||||
// Section data should be writable during execution.
|
// Section data should be writable during execution.
|
||||||
SHF_WRITE = 0x1,
|
SHF_WRITE = 0x1,
|
||||||
|
|
||||||
@ -1362,7 +1362,7 @@ enum LLVM_ENUM_INT_TYPE(unsigned) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Section Group Flags
|
// Section Group Flags
|
||||||
enum LLVM_ENUM_INT_TYPE(unsigned) {
|
enum : unsigned {
|
||||||
GRP_COMDAT = 0x1,
|
GRP_COMDAT = 0x1,
|
||||||
GRP_MASKOS = 0x0ff00000,
|
GRP_MASKOS = 0x0ff00000,
|
||||||
GRP_MASKPROC = 0xf0000000
|
GRP_MASKPROC = 0xf0000000
|
||||||
@ -1584,7 +1584,7 @@ enum {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Segment flag bits.
|
// Segment flag bits.
|
||||||
enum LLVM_ENUM_INT_TYPE(unsigned) {
|
enum : unsigned {
|
||||||
PF_X = 1, // Execute
|
PF_X = 1, // Execute
|
||||||
PF_W = 2, // Write
|
PF_W = 2, // Write
|
||||||
PF_R = 4, // Read
|
PF_R = 4, // Read
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
namespace llvm {
|
namespace llvm {
|
||||||
namespace MachO {
|
namespace MachO {
|
||||||
// Enums from <mach-o/loader.h>
|
// Enums from <mach-o/loader.h>
|
||||||
enum LLVM_ENUM_INT_TYPE(uint32_t) {
|
enum : uint32_t {
|
||||||
// Constants for the "magic" field in llvm::MachO::mach_header and
|
// Constants for the "magic" field in llvm::MachO::mach_header and
|
||||||
// llvm::MachO::mach_header_64
|
// llvm::MachO::mach_header_64
|
||||||
MH_MAGIC = 0xFEEDFACEu,
|
MH_MAGIC = 0xFEEDFACEu,
|
||||||
@ -76,12 +76,12 @@ namespace llvm {
|
|||||||
MH_DEAD_STRIPPABLE_DYLIB = 0x00400000u
|
MH_DEAD_STRIPPABLE_DYLIB = 0x00400000u
|
||||||
};
|
};
|
||||||
|
|
||||||
enum LLVM_ENUM_INT_TYPE(uint32_t) {
|
enum : uint32_t {
|
||||||
// Flags for the "cmd" field in llvm::MachO::load_command
|
// Flags for the "cmd" field in llvm::MachO::load_command
|
||||||
LC_REQ_DYLD = 0x80000000u
|
LC_REQ_DYLD = 0x80000000u
|
||||||
};
|
};
|
||||||
|
|
||||||
enum LoadCommandType LLVM_ENUM_INT_TYPE(uint32_t) {
|
enum LoadCommandType : uint32_t {
|
||||||
// Constants for the "cmd" field in llvm::MachO::load_command
|
// Constants for the "cmd" field in llvm::MachO::load_command
|
||||||
LC_SEGMENT = 0x00000001u,
|
LC_SEGMENT = 0x00000001u,
|
||||||
LC_SYMTAB = 0x00000002u,
|
LC_SYMTAB = 0x00000002u,
|
||||||
@ -131,7 +131,7 @@ namespace llvm {
|
|||||||
LC_LINKER_OPTIONS = 0x0000002Du
|
LC_LINKER_OPTIONS = 0x0000002Du
|
||||||
};
|
};
|
||||||
|
|
||||||
enum LLVM_ENUM_INT_TYPE(uint32_t) {
|
enum : uint32_t {
|
||||||
// Constant bits for the "flags" field in llvm::MachO::segment_command
|
// Constant bits for the "flags" field in llvm::MachO::segment_command
|
||||||
SG_HIGHVM = 0x1u,
|
SG_HIGHVM = 0x1u,
|
||||||
SG_FVMLIB = 0x2u,
|
SG_FVMLIB = 0x2u,
|
||||||
@ -174,7 +174,7 @@ namespace llvm {
|
|||||||
S_THREAD_LOCAL_INIT_FUNCTION_POINTERS = 0x15u
|
S_THREAD_LOCAL_INIT_FUNCTION_POINTERS = 0x15u
|
||||||
};
|
};
|
||||||
|
|
||||||
enum LLVM_ENUM_INT_TYPE(uint32_t) {
|
enum : uint32_t {
|
||||||
// Constant masks for the "flags[31:24]" field in llvm::MachO::section and
|
// Constant masks for the "flags[31:24]" field in llvm::MachO::section and
|
||||||
// llvm::MachO::section_64 (mask "flags" with SECTION_ATTRIBUTES_USR)
|
// llvm::MachO::section_64 (mask "flags" with SECTION_ATTRIBUTES_USR)
|
||||||
S_ATTR_PURE_INSTRUCTIONS = 0x80000000u,
|
S_ATTR_PURE_INSTRUCTIONS = 0x80000000u,
|
||||||
@ -348,7 +348,7 @@ namespace llvm {
|
|||||||
N_LENG = 0xFEu
|
N_LENG = 0xFEu
|
||||||
};
|
};
|
||||||
|
|
||||||
enum LLVM_ENUM_INT_TYPE(uint32_t) {
|
enum : uint32_t {
|
||||||
// Constant values for the r_symbolnum field in an
|
// Constant values for the r_symbolnum field in an
|
||||||
// llvm::MachO::relocation_info structure when r_extern is 0.
|
// llvm::MachO::relocation_info structure when r_extern is 0.
|
||||||
R_ABS = 0,
|
R_ABS = 0,
|
||||||
@ -893,7 +893,7 @@ namespace llvm {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Enums from <mach/machine.h>
|
// Enums from <mach/machine.h>
|
||||||
enum LLVM_ENUM_INT_TYPE(uint32_t) {
|
enum : uint32_t {
|
||||||
// Capability bits used in the definition of cpu_type.
|
// Capability bits used in the definition of cpu_type.
|
||||||
CPU_ARCH_MASK = 0xff000000, // Mask for architecture bits
|
CPU_ARCH_MASK = 0xff000000, // Mask for architecture bits
|
||||||
CPU_ARCH_ABI64 = 0x01000000 // 64 bit ABI
|
CPU_ARCH_ABI64 = 0x01000000 // 64 bit ABI
|
||||||
@ -913,7 +913,7 @@ namespace llvm {
|
|||||||
CPU_TYPE_POWERPC64 = CPU_TYPE_POWERPC | CPU_ARCH_ABI64
|
CPU_TYPE_POWERPC64 = CPU_TYPE_POWERPC | CPU_ARCH_ABI64
|
||||||
};
|
};
|
||||||
|
|
||||||
enum LLVM_ENUM_INT_TYPE(uint32_t) {
|
enum : uint32_t {
|
||||||
// Capability bits used in the definition of cpusubtype.
|
// Capability bits used in the definition of cpusubtype.
|
||||||
CPU_SUB_TYPE_MASK = 0xff000000, // Mask for architecture bits
|
CPU_SUB_TYPE_MASK = 0xff000000, // Mask for architecture bits
|
||||||
CPU_SUB_TYPE_LIB64 = 0x80000000, // 64 bit libraries
|
CPU_SUB_TYPE_LIB64 = 0x80000000, // 64 bit libraries
|
||||||
|
@ -144,7 +144,7 @@ namespace {
|
|||||||
// not be erased.
|
// not be erased.
|
||||||
bool isBulkSpilling;
|
bool isBulkSpilling;
|
||||||
|
|
||||||
enum LLVM_ENUM_INT_TYPE(unsigned) {
|
enum : unsigned {
|
||||||
spillClean = 1,
|
spillClean = 1,
|
||||||
spillDirty = 100,
|
spillDirty = 100,
|
||||||
spillImpossible = ~0u
|
spillImpossible = ~0u
|
||||||
|
@ -247,7 +247,7 @@ class RAGreedy : public MachineFunctionPass,
|
|||||||
/// class.
|
/// class.
|
||||||
SmallVector<GlobalSplitCandidate, 32> GlobalCand;
|
SmallVector<GlobalSplitCandidate, 32> GlobalCand;
|
||||||
|
|
||||||
enum LLVM_ENUM_INT_TYPE(unsigned) { NoCand = ~0u };
|
enum : unsigned { NoCand = ~0u };
|
||||||
|
|
||||||
/// Candidate map. Each edge bundle is assigned to a GlobalCand entry, or to
|
/// Candidate map. Each edge bundle is assigned to a GlobalCand entry, or to
|
||||||
/// NoCand which indicates the stack interval.
|
/// NoCand which indicates the stack interval.
|
||||||
|
Reference in New Issue
Block a user