From e1e922e09007f15aa01b438e5cf6a69c5a67afe4 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 16 Oct 2004 18:05:25 +0000 Subject: [PATCH] Add new UndefValue class git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17035 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Constants.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/include/llvm/Constants.h b/include/llvm/Constants.h index 5cfcf1d305c..6a59cfa732b 100644 --- a/include/llvm/Constants.h +++ b/include/llvm/Constants.h @@ -626,6 +626,37 @@ public: } }; + +//===----------------------------------------------------------------------===// +/// UndefValue - 'undef' values are things that do not have specified contents. +/// These are used for a variety of purposes, including global variable +/// initializers and operands to instructions. 'undef' values can occur with +/// any type. +/// +class UndefValue : public Constant { + friend struct ConstantCreator; + UndefValue(const UndefValue &); // DO NOT IMPLEMENT +protected: + UndefValue(const Type *T) : Constant(T, UndefValueVal) {} +public: + /// get() - Static factory methods - Return an 'undef' object of the specified + /// type. + /// + static UndefValue *get(const Type *T); + + /// isNullValue - Return true if this is the value that would be returned by + /// getNullValue. + virtual bool isNullValue() const { return false; } + + virtual void destroyConstant(); + + /// Methods for support type inquiry through isa, cast, and dyn_cast: + static inline bool classof(const UndefValue *) { return true; } + static bool classof(const Value *V) { + return V->getValueType() == UndefValueVal; + } +}; + } // End llvm namespace #endif