about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJed Davis <jld@panix.com>2013-01-08 00:24:25 -0800
committerTim Chevalier <chevalier@alum.wellesley.edu>2013-01-13 14:37:59 -0800
commitea53c48ca23ec4e46454d48936c209d2a67cf892 (patch)
tree9099a0f13a390eca643c978e1b82b4ffc1cefc7e
parent1b4f3fad1e6036b3d7cb17cc80ac1c204e1f11a2 (diff)
downloadrust-ea53c48ca23ec4e46454d48936c209d2a67cf892.tar.gz
rust-ea53c48ca23ec4e46454d48936c209d2a67cf892.zip
Make empty structs debug-printable
-rw-r--r--src/librustc/lib/llvm.rs13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/librustc/lib/llvm.rs b/src/librustc/lib/llvm.rs
index dd23dbe83dc..047268e080f 100644
--- a/src/librustc/lib/llvm.rs
+++ b/src/librustc/lib/llvm.rs
@@ -1330,9 +1330,10 @@ fn type_to_str_inner(names: type_names, +outer0: ~[TypeRef], ty: TypeRef) ->
             let mut s: ~str = ~"{";
             let n_elts = llvm::LLVMCountStructElementTypes(ty) as uint;
             let mut elts = vec::from_elem(n_elts, 0 as TypeRef);
-            llvm::LLVMGetStructElementTypes(ty,
-                                            ptr::to_mut_unsafe_ptr(
-                                                &mut elts[0]));
+            if elts.len() > 0 {
+                llvm::LLVMGetStructElementTypes(
+                    ty, ptr::to_mut_unsafe_ptr(&mut elts[0]));
+            }
             s += tys_str(names, outer, elts);
             s += ~"}";
             return s;
@@ -1398,8 +1399,10 @@ fn struct_element_types(struct_ty: TypeRef) -> ~[TypeRef] {
         let mut buf: ~[TypeRef] =
             vec::from_elem(count as uint,
                            cast::transmute::<uint,TypeRef>(0));
-        llvm::LLVMGetStructElementTypes(struct_ty,
-                                        ptr::to_mut_unsafe_ptr(&mut buf[0]));
+        if buf.len() > 0 {
+            llvm::LLVMGetStructElementTypes(
+                struct_ty, ptr::to_mut_unsafe_ptr(&mut buf[0]));
+        }
         return move buf;
     }
 }