Reapply: Add type output to llvm-dis annotations.  Patch by Yuri!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127824 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/Assembler/comment.ll b/test/Assembler/comment.ll
index fe23d26..16362ab 100644
--- a/test/Assembler/comment.ll
+++ b/test/Assembler/comment.ll
@@ -7,7 +7,7 @@
 ; BARE: }
 
 @B = external global i32
-; ANNOT: @B = external global i32   ; [#uses=0]
+; ANNOT: @B = external global i32   ; [#uses=0 type=i32*]
 
 define <4 x i1> @foo(<4 x float> %a, <4 x float> %b) nounwind {
 entry:
@@ -15,6 +15,5 @@
   ret <4 x i1> %cmp
 }
 
-; ANNOT: %cmp = fcmp olt <4 x float> %a, %b              ; [#uses=1]
-
+; ANNOT: %cmp = fcmp olt <4 x float> %a, %b              ; [#uses=1 type=<4 x i1>]
 
diff --git a/tools/llvm-dis/llvm-dis.cpp b/tools/llvm-dis/llvm-dis.cpp
index d1ac9de..7453d9e 100644
--- a/tools/llvm-dis/llvm-dis.cpp
+++ b/tools/llvm-dis/llvm-dis.cpp
@@ -74,7 +74,7 @@
     if (!V.getType()->isVoidTy()) {
       OS.PadToColumn(50);
       Padded = true;
-      OS << "; [#uses=" << V.getNumUses() << ']';  // Output # uses
+      OS << "; [#uses=" << V.getNumUses() << " type=" << V.getType()->getDescription() << "]";  // Output # uses and type
     }
     if (const Instruction *I = dyn_cast<Instruction>(&V)) {
       const DebugLoc &DL = I->getDebugLoc();