reimplement insertvalue/extractvalue metadata handling to not blindly 
accept invalid input.  Actually add a testcase.

llvm-svn: 92297
diff --git a/llvm/test/Assembler/metadata.ll b/llvm/test/Assembler/metadata.ll
index cdb6978..89668a3 100644
--- a/llvm/test/Assembler/metadata.ll
+++ b/llvm/test/Assembler/metadata.ll
@@ -5,11 +5,13 @@
   
   call void @llvm.dbg.func.start(metadata !"foo")
   
+  extractvalue {{i32, i32}, i32} undef, 0, 1, !foo !0
+  
   ret void, !foo !0, !bar !1
 }
 
 !0 = metadata !{i32 662302, i32 26, metadata !1, null}
-!1 = metadata !{i32 4}
+!1 = metadata !{i32 4, metadata !"foo"}
 
 declare void @llvm.dbg.func.start(metadata) nounwind readnone