diff options
author | Peter Zotov <whitequark@whitequark.org> | 2014-10-17 01:02:34 +0000 |
---|---|---|
committer | Peter Zotov <whitequark@whitequark.org> | 2014-10-17 01:02:34 +0000 |
commit | aff492c6fd2f337d0811ed73fb9e266f16b79e8f (patch) | |
tree | d38e0f526579f973522fd3ffe6c96c9d7c57dc3b | |
parent | 2213bfe35278af66c3423080ce12375afbaa9c10 (diff) | |
download | bcm5719-llvm-aff492c6fd2f337d0811ed73fb9e266f16b79e8f.tar.gz bcm5719-llvm-aff492c6fd2f337d0811ed73fb9e266f16b79e8f.zip |
[LLVM-C] Add LLVMInstructionClone.
llvm-svn: 220007
-rw-r--r-- | llvm/include/llvm-c/Core.h | 10 | ||||
-rw-r--r-- | llvm/lib/IR/Core.cpp | 6 |
2 files changed, 16 insertions, 0 deletions
diff --git a/llvm/include/llvm-c/Core.h b/llvm/include/llvm-c/Core.h index bfbc6322902..4f9da09a6d8 100644 --- a/llvm/include/llvm-c/Core.h +++ b/llvm/include/llvm-c/Core.h @@ -2409,6 +2409,16 @@ LLVMOpcode LLVMGetInstructionOpcode(LLVMValueRef Inst); LLVMIntPredicate LLVMGetICmpPredicate(LLVMValueRef Inst); /** + * Create a copy of 'this' instruction that is identical in all ways + * except the following: + * * The instruction has no parent + * * The instruction has no name + * + * @see llvm::Instruction::clone() + */ +LLVMValueRef LLVMInstructionClone(LLVMValueRef Inst); + +/** * @defgroup LLVMCCoreValueInstructionCall Call Sites and Invocations * * Functions in this group apply to instructions that refer to call diff --git a/llvm/lib/IR/Core.cpp b/llvm/lib/IR/Core.cpp index acf63a36d26..f1e134233e6 100644 --- a/llvm/lib/IR/Core.cpp +++ b/llvm/lib/IR/Core.cpp @@ -1888,6 +1888,12 @@ LLVMOpcode LLVMGetInstructionOpcode(LLVMValueRef Inst) { return (LLVMOpcode)0; } +LLVMValueRef LLVMInstructionClone(LLVMValueRef Inst) { + if (Instruction *C = dyn_cast<Instruction>(unwrap(Inst))) + return wrap(C->clone()); + return nullptr; +} + /*--.. Call and invoke instructions ........................................--*/ unsigned LLVMGetInstructionCallConv(LLVMValueRef Instr) { |