diff options
Diffstat (limited to 'include/llvm/ExecutionEngine/GenericValue.h')
-rw-r--r-- | include/llvm/ExecutionEngine/GenericValue.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/include/llvm/ExecutionEngine/GenericValue.h b/include/llvm/ExecutionEngine/GenericValue.h new file mode 100644 index 0000000000..f5e70e5fd5 --- /dev/null +++ b/include/llvm/ExecutionEngine/GenericValue.h @@ -0,0 +1,40 @@ +//===-- GenericValue.h - Represent any type of LLVM value -------*- C++ -*-===// +// +// The GenericValue class is used to represent an LLVM value of arbitrary type. +// +//===----------------------------------------------------------------------===// + + +#ifndef GENERIC_VALUE_H +#define GENERIC_VALUE_H + +#include "Support/DataTypes.h" + +typedef uint64_t PointerTy; + +union GenericValue { + bool BoolVal; + unsigned char UByteVal; + signed char SByteVal; + unsigned short UShortVal; + signed short ShortVal; + unsigned int UIntVal; + signed int IntVal; + uint64_t ULongVal; + int64_t LongVal; + double DoubleVal; + float FloatVal; + PointerTy PointerVal; + unsigned char Untyped[8]; + + GenericValue() {} + GenericValue(void *V) { + PointerVal = (PointerTy)(intptr_t)V; + } +}; + +inline GenericValue PTOGV(void *P) { return GenericValue(P); } +inline void* GVTOP(const GenericValue &GV) { + return (void*)(intptr_t)GV.PointerVal; +} +#endif |