[llvm-commits] CVS: llvm/include/llvm/Support/ValueHolder.h

Chris Lattner lattner at cs.uiuc.edu
Sat Aug 23 14:44:01 PDT 2003


Changes in directory llvm/include/llvm/Support:

ValueHolder.h added (r1.1)

---
Log message:

Initial checkin of ValueHolder helper class


---
Diffs of the changes:

Index: llvm/include/llvm/Support/ValueHolder.h
diff -c /dev/null llvm/include/llvm/Support/ValueHolder.h:1.1
*** /dev/null	Sat Aug 23 14:43:28 2003
--- llvm/include/llvm/Support/ValueHolder.h	Sat Aug 23 14:43:18 2003
***************
*** 0 ****
--- 1,36 ----
+ //===-- llvm/Support/ValueHolder.h - Wrapper for Value's --------*- C++ -*-===//
+ //
+ // This class defines a simple subclass of User, which keeps a pointer to a
+ // Value, which automatically updates when Value::replaceAllUsesWith is called.
+ // This is useful when you have pointers to Value's in your pass, but the
+ // pointers get invalidated when some other portion of the algorithm is
+ // replacing Values with other Values.
+ //
+ //===----------------------------------------------------------------------===//
+ 
+ #ifndef LLVM_SUPPORT_VALUEHOLDER_H
+ #define LLVM_SUPPORT_VALUEHOLDER_H
+ 
+ #include "llvm/User.h"
+ 
+ struct ValueHolder : public User {
+   ValueHolder(Value *V = 0);
+ 
+   // Getters...
+   const Value *get() const { return getOperand(0); }
+   operator const Value*() const { return getOperand(0); }
+   Value *get() { return getOperand(0); }
+   operator Value*() { return getOperand(0); }
+ 
+   // Setters...
+   const ValueHolder &operator=(Value *V) {
+     setOperand(0, V);
+     return *this;
+   }
+ 
+   virtual void print(std::ostream& OS) const {
+     OS << "ValueHolder";
+   }
+ };
+ 
+ #endif





More information about the llvm-commits mailing list