IR: MDNode => Value: Instruction::setMetadata()
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Fri, 31 Oct 2014 20:13:11 +0000 (20:13 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Fri, 31 Oct 2014 20:13:11 +0000 (20:13 +0000)
Change `Instruction::setMetadata()` API to accept `Value` instead of
`MDNode`.  Part of PR21433.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220994 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/IR/IRBuilder.h
include/llvm/IR/Instruction.h
lib/IR/Metadata.cpp

index d803bf407e64df8015252bf0264177e878c08c7a..35dda0b9aa0b57472097b432613c8f725dfc0951 100644 (file)
 #include "llvm/IR/DataLayout.h"
 #include "llvm/IR/Instructions.h"
 #include "llvm/IR/LLVMContext.h"
+#include "llvm/IR/Metadata.h"
 #include "llvm/IR/Operator.h"
 #include "llvm/IR/ValueHandle.h"
 #include "llvm/Support/CBindingWrapping.h"
 
 namespace llvm {
-  class MDNode;
 
 /// \brief This provides the default implementation of the IRBuilder
 /// 'InsertHelper' method that is called whenever an instruction is created by
index 4a713ef7df15b7bf5c43f400675110306d886fbf..4baacba78ed95e8302d3ad7cf492da6c426a0e73 100644 (file)
@@ -176,9 +176,9 @@ public:
 
   /// setMetadata - Set the metadata of the specified kind to the specified
   /// node.  This updates/replaces metadata if already present, or removes it if
-  /// Node is null.
-  void setMetadata(unsigned KindID, MDNode *Node);
-  void setMetadata(StringRef Kind, MDNode *Node);
+  /// MD is null.
+  void setMetadata(unsigned KindID, Value *MD);
+  void setMetadata(StringRef Kind, Value *MD);
 
   /// \brief Drop unknown metadata.
   /// Passes are required to drop metadata they don't understand. This is a
index cc118496033526f2f64a0709843dadc02b3582ba..24c78fea64617d7fd39c6ad28e1f8c8cc0e05efa 100644 (file)
@@ -600,9 +600,9 @@ StringRef NamedMDNode::getName() const {
 // Instruction Metadata method implementations.
 //
 
-void Instruction::setMetadata(StringRef Kind, MDNode *Node) {
-  if (!Node && !hasMetadata()) return;
-  setMetadata(getContext().getMDKindID(Kind), Node);
+void Instruction::setMetadata(StringRef Kind, Value *MD) {
+  if (!MD && !hasMetadata()) return;
+  setMetadata(getContext().getMDKindID(Kind), MD);
 }
 
 MDNode *Instruction::getMetadataImpl(StringRef Kind) const {
@@ -655,9 +655,12 @@ void Instruction::dropUnknownMetadata(ArrayRef<unsigned> KnownIDs) {
 
 /// setMetadata - Set the metadata of of the specified kind to the specified
 /// node.  This updates/replaces metadata if already present, or removes it if
-/// Node is null.
-void Instruction::setMetadata(unsigned KindID, MDNode *Node) {
-  if (!Node && !hasMetadata()) return;
+/// MD is null.
+void Instruction::setMetadata(unsigned KindID, Value *MD) {
+  if (!MD && !hasMetadata()) return;
+
+  // For now, we only expect MDNodes here.
+  MDNode *Node = cast<MDNode>(MD);
 
   // Handle 'dbg' as a special case since it is not stored in the hash table.
   if (KindID == LLVMContext::MD_dbg) {