[C++11] Modernize the IR library a bit.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203465 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Benjamin Kramer committed 2014-03-10 15:03:06 +00:00
1 parent e1820a6a4e
commit 6e9eeab69f
8 files changed
+50 -78

No files matched your search

+6 -10
View File
@@ -281,9 +281,8 @@ bool Instruction::isIdenticalToWhenDefined(const Instruction *I) const {
// We have two instructions of identical opcode and #operands. Check to see
// if all operands are the same.
for (unsigned i = 0, e = getNumOperands(); i != e; ++i)
if (getOperand(i) != I->getOperand(i))
return false;
if (!std::equal(op_begin(), op_end(), I->op_begin()))
return false;
// Check special state that is a part of some instructions.
if (const LoadInst *LI = dyn_cast<LoadInst>(this))
@@ -323,11 +322,8 @@ bool Instruction::isIdenticalToWhenDefined(const Instruction *I) const {
RMWI->getSynchScope() == cast<AtomicRMWInst>(I)->getSynchScope();
if (const PHINode *thisPHI = dyn_cast<PHINode>(this)) {
const PHINode *otherPHI = cast<PHINode>(I);
for (unsigned i = 0, e = thisPHI->getNumOperands(); i != e; ++i) {
if (thisPHI->getIncomingBlock(i) != otherPHI->getIncomingBlock(i))
return false;
}
return true;
return std::equal(thisPHI->block_begin(), thisPHI->block_end(),
otherPHI->block_begin());
}
return true;
}
@@ -552,8 +548,8 @@ Instruction *Instruction::clone() const {
// new one.
SmallVector<std::pair<unsigned, MDNode*>, 4> TheMDs;
getAllMetadataOtherThanDebugLoc(TheMDs);
for (unsigned i = 0, e = TheMDs.size(); i != e; ++i)
New->setMetadata(TheMDs[i].first, TheMDs[i].second);
for (const auto &MD : TheMDs)
New->setMetadata(MD.first, MD.second);
New->setDebugLoc(getDebugLoc());
return New;