From a2fc9d06d937865258ccd04e0f1a9ff4f61ccde9 Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Sat, 13 Dec 2014 02:25:51 +0000 Subject: [PATCH] Go bindings: introduce Metadata.ReplaceAllUsesWith. llvm-svn: 224177 --- llvm/bindings/go/llvm/IRBindings.cpp | 6 ++++++ llvm/bindings/go/llvm/IRBindings.h | 2 ++ llvm/bindings/go/llvm/ir.go | 8 ++++++++ 3 files changed, 16 insertions(+) diff --git a/llvm/bindings/go/llvm/IRBindings.cpp b/llvm/bindings/go/llvm/IRBindings.cpp index 6247fbc..3099fa5 100644 --- a/llvm/bindings/go/llvm/IRBindings.cpp +++ b/llvm/bindings/go/llvm/IRBindings.cpp @@ -75,6 +75,12 @@ void LLVMSetMetadata2(LLVMValueRef Inst, unsigned KindID, LLVMMetadataRef MD) { unwrap(Inst)->setMetadata(KindID, N); } +void LLVMMetadataReplaceAllUsesWith(LLVMMetadataRef MD, LLVMMetadataRef New) { + auto *Node = unwrap(MD); + Node->replaceAllUsesWith(unwrap(New)); + MDNode::deleteTemporary(Node); +} + void LLVMSetCurrentDebugLocation2(LLVMBuilderRef Bref, unsigned Line, unsigned Col, LLVMMetadataRef Scope, LLVMMetadataRef InlinedAt) { diff --git a/llvm/bindings/go/llvm/IRBindings.h b/llvm/bindings/go/llvm/IRBindings.h index 8be8944..6bce4f7 100644 --- a/llvm/bindings/go/llvm/IRBindings.h +++ b/llvm/bindings/go/llvm/IRBindings.h @@ -45,6 +45,8 @@ void LLVMAddNamedMetadataOperand2(LLVMModuleRef M, const char *name, LLVMMetadataRef Val); void LLVMSetMetadata2(LLVMValueRef Inst, unsigned KindID, LLVMMetadataRef MD); +void LLVMMetadataReplaceAllUsesWith(LLVMMetadataRef MD, LLVMMetadataRef New); + void LLVMSetCurrentDebugLocation2(LLVMBuilderRef Bref, unsigned Line, unsigned Col, LLVMMetadataRef Scope, LLVMMetadataRef InlinedAt); diff --git a/llvm/bindings/go/llvm/ir.go b/llvm/bindings/go/llvm/ir.go index af246fe..178eda3 100644 --- a/llvm/bindings/go/llvm/ir.go +++ b/llvm/bindings/go/llvm/ir.go @@ -1827,3 +1827,11 @@ func (pm PassManager) FinalizeFunc() bool { return C.LLVMFinalizeFunctionPassMan // the module provider. // See llvm::PassManagerBase::~PassManagerBase. func (pm PassManager) Dispose() { C.LLVMDisposePassManager(pm.C) } + +//------------------------------------------------------------------------- +// llvm.Metadata +//------------------------------------------------------------------------- + +func (md Metadata) ReplaceAllUsesWith(new Metadata) { + C.LLVMMetadataReplaceAllUsesWith(md.C, new.C) +} -- 2.7.4