diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2014-12-13 02:25:51 +0000 |
---|---|---|
committer | Peter Collingbourne <peter@pcc.me.uk> | 2014-12-13 02:25:51 +0000 |
commit | e9e0f3718cd9507c41df9b002453abb2dc11ba95 (patch) | |
tree | eb58b55fcd3fec525a25375515d423ec46e0fc26 /bindings | |
parent | eb8bf790eb82089288b19a368f4a311ef4b363f9 (diff) |
Go bindings: introduce Metadata.ReplaceAllUsesWith.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@224177 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'bindings')
-rw-r--r-- | bindings/go/llvm/IRBindings.cpp | 6 | ||||
-rw-r--r-- | bindings/go/llvm/IRBindings.h | 2 | ||||
-rw-r--r-- | bindings/go/llvm/ir.go | 8 |
3 files changed, 16 insertions, 0 deletions
diff --git a/bindings/go/llvm/IRBindings.cpp b/bindings/go/llvm/IRBindings.cpp index 6247fbc3baa..3099fa56281 100644 --- a/bindings/go/llvm/IRBindings.cpp +++ b/bindings/go/llvm/IRBindings.cpp @@ -75,6 +75,12 @@ void LLVMSetMetadata2(LLVMValueRef Inst, unsigned KindID, LLVMMetadataRef MD) { unwrap<Instruction>(Inst)->setMetadata(KindID, N); } +void LLVMMetadataReplaceAllUsesWith(LLVMMetadataRef MD, LLVMMetadataRef New) { + auto *Node = unwrap<MDNodeFwdDecl>(MD); + Node->replaceAllUsesWith(unwrap<MDNode>(New)); + MDNode::deleteTemporary(Node); +} + void LLVMSetCurrentDebugLocation2(LLVMBuilderRef Bref, unsigned Line, unsigned Col, LLVMMetadataRef Scope, LLVMMetadataRef InlinedAt) { diff --git a/bindings/go/llvm/IRBindings.h b/bindings/go/llvm/IRBindings.h index 8be89445207..6bce4f71c29 100644 --- a/bindings/go/llvm/IRBindings.h +++ b/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/bindings/go/llvm/ir.go b/bindings/go/llvm/ir.go index af246fe2e65..178eda303be 100644 --- a/bindings/go/llvm/ir.go +++ b/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) +} |