From 7bad4167654ef846155bae7165fd0ffcc24fcbbe Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Fri, 11 Oct 2013 19:56:11 -0400 Subject: have LLVM print type strings for us Example: void ({ i64, %tydesc*, i8*, i8*, i8 }*, i64*, %"struct.std::fmt::Formatter[#1]"*)* Before, we would print 20 levels deep due to recursion in the type definition. --- src/rustllvm/RustWrapper.cpp | 7 +++++++ src/rustllvm/rustllvm.def.in | 1 + 2 files changed, 8 insertions(+) (limited to 'src/rustllvm') diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp index 31a02dceb1c..f8d56f4e892 100644 --- a/src/rustllvm/RustWrapper.cpp +++ b/src/rustllvm/RustWrapper.cpp @@ -803,3 +803,10 @@ extern "C" void LLVMDICompositeTypeSetTypeArray( { unwrapDI(CompositeType).setTypeArray(unwrapDI(TypeArray)); } + +extern "C" char *LLVMTypeToString(LLVMTypeRef Type) { + std::string s; + llvm::raw_string_ostream os(s); + unwrap(Type)->print(os); + return strdup(os.str().data()); +} diff --git a/src/rustllvm/rustllvm.def.in b/src/rustllvm/rustllvm.def.in index 0162857e44e..c1f1444fb4f 100644 --- a/src/rustllvm/rustllvm.def.in +++ b/src/rustllvm/rustllvm.def.in @@ -628,3 +628,4 @@ LLVMRustSetNormalizedTarget LLVMRustAddAlwaysInlinePass LLVMAddReturnAttribute LLVMRemoveReturnAttribute +LLVMTypeToString -- cgit 1.4.1-3-g733a5