teach the cloner to handle inline asms

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25633 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2006-01-26 01:55:22 +00:00
parent 6dbca0b6bc
commit f47a6b4882

View File

@ -16,8 +16,6 @@
#include "llvm/Constants.h"
#include "llvm/GlobalValue.h"
#include "llvm/Instruction.h"
#include <iostream>
using namespace llvm;
Value *llvm::MapValue(const Value *V, std::map<const Value*, Value*> &VM) {
@ -32,7 +30,7 @@ Value *llvm::MapValue(const Value *V, std::map<const Value*, Value*> &VM) {
if (Constant *C = const_cast<Constant*>(dyn_cast<Constant>(V))) {
if (isa<ConstantIntegral>(C) || isa<ConstantFP>(C) ||
isa<ConstantPointerNull>(C) || isa<ConstantAggregateZero>(C) ||
isa<UndefValue>(C))
isa<UndefValue>(C) || isa<InlineAsm>(V))
return VMSlot = C; // Primitive constants map directly
else if (ConstantArray *CA = dyn_cast<ConstantArray>(C)) {
for (unsigned i = 0, e = CA->getNumOperands(); i != e; ++i) {
@ -112,12 +110,6 @@ void llvm::RemapInstruction(Instruction *I,
for (unsigned op = 0, E = I->getNumOperands(); op != E; ++op) {
const Value *Op = I->getOperand(op);
Value *V = MapValue(Op, ValueMap);
#ifndef NDEBUG
if (!V) {
std::cerr << "Val = \n" << *Op << "Addr = " << (void*)Op;
std::cerr << "\nInst = " << *I;
}
#endif
assert(V && "Referenced value not in value map!");
I->setOperand(op, V);
}