[llvm] r225643 - IR: Simplify replaceOperandWith(), NFC

Duncan P. N. Exon Smith dexonsmith at apple.com
Mon Jan 12 10:01:45 PST 2015


Author: dexonsmith
Date: Mon Jan 12 12:01:45 2015
New Revision: 225643

URL: http://llvm.org/viewvc/llvm-project?rev=225643&view=rev
Log:
IR: Simplify replaceOperandWith(), NFC

This will call `handleChangedOperand()` less frequently, but in that
case (i.e., `isStoredDistinctInContext()`) it has identical logic to
here.

Modified:
    llvm/trunk/lib/IR/Metadata.cpp

Modified: llvm/trunk/lib/IR/Metadata.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Metadata.cpp?rev=225643&r1=225642&r2=225643&view=diff
==============================================================================
--- llvm/trunk/lib/IR/Metadata.cpp (original)
+++ llvm/trunk/lib/IR/Metadata.cpp Mon Jan 12 12:01:45 2015
@@ -619,13 +619,12 @@ void MDNode::replaceOperandWith(unsigned
   if (getOperand(I) == New)
     return;
 
-  if (auto *N = dyn_cast<GenericMDNode>(this)) {
-    N->handleChangedOperand(mutable_begin() + I, New);
+  if (isStoredDistinctInContext() || isa<MDNodeFwdDecl>(this)) {
+    setOperand(I, New);
     return;
   }
 
-  assert(isa<MDNodeFwdDecl>(this) && "Expected an MDNode");
-  setOperand(I, New);
+  cast<GenericMDNode>(this)->handleChangedOperand(mutable_begin() + I, New);
 }
 
 void MDNode::setOperand(unsigned I, Metadata *New) {





More information about the llvm-commits mailing list