aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-10-02 19:44:40 +0000
committerChris Lattner <sabre@nondot.org>2003-10-02 19:44:40 +0000
commit32002198432e8d701bca76e35a06bfbca94f0701 (patch)
treeae0356c2545ca937014140920ffe30df93d77f9d
parent0dde36c4c70e2c16be7802e978fb7dd34a7125cb (diff)
There is no reason for Value to be an AbstractTypeUser. This just makes things
significantly more complete. Instead, just make DerivedType's AbstractTypeUser's, and make Value contain a PATypeHolder. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8828 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/VMCore/Constants.cpp4
-rw-r--r--lib/VMCore/Value.cpp16
2 files changed, 2 insertions, 18 deletions
diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp
index 20f9913489..bc9196c8ce 100644
--- a/lib/VMCore/Constants.cpp
+++ b/lib/VMCore/Constants.cpp
@@ -581,7 +581,6 @@ void ConstantArray::destroyConstant() {
///
void ConstantArray::refineAbstractType(const DerivedType *OldTy,
const Type *NewTy) {
- Value::refineAbstractType(OldTy, NewTy);
if (OldTy == NewTy) return;
// Make everyone now use a constant of the new type...
@@ -650,7 +649,6 @@ void ConstantStruct::destroyConstant() {
///
void ConstantStruct::refineAbstractType(const DerivedType *OldTy,
const Type *NewTy) {
- Value::refineAbstractType(OldTy, NewTy);
if (OldTy == NewTy) return;
// Make everyone now use a constant of the new type...
@@ -694,7 +692,6 @@ void ConstantPointerNull::destroyConstant() {
///
void ConstantPointerNull::refineAbstractType(const DerivedType *OldTy,
const Type *NewTy) {
- Value::refineAbstractType(OldTy, NewTy);
if (OldTy == NewTy) return;
// Make everyone now use a constant of the new type...
@@ -828,7 +825,6 @@ void ConstantExpr::destroyConstant() {
///
void ConstantExpr::refineAbstractType(const DerivedType *OldTy,
const Type *NewTy) {
- Value::refineAbstractType(OldTy, NewTy);
if (OldTy == NewTy) return;
// FIXME: These need to use a lower-level implementation method, because the
diff --git a/lib/VMCore/Value.cpp b/lib/VMCore/Value.cpp
index 245fa482b7..d0fcafbdf0 100644
--- a/lib/VMCore/Value.cpp
+++ b/lib/VMCore/Value.cpp
@@ -21,7 +21,7 @@ static inline const Type *checkType(const Type *Ty) {
}
Value::Value(const Type *ty, ValueTy vty, const std::string &name)
- : Name(name), Ty(checkType(ty), this) {
+ : Name(name), Ty(checkType(ty)) {
VTy = vty;
}
@@ -34,7 +34,7 @@ Value::~Value() {
// a <badref>
//
if (Uses.begin() != Uses.end()) {
- std::cerr << "While deleting: " << Ty << "%" << Name << "\n";
+ std::cerr << "While deleting: " << *Ty << "%" << Name << "\n";
for (use_const_iterator I = Uses.begin(); I != Uses.end(); ++I)
std::cerr << "Use still stuck around after Def is destroyed:"
<< **I << "\n";
@@ -86,18 +86,6 @@ void Value::uncheckedReplaceAllUsesWith(Value *New) {
}
-// refineAbstractType - This function is implemented because we use
-// potentially abstract types, and these types may be resolved to more
-// concrete types after we are constructed. For the value class, we simply
-// change Ty to point to the right type. :)
-//
-void Value::refineAbstractType(const DerivedType *OldTy, const Type *NewTy) {
- assert(Ty.get() == OldTy && "Can't refine anything but my type!");
- if (OldTy == NewTy && !OldTy->isAbstract())
- Ty.removeUserFromConcrete();
- Ty = NewTy;
-}
-
void Value::killUse(User *U) {
if (U == 0) return;
unsigned i;