X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTransforms%2FUtils%2FValueMapper.cpp;h=87ce631ca62648cd11791d2ad44447820c6ebbd5;hb=170f06ebe2e80ce8bda87425081541493056fb10;hp=2a79b72ba1dd5abd3c8d869a613c6bfc0d2c215d;hpb=f42fae16745c6534c0d9619103dfbb3e299182e1;p=oota-llvm.git diff --git a/lib/Transforms/Utils/ValueMapper.cpp b/lib/Transforms/Utils/ValueMapper.cpp index 2a79b72ba1d..87ce631ca62 100644 --- a/lib/Transforms/Utils/ValueMapper.cpp +++ b/lib/Transforms/Utils/ValueMapper.cpp @@ -12,17 +12,15 @@ // //===----------------------------------------------------------------------===// -#include "llvm/Transforms/Utils/ValueMapper.h" -#include "llvm/DerivedTypes.h" // For getNullValue(Type::Int32Ty) +#include "ValueMapper.h" +#include "llvm/Type.h" #include "llvm/Constants.h" #include "llvm/Function.h" -#include "llvm/IntrinsicInst.h" #include "llvm/Metadata.h" #include "llvm/ADT/SmallVector.h" -#include "llvm/Support/ErrorHandling.h" using namespace llvm; -Value *llvm::MapValue(const Value *V, ValueMapTy &VM) { +Value *llvm::MapValue(const Value *V, ValueToValueMapTy &VM) { Value *&VMSlot = VM[V]; if (VMSlot) return VMSlot; // Does it exist in the map yet? @@ -32,14 +30,13 @@ Value *llvm::MapValue(const Value *V, ValueMapTy &VM) { // Global values and non-function-local metadata do not need to be seeded into // the ValueMap if they are using the identity mapping. if (isa(V) || isa(V) || isa(V) || - (isa(V) && !dyn_cast(V)->isFunctionLocal())) + (isa(V) && !cast(V)->isFunctionLocal())) return VMSlot = const_cast(V); - if (isa(V)) { - const MDNode *MD = dyn_cast(V); + if (const MDNode *MD = dyn_cast(V)) { SmallVector Elts; - for (unsigned i = 0; i != MD->getNumOperands(); i++) - Elts.push_back(MD->getOperand(i) ? MapValue(MD->getOperand(i), VM) : NULL); + for (unsigned i = 0, e = MD->getNumOperands(); i != e; ++i) + Elts.push_back(MD->getOperand(i) ? MapValue(MD->getOperand(i), VM) : 0); return VM[V] = MDNode::get(V->getContext(), Elts.data(), Elts.size()); } @@ -121,20 +118,16 @@ Value *llvm::MapValue(const Value *V, ValueMapTy &VM) { return VM[V] = C; } - if (BlockAddress *BA = dyn_cast(C)) { - Function *F = cast(MapValue(BA->getFunction(), VM)); - BasicBlock *BB = cast_or_null(MapValue(BA->getBasicBlock(),VM)); - return VM[V] = BlockAddress::get(F, BB ? BB : BA->getBasicBlock()); - } - - llvm_unreachable("Unknown type of constant!"); - return 0; + BlockAddress *BA = cast(C); + Function *F = cast(MapValue(BA->getFunction(), VM)); + BasicBlock *BB = cast_or_null(MapValue(BA->getBasicBlock(),VM)); + return VM[V] = BlockAddress::get(F, BB ? BB : BA->getBasicBlock()); } /// RemapInstruction - Convert the instruction operands from referencing the /// current values into those specified by ValueMap. /// -void llvm::RemapInstruction(Instruction *I, ValueMapTy &ValueMap) { +void llvm::RemapInstruction(Instruction *I, ValueToValueMapTy &ValueMap) { for (User::op_iterator op = I->op_begin(), E = I->op_end(); op != E; ++op) { Value *V = MapValue(*op, ValueMap); assert(V && "Referenced value not in value map!");