summaryrefslogtreecommitdiffstats
path: root/lib/Transforms
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-02-01 01:22:56 +0000
committerChris Lattner <sabre@nondot.org>2005-02-01 01:22:56 +0000
commit5a874472869b6d2be52ba25b3dd335d784d04e31 (patch)
treea3fc4a342e809bf6d7b92b105b3b1ed6266e33fb /lib/Transforms
parenta26619748932b146a09773d51465d7b7dcdb7dd2 (diff)
downloadexternal_llvm-5a874472869b6d2be52ba25b3dd335d784d04e31.zip
external_llvm-5a874472869b6d2be52ba25b3dd335d784d04e31.tar.gz
external_llvm-5a874472869b6d2be52ba25b3dd335d784d04e31.tar.bz2
Hacks to make this ugly ugly code work with the new use lists.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19957 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms')
-rw-r--r--lib/Transforms/ExprTypeConvert.cpp29
1 files changed, 12 insertions, 17 deletions
diff --git a/lib/Transforms/ExprTypeConvert.cpp b/lib/Transforms/ExprTypeConvert.cpp
index 5822124..675ad7b 100644
--- a/lib/Transforms/ExprTypeConvert.cpp
+++ b/lib/Transforms/ExprTypeConvert.cpp
@@ -539,13 +539,14 @@ Value *llvm::ConvertExpressionToType(Value *V, const Type *Ty,
VMC.ExprMap[I] = Res;
- unsigned NumUses = I->use_size();
+ //// WTF is this code! FIXME: remove this.
+ unsigned NumUses = I->getNumUses();
for (unsigned It = 0; It < NumUses; ) {
unsigned OldSize = NumUses;
Value::use_iterator UI = I->use_begin();
std::advance(UI, It);
ConvertOperandToType(*UI, I, Res, VMC, TD);
- NumUses = I->use_size();
+ NumUses = I->getNumUses();
if (NumUses == OldSize) ++It;
}
@@ -898,13 +899,14 @@ void llvm::ConvertValueToNewType(Value *V, Value *NewVal, ValueMapCache &VMC,
const TargetData &TD) {
ValueHandle VH(VMC, V);
- unsigned NumUses = V->use_size();
+ // FIXME: This is horrible!
+ unsigned NumUses = V->getNumUses();
for (unsigned It = 0; It < NumUses; ) {
unsigned OldSize = NumUses;
Value::use_iterator UI = V->use_begin();
std::advance(UI, It);
ConvertOperandToType(*UI, V, NewVal, VMC, TD);
- NumUses = V->use_size();
+ NumUses = V->getNumUses();
if (NumUses == OldSize) ++It;
}
}
@@ -1237,22 +1239,15 @@ static void ConvertOperandToType(User *U, Value *OldVal, Value *NewVal,
if (I->getType() != Res->getType())
ConvertValueToNewType(I, Res, VMC, TD);
else {
- bool FromStart = true;
- Value::use_iterator UI;
- while (1) {
- if (FromStart) UI = I->use_begin();
- if (UI == I->use_end()) break;
-
+ for (Value::use_iterator UI = I->use_begin(), E = I->use_end();
+ UI != E; )
if (isa<ValueHandle>(*UI)) {
++UI;
- FromStart = false;
} else {
- User *U = *UI;
- if (!FromStart) --UI;
- U->replaceUsesOfWith(I, Res);
- if (!FromStart) ++UI;
+ Use &U = UI.getUse();
+ ++UI; // Do not invalidate UI.
+ U.set(Res);
}
- }
}
}
@@ -1301,7 +1296,7 @@ ValueHandle::~ValueHandle() {
RecursiveDelete(Cache, dyn_cast<Instruction>(V));
} else {
//DEBUG(std::cerr << "VH RELEASING: " << (void*)Operands[0].get() << " "
- // << Operands[0]->use_size() << " " << Operands[0]);
+ // << Operands[0]->getNumUses() << " " << Operands[0]);
}
}