| 1 | //===-------- llvm/IR/Value.def - File that describes Values ---v-*- 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 | // This file contains descriptions of the various LLVM values. This is |
| 11 | // used as a central place for enumerating the different values. |
| 12 | // |
| 13 | //===----------------------------------------------------------------------===// |
| 14 | |
| 15 | // NOTE: NO INCLUDE GUARD DESIRED! |
| 16 | |
| 17 | // Provide definitions of macros so that users of this file do not have to |
| 18 | // define everything to use it... |
| 19 | // |
| 20 | #if !(defined HANDLE_GLOBAL_VALUE || defined HANDLE_CONSTANT || \ |
| 21 | defined HANDLE_INSTRUCTION || defined HANDLE_INLINE_ASM_VALUE || \ |
| 22 | defined HANDLE_METADATA_VALUE || defined HANDLE_VALUE || \ |
| 23 | defined HANDLE_CONSTANT_MARKER || defined HANDLE_MEMORY_VALUE) |
| 24 | #error "Missing macro definition of HANDLE_VALUE*" |
| 25 | #endif |
| 26 | |
| 27 | #ifndef HANDLE_MEMORY_VALUE |
| 28 | #define HANDLE_MEMORY_VALUE(ValueName) HANDLE_VALUE(ValueName) |
| 29 | #endif |
| 30 | |
| 31 | #ifndef HANDLE_GLOBAL_VALUE |
| 32 | #define HANDLE_GLOBAL_VALUE(ValueName) HANDLE_CONSTANT(ValueName) |
| 33 | #endif |
| 34 | |
| 35 | #ifndef HANDLE_CONSTANT |
| 36 | #define HANDLE_CONSTANT(ValueName) HANDLE_VALUE(ValueName) |
| 37 | #endif |
| 38 | |
| 39 | #ifndef HANDLE_INSTRUCTION |
| 40 | #define HANDLE_INSTRUCTION(ValueName) HANDLE_VALUE(ValueName) |
| 41 | #endif |
| 42 | |
| 43 | #ifndef HANDLE_INLINE_ASM_VALUE |
| 44 | #define HANDLE_INLINE_ASM_VALUE(ValueName) HANDLE_VALUE(ValueName) |
| 45 | #endif |
| 46 | |
| 47 | #ifndef HANDLE_METADATA_VALUE |
| 48 | #define HANDLE_METADATA_VALUE(ValueName) HANDLE_VALUE(ValueName) |
| 49 | #endif |
| 50 | |
| 51 | #ifndef HANDLE_VALUE |
| 52 | #define HANDLE_VALUE(ValueName) |
| 53 | #endif |
| 54 | |
| 55 | #ifndef HANDLE_CONSTANT_MARKER |
| 56 | #define HANDLE_CONSTANT_MARKER(MarkerName, ValueName) |
| 57 | #endif |
| 58 | |
| 59 | // Having constant first makes the range check for isa<Constant> faster |
| 60 | // and smaller by one operation. |
| 61 | |
| 62 | // Constant |
| 63 | HANDLE_GLOBAL_VALUE(Function) |
| 64 | HANDLE_GLOBAL_VALUE(GlobalAlias) |
| 65 | HANDLE_GLOBAL_VALUE(GlobalIFunc) |
| 66 | HANDLE_GLOBAL_VALUE(GlobalVariable) |
| 67 | HANDLE_CONSTANT(BlockAddress) |
| 68 | HANDLE_CONSTANT(ConstantExpr) |
| 69 | |
| 70 | // ConstantAggregate. |
| 71 | HANDLE_CONSTANT(ConstantArray) |
| 72 | HANDLE_CONSTANT(ConstantStruct) |
| 73 | HANDLE_CONSTANT(ConstantVector) |
| 74 | |
| 75 | // ConstantData. |
| 76 | HANDLE_CONSTANT(UndefValue) |
| 77 | HANDLE_CONSTANT(ConstantAggregateZero) |
| 78 | HANDLE_CONSTANT(ConstantDataArray) |
| 79 | HANDLE_CONSTANT(ConstantDataVector) |
| 80 | HANDLE_CONSTANT(ConstantInt) |
| 81 | HANDLE_CONSTANT(ConstantFP) |
| 82 | HANDLE_CONSTANT(ConstantPointerNull) |
| 83 | HANDLE_CONSTANT(ConstantTokenNone) |
| 84 | |
| 85 | HANDLE_CONSTANT_MARKER(ConstantFirstVal, Function) |
| 86 | HANDLE_CONSTANT_MARKER(ConstantLastVal, ConstantTokenNone) |
| 87 | HANDLE_CONSTANT_MARKER(ConstantDataFirstVal, UndefValue) |
| 88 | HANDLE_CONSTANT_MARKER(ConstantDataLastVal, ConstantTokenNone) |
| 89 | HANDLE_CONSTANT_MARKER(ConstantAggregateFirstVal, ConstantArray) |
| 90 | HANDLE_CONSTANT_MARKER(ConstantAggregateLastVal, ConstantVector) |
| 91 | |
| 92 | HANDLE_VALUE(Argument) |
| 93 | HANDLE_VALUE(BasicBlock) |
| 94 | |
| 95 | |
| 96 | HANDLE_METADATA_VALUE(MetadataAsValue) |
| 97 | HANDLE_INLINE_ASM_VALUE(InlineAsm) |
| 98 | |
| 99 | // FIXME: It's awkward that Value.def knows about classes in Analysis. While |
| 100 | // this doesn't introduce a strict link or include dependency, we should remove |
| 101 | // the circular dependency eventually. |
| 102 | HANDLE_MEMORY_VALUE(MemoryUse) |
| 103 | HANDLE_MEMORY_VALUE(MemoryDef) |
| 104 | HANDLE_MEMORY_VALUE(MemoryPhi) |
| 105 | |
| 106 | HANDLE_INSTRUCTION(Instruction) |
| 107 | // Enum values starting at InstructionVal are used for Instructions; |
| 108 | // don't add new values here! |
| 109 | |
| 110 | #undef HANDLE_MEMORY_VALUE |
| 111 | #undef HANDLE_GLOBAL_VALUE |
| 112 | #undef HANDLE_CONSTANT |
| 113 | #undef HANDLE_INSTRUCTION |
| 114 | #undef HANDLE_METADATA_VALUE |
| 115 | #undef HANDLE_INLINE_ASM_VALUE |
| 116 | #undef HANDLE_VALUE |
| 117 | #undef HANDLE_CONSTANT_MARKER |
| 118 | |