AsmWriter/Bitcode: MDTemplate{Type,Value}Parameter
llvm-svn: 229019
diff --git a/llvm/test/Assembler/invalid-mdtemplatetypeparameter-missing-parent.ll b/llvm/test/Assembler/invalid-mdtemplatetypeparameter-missing-parent.ll
new file mode 100644
index 0000000..741506e
--- /dev/null
+++ b/llvm/test/Assembler/invalid-mdtemplatetypeparameter-missing-parent.ll
@@ -0,0 +1,4 @@
+; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s
+
+; CHECK: [[@LINE+1]]:40: error: missing required field 'scope'
+!0 = !MDTemplateTypeParameter(type: !{})
diff --git a/llvm/test/Assembler/invalid-mdtemplatetypeparameter-missing-type.ll b/llvm/test/Assembler/invalid-mdtemplatetypeparameter-missing-type.ll
new file mode 100644
index 0000000..8fd9bdf
--- /dev/null
+++ b/llvm/test/Assembler/invalid-mdtemplatetypeparameter-missing-type.ll
@@ -0,0 +1,4 @@
+; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s
+
+; CHECK: [[@LINE+1]]:41: error: missing required field 'type'
+!0 = !MDTemplateTypeParameter(scope: !{})
diff --git a/llvm/test/Assembler/invalid-mdtemplatevalueparameter-missing-parent.ll b/llvm/test/Assembler/invalid-mdtemplatevalueparameter-missing-parent.ll
new file mode 100644
index 0000000..1b9053f
--- /dev/null
+++ b/llvm/test/Assembler/invalid-mdtemplatevalueparameter-missing-parent.ll
@@ -0,0 +1,5 @@
+; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s
+
+; CHECK: [[@LINE+2]]:44: error: missing required field 'scope'
+!0 = !MDTemplateValueParameter(tag: DW_TAG_template_value_parameter, type: !{},
+ value: i32 7)
diff --git a/llvm/test/Assembler/invalid-mdtemplatevalueparameter-missing-tag.ll b/llvm/test/Assembler/invalid-mdtemplatevalueparameter-missing-tag.ll
new file mode 100644
index 0000000..db755c9
--- /dev/null
+++ b/llvm/test/Assembler/invalid-mdtemplatevalueparameter-missing-tag.ll
@@ -0,0 +1,4 @@
+; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s
+
+; CHECK: [[@LINE+1]]:67: error: missing required field 'tag'
+!0 = !MDTemplateValueParameter(scope: !{}, type: !{}, value: i32 7)
diff --git a/llvm/test/Assembler/invalid-mdtemplatevalueparameter-missing-type.ll b/llvm/test/Assembler/invalid-mdtemplatevalueparameter-missing-type.ll
new file mode 100644
index 0000000..2db944e
--- /dev/null
+++ b/llvm/test/Assembler/invalid-mdtemplatevalueparameter-missing-type.ll
@@ -0,0 +1,5 @@
+; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s
+
+; CHECK: [[@LINE+2]]:56: error: missing required field 'type'
+!0 = !MDTemplateValueParameter(tag: DW_TAG_template_value_parameter,
+ scope: !{}, value: i32 7)
diff --git a/llvm/test/Assembler/invalid-mdtemplatevalueparameter-missing-value.ll b/llvm/test/Assembler/invalid-mdtemplatevalueparameter-missing-value.ll
new file mode 100644
index 0000000..8ca0437
--- /dev/null
+++ b/llvm/test/Assembler/invalid-mdtemplatevalueparameter-missing-value.ll
@@ -0,0 +1,5 @@
+; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s
+
+; CHECK: [[@LINE+2]]:53: error: missing required field 'value'
+!0 = !MDTemplateValueParameter(tag: DW_TAG_template_value_parameter,
+ scope: !{}, type: !{})
diff --git a/llvm/test/Assembler/mdtemplateparameter.ll b/llvm/test/Assembler/mdtemplateparameter.ll
new file mode 100644
index 0000000..aef2bfd
--- /dev/null
+++ b/llvm/test/Assembler/mdtemplateparameter.ll
@@ -0,0 +1,24 @@
+; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s
+; RUN: verify-uselistorder %s
+
+; CHECK: !named = !{!0, !1, !2, !3, !3, !4, !5, !5}
+!named = !{!0, !1, !2, !3, !4, !5, !6, !7}
+
+!0 = distinct !{}
+!1 = distinct !{}
+; CHECK: !1 = distinct !{}
+
+; CHECK-NEXT: !2 = !MDTemplateTypeParameter(scope: !0, name: "Ty", type: !1)
+; CHECK-NEXT: !3 = !MDTemplateTypeParameter(scope: !0, name: "", type: !1)
+!2 = !MDTemplateTypeParameter(scope: !0, name: "Ty", type: !1)
+!3 = !MDTemplateTypeParameter(scope: !0, type: !1)
+!4 = !MDTemplateTypeParameter(scope: !0, name: "", type: !1)
+
+; CHECK-NEXT: !4 = !MDTemplateValueParameter(tag: DW_TAG_template_value_parameter, scope: !0, name: "V", type: !1, value: i32 7)
+; CHECK-NEXT: !5 = !MDTemplateValueParameter(tag: DW_TAG_template_value_parameter, scope: !0, name: "", type: !1, value: i32 7)
+!5 = !MDTemplateValueParameter(tag: DW_TAG_template_value_parameter,
+ scope: !0, name: "V", type: !1, value: i32 7)
+!6 = !MDTemplateValueParameter(tag: DW_TAG_template_value_parameter,
+ scope: !0, type: !1, value: i32 7)
+!7 = !MDTemplateValueParameter(tag: DW_TAG_template_value_parameter,
+ scope: !0, name: "", type: !1, value: i32 7)