From 14bbb1d9b083c7935185e7c11ddf059f352aa3fc Mon Sep 17 00:00:00 2001 From: Peter Zotov Date: Wed, 6 Nov 2013 09:21:01 +0000 Subject: [PATCH] [llvm-c] Implement LLVMPrintValueToString Original patch by Chris Wailes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194135 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm-c/Core.h | 8 ++++++++ lib/IR/Core.cpp | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/include/llvm-c/Core.h b/include/llvm-c/Core.h index 89ddf418b2f..30b1d829d25 100644 --- a/include/llvm-c/Core.h +++ b/include/llvm-c/Core.h @@ -1211,6 +1211,14 @@ void LLVMSetValueName(LLVMValueRef Val, const char *Name); */ void LLVMDumpValue(LLVMValueRef Val); +/** + * Return a string representation of the value. Use + * LLVMDisposeMessage to free the string. + * + * @see llvm::Value::print() + */ +char *LLVMPrintValueToString(LLVMValueRef Val); + /** * Replace all uses of a value with another one. * diff --git a/lib/IR/Core.cpp b/lib/IR/Core.cpp index 40db69b3700..63cc2f6f06a 100644 --- a/lib/IR/Core.cpp +++ b/lib/IR/Core.cpp @@ -474,6 +474,16 @@ void LLVMDumpValue(LLVMValueRef Val) { unwrap(Val)->dump(); } +char* LLVMPrintValueToString(LLVMValueRef Val) { + std::string buf; + raw_string_ostream os(buf); + + unwrap(Val)->print(os); + os.flush(); + + return strdup(buf.c_str()); +} + void LLVMReplaceAllUsesWith(LLVMValueRef OldVal, LLVMValueRef NewVal) { unwrap(OldVal)->replaceAllUsesWith(unwrap(NewVal)); }