xref: /llvm-project/llvm/test/TableGen/cond-list.td (revision a3e3d8528644b3e432538853804553c62fea7722)
1// RUN: llvm-tblgen %s | FileCheck %s
2// XFAIL: vg_leak
3
4
5class A<list<list<int>> vals> {
6  list<int> first = vals[0];
7  list<int> rest  = !cond(!empty(!tail(vals)): vals[0],
8                          1                 : vals[1]);
9}
10
11def A_OneEl : A<[[1,2,3]]>;
12// CHECK:      def A_OneEl {  // A
13// CHECK-NEXT: list<int> first = [1, 2, 3];
14// CHECK-NEXT: list<int> rest = [1, 2, 3];
15// CHECK-NEXT: }
16
17def A_TwoEl : A<[[1,2,3], [4,5,6]]>;
18// CHECK:      def A_TwoEl { // A
19// CHECK-NEXT: list<int> first = [1, 2, 3];
20// CHECK-NEXT: list<int> rest = [4, 5, 6];
21// CHECK-NEXT: }
22
23
24class B<list<int> v> {
25  list<int> vals = v;
26}
27class BB<list<list<int>> vals> : B<!cond(!empty(!tail(vals)): vals[0],  1 : vals[1])>;
28class BBB<list<list<int>> vals> : BB<vals>;
29
30def B_OneEl : BBB<[[1,2,3]]>;
31// CHECK:      def B_OneEl { //  B BB BBB
32// CHECK-NEXT: list<int> vals = [1, 2, 3];
33// CHECK-NEXT: }
34
35def B_TwoEl : BBB<[[1,2,3],[4,5,6]]>;
36// CHECK:      def B_TwoEl { // B BB BBB
37// CHECK-NEXT: list<int> vals = [4, 5, 6];
38// CHECK-NEXT: }
39