[LLVM-C] Add LLVMInstructionClone.
authorPeter Zotov <whitequark@whitequark.org>
Fri, 17 Oct 2014 01:02:34 +0000 (01:02 +0000)
committerPeter Zotov <whitequark@whitequark.org>
Fri, 17 Oct 2014 01:02:34 +0000 (01:02 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220007 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm-c/Core.h
lib/IR/Core.cpp

index bfbc632290254beba495b821625fcfb47e127560..4f9da09a6d874338db2c3cd4defdfc8098f88501 100644 (file)
@@ -2408,6 +2408,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
  *
index acf63a36d263be5c0a03ba7106d2422747803fbc..f1e134233e674c0be43af621b3109d8e96dcf9fc 100644 (file)
@@ -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) {