blob: 77fdaf6b44c21ac1fe200f1ea15f37d23191ac9d [file] [log] [blame]
Chris Lattnerf7c4ace2003-08-23 19:43:16 +00001//===-- ValueHolder.cpp - Wrapper for Value implementation ----------------===//
John Criswellb576c942003-10-20 19:43:21 +00002//
3// The LLVM Compiler Infrastructure
4//
5// This file was developed by the LLVM research group and is distributed under
6// the University of Illinois Open Source License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
Chris Lattnerf7c4ace2003-08-23 19:43:16 +00009//
10// This class defines a simple subclass of User, which keeps a pointer to a
11// Value, which automatically updates when Value::replaceAllUsesWith is called.
12// This is useful when you have pointers to Value's in your pass, but the
13// pointers get invalidated when some other portion of the algorithm is
14// replacing Values with other Values.
15//
16//===----------------------------------------------------------------------===//
17
18#include "llvm/Support/ValueHolder.h"
19#include "llvm/Type.h"
20
Brian Gaeked0fde302003-11-11 22:41:34 +000021namespace llvm {
22
Chris Lattnerf7c4ace2003-08-23 19:43:16 +000023ValueHolder::ValueHolder(Value *V) : User(Type::TypeTy, Value::TypeVal) {
24 Operands.push_back(Use(V, this));
25}
Brian Gaeked0fde302003-11-11 22:41:34 +000026
27} // End llvm namespace