From: Robert Widmann Date: Wed, 24 Apr 2019 17:05:08 +0000 (+0000) Subject: [LLVM-C] Deprecate the LLVMValueRef-returning metadata creation functions X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f26b156fd2f58f49d3190a45c07e25c15b0bc0ae;p=llvm [LLVM-C] Deprecate the LLVMValueRef-returning metadata creation functions Summary: There is still some value in using these functions while the remaining LLVMValueRef-based accessors are still around, but LLVMMDNodeInContext in particular has some wonky semantics that make it worth replacing outright. Reviewers: whitequark, deadalnix Reviewed By: whitequark Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60524 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359114 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm-c/Core.h b/include/llvm-c/Core.h index 0a8135ff4a0..cac2f297056 100644 --- a/include/llvm-c/Core.h +++ b/include/llvm-c/Core.h @@ -2735,34 +2735,23 @@ void LLVMRemoveGlobalIFunc(LLVMValueRef IFunc); */ /** - * Obtain a MDString value from a context. + * Create an MDString value from a given string value. * - * The returned instance corresponds to the llvm::MDString class. + * The MDString value does not take ownership of the given string, it remains + * the responsibility of the caller to free it. * - * The instance is specified by string data of a specified length. The - * string content is copied, so the backing memory can be freed after - * this function returns. + * @see llvm::MDString::get() */ -LLVMValueRef LLVMMDStringInContext(LLVMContextRef C, const char *Str, - unsigned SLen); - -/** - * Obtain a MDString value from the global context. - */ -LLVMValueRef LLVMMDString(const char *Str, unsigned SLen); +LLVMMetadataRef LLVMMDStringInContext2(LLVMContextRef C, const char *Str, + size_t SLen); /** - * Obtain a MDNode value from a context. + * Create an MDNode value with the given array of operands. * - * The returned value corresponds to the llvm::MDNode class. + * @see llvm::MDNode::get() */ -LLVMValueRef LLVMMDNodeInContext(LLVMContextRef C, LLVMValueRef *Vals, - unsigned Count); - -/** - * Obtain a MDNode value from the global context. - */ -LLVMValueRef LLVMMDNode(LLVMValueRef *Vals, unsigned Count); +LLVMMetadataRef LLVMMDNodeInContext2(LLVMContextRef C, LLVMMetadataRef *MDs, + size_t Count); /** * Obtain a Metadata as a Value. @@ -2804,6 +2793,17 @@ unsigned LLVMGetMDNodeNumOperands(LLVMValueRef V); */ void LLVMGetMDNodeOperands(LLVMValueRef V, LLVMValueRef *Dest); +/** Deprecated: Use LLVMMDStringInContext2 instead. */ +LLVMValueRef LLVMMDStringInContext(LLVMContextRef C, const char *Str, + unsigned SLen); +/** Deprecated: Use LLVMMDStringInContext2 instead. */ +LLVMValueRef LLVMMDString(const char *Str, unsigned SLen); +/** Deprecated: Use LLVMMDNodeInContext2 instead. */ +LLVMValueRef LLVMMDNodeInContext(LLVMContextRef C, LLVMValueRef *Vals, + unsigned Count); +/** Deprecated: Use LLVMMDNodeInContext2 instead. */ +LLVMValueRef LLVMMDNode(LLVMValueRef *Vals, unsigned Count); + /** * @} */ diff --git a/lib/IR/Core.cpp b/lib/IR/Core.cpp index 354921dc43e..310935b5213 100644 --- a/lib/IR/Core.cpp +++ b/lib/IR/Core.cpp @@ -1036,6 +1036,16 @@ LLVMValueRef LLVMConstPointerNull(LLVMTypeRef Ty) { /*--.. Operations on metadata nodes ........................................--*/ +LLVMMetadataRef LLVMMDStringInContext2(LLVMContextRef C, const char *Str, + size_t SLen) { + return wrap(MDString::get(*unwrap(C), StringRef(Str, SLen))); +} + +LLVMMetadataRef LLVMMDNodeInContext2(LLVMContextRef C, LLVMMetadataRef *MDs, + size_t Count) { + return wrap(MDNode::get(*unwrap(C), ArrayRef(unwrap(MDs), Count))); +} + LLVMValueRef LLVMMDStringInContext(LLVMContextRef C, const char *Str, unsigned SLen) { LLVMContext &Context = *unwrap(C);