Back to home page

EIC code displayed by LXR

 
 

    


Warning, /include/llvm/IR/Value.def is written in an unsupported language. File is not indexed.

0001 //===-------- llvm/IR/Value.def - File that describes Values ---v-*- 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 // This file contains descriptions of the various LLVM values.  This is
0010 // used as a central place for enumerating the different values.
0011 //
0012 //===----------------------------------------------------------------------===//
0013 
0014 // NOTE: NO INCLUDE GUARD DESIRED!
0015 
0016 // Provide definitions of macros so that users of this file do not have to
0017 // define everything to use it...
0018 //
0019 #if !(defined HANDLE_GLOBAL_VALUE || defined HANDLE_CONSTANT ||                \
0020       defined HANDLE_INSTRUCTION || defined HANDLE_INLINE_ASM_VALUE ||         \
0021       defined HANDLE_METADATA_VALUE || defined HANDLE_VALUE ||                 \
0022       defined HANDLE_CONSTANT_MARKER || defined HANDLE_MEMORY_VALUE)
0023 #error "Missing macro definition of HANDLE_VALUE*"
0024 #endif
0025 
0026 // If the LLVM_C_API macro is set, then values handled via HANDLE_*_EXCLUDE_LLVM_C_API will not be expanded in areas the HANDLE_* macro is used. If it is not set, then HANDLE_*_EXCLUDE_LLVM_C_API values are handled normally as their HANDLE_* counterparts.
0027 #ifndef LLVM_C_API
0028 #define LLVM_C_API 0
0029 #endif
0030 
0031 #ifndef HANDLE_MEMORY_VALUE
0032 #define HANDLE_MEMORY_VALUE(ValueName) HANDLE_VALUE(ValueName)
0033 #endif
0034 
0035 #ifndef HANDLE_GLOBAL_VALUE
0036 #define HANDLE_GLOBAL_VALUE(ValueName) HANDLE_CONSTANT(ValueName)
0037 #endif
0038 
0039 #ifndef HANDLE_CONSTANT
0040 #define HANDLE_CONSTANT(ValueName) HANDLE_VALUE(ValueName)
0041 #endif
0042 
0043 #ifndef HANDLE_INSTRUCTION
0044 #define HANDLE_INSTRUCTION(ValueName) HANDLE_VALUE(ValueName)
0045 #endif
0046 
0047 #ifndef HANDLE_INLINE_ASM_VALUE
0048 #define HANDLE_INLINE_ASM_VALUE(ValueName) HANDLE_VALUE(ValueName)
0049 #endif
0050 
0051 #ifndef HANDLE_METADATA_VALUE
0052 #define HANDLE_METADATA_VALUE(ValueName) HANDLE_VALUE(ValueName)
0053 #endif
0054 
0055 #ifndef HANDLE_VALUE
0056 #define HANDLE_VALUE(ValueName)
0057 #endif
0058 
0059 #ifndef HANDLE_CONSTANT_MARKER
0060 #define HANDLE_CONSTANT_MARKER(MarkerName, ValueName)
0061 #endif
0062 
0063 #ifndef HANDLE_CONSTANT_EXCLUDE_LLVM_C_API
0064 #define HANDLE_CONSTANT_EXCLUDE_LLVM_C_API(ValueName) HANDLE_CONSTANT(ValueName)
0065 #endif
0066 
0067 #if LLVM_C_API
0068 #undef HANDLE_CONSTANT_EXCLUDE_LLVM_C_API
0069 #define HANDLE_CONSTANT_EXCLUDE_LLVM_C_API(ValueName)
0070 #endif
0071 
0072 // Having constant first makes the range check for isa<Constant> faster
0073 // and smaller by one operation.
0074 
0075 // Constant
0076 HANDLE_GLOBAL_VALUE(Function)
0077 HANDLE_GLOBAL_VALUE(GlobalAlias)
0078 HANDLE_GLOBAL_VALUE(GlobalIFunc)
0079 HANDLE_GLOBAL_VALUE(GlobalVariable)
0080 HANDLE_CONSTANT(BlockAddress)
0081 HANDLE_CONSTANT(ConstantExpr)
0082 HANDLE_CONSTANT_EXCLUDE_LLVM_C_API(DSOLocalEquivalent)
0083 HANDLE_CONSTANT_EXCLUDE_LLVM_C_API(NoCFIValue)
0084 HANDLE_CONSTANT(ConstantPtrAuth)
0085 
0086 // ConstantAggregate.
0087 HANDLE_CONSTANT(ConstantArray)
0088 HANDLE_CONSTANT(ConstantStruct)
0089 HANDLE_CONSTANT(ConstantVector)
0090 
0091 // ConstantData.
0092 HANDLE_CONSTANT(UndefValue)
0093 HANDLE_CONSTANT(PoisonValue)
0094 HANDLE_CONSTANT(ConstantAggregateZero)
0095 HANDLE_CONSTANT(ConstantDataArray)
0096 HANDLE_CONSTANT(ConstantDataVector)
0097 HANDLE_CONSTANT(ConstantInt)
0098 HANDLE_CONSTANT(ConstantFP)
0099 HANDLE_CONSTANT(ConstantTargetNone)
0100 HANDLE_CONSTANT(ConstantPointerNull)
0101 HANDLE_CONSTANT(ConstantTokenNone)
0102 
0103 HANDLE_CONSTANT_MARKER(ConstantFirstVal, Function)
0104 HANDLE_CONSTANT_MARKER(ConstantLastVal, ConstantTokenNone)
0105 HANDLE_CONSTANT_MARKER(ConstantDataFirstVal, UndefValue)
0106 HANDLE_CONSTANT_MARKER(ConstantDataLastVal, ConstantTokenNone)
0107 HANDLE_CONSTANT_MARKER(ConstantAggregateFirstVal, ConstantArray)
0108 HANDLE_CONSTANT_MARKER(ConstantAggregateLastVal, ConstantVector)
0109 
0110 HANDLE_VALUE(Argument)
0111 HANDLE_VALUE(BasicBlock)
0112 
0113 
0114 HANDLE_METADATA_VALUE(MetadataAsValue)
0115 HANDLE_INLINE_ASM_VALUE(InlineAsm)
0116 
0117 // FIXME: It's awkward that Value.def knows about classes in Analysis. While
0118 // this doesn't introduce a strict link or include dependency, we should remove
0119 // the circular dependency eventually.
0120 HANDLE_MEMORY_VALUE(MemoryUse)
0121 HANDLE_MEMORY_VALUE(MemoryDef)
0122 HANDLE_MEMORY_VALUE(MemoryPhi)
0123 
0124 HANDLE_INSTRUCTION(Instruction)
0125 // Enum values starting at InstructionVal are used for Instructions;
0126 // don't add new values here!
0127 
0128 #undef HANDLE_MEMORY_VALUE
0129 #undef HANDLE_GLOBAL_VALUE
0130 #undef HANDLE_CONSTANT
0131 #undef HANDLE_INSTRUCTION
0132 #undef HANDLE_METADATA_VALUE
0133 #undef HANDLE_INLINE_ASM_VALUE
0134 #undef HANDLE_VALUE
0135 #undef HANDLE_CONSTANT_MARKER
0136 #undef HANDLE_CONSTANT_EXCLUDE_LLVM_C_API
0137 #undef LLVM_C_API