diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/include/llvm/IR/DIBuilder.h | 17 | 
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/include/llvm/IR/DIBuilder.h b/llvm/include/llvm/IR/DIBuilder.h index eb5cdd60427..ac82947741c 100644 --- a/llvm/include/llvm/IR/DIBuilder.h +++ b/llvm/include/llvm/IR/DIBuilder.h @@ -701,6 +701,23 @@ namespace llvm {      /// resolve cycles.      void replaceArrays(DICompositeType &T, DIArray Elements,                         DIArray TParems = DIArray()); + +    /// \brief Replace a temporary node. +    /// +    /// Call \a MDNode::replaceAllUsesWith() on \c N, replacing it with \c +    /// Replacement. +    /// +    /// If \c Replacement is the same as \c N.get(), instead call \a +    /// MDNode::replaceWithUniqued().  In this case, the uniqued node could +    /// have a different address, so we return the final address. +    template <class NodeTy> +    NodeTy *replaceTemporary(TempMDNode &&N, NodeTy *Replacement) { +      if (N.get() == Replacement) +        return cast<NodeTy>(MDNode::replaceWithUniqued(std::move(N))); + +      N->replaceAllUsesWith(Replacement); +      return Replacement; +    }    };  } // end namespace llvm  | 

