150
|
1 // RUN: llvm-tblgen %s | FileCheck %s
|
|
2 // XFAIL: vg_leak
|
|
3
|
207
|
4 // Test !size of lists.
|
|
5
|
150
|
6 // CHECK: --- Defs ---
|
|
7
|
|
8 // CHECK: def A1 {
|
|
9 // CHECK: int Val = 0;
|
|
10 // CHECK: }
|
|
11
|
|
12 // CHECK: def A2 {
|
|
13 // CHECK: int Val = 3;
|
|
14 // CHECK: }
|
|
15
|
|
16 // CHECK: def B1 {
|
|
17 // CHECK: int Val = 0;
|
|
18 // CHECK: }
|
|
19
|
|
20 // CHECK: def B2 {
|
|
21 // CHECK: int Val = 2;
|
|
22 // CHECK: }
|
|
23
|
|
24 class A<list<int> L> {
|
|
25 int Val = !size(L);
|
|
26 }
|
|
27
|
|
28 class B<list<string> L> {
|
|
29 int Val = !size(L);
|
|
30 }
|
|
31
|
|
32 def A1 : A<[]>;
|
|
33 def A2 : A<[1, 1, 2]>;
|
|
34
|
|
35 def B1 : B<[]>;
|
|
36 def B2 : B<["a", "b"]>;
|
207
|
37
|
|
38 // Test !size of DAGs.
|
|
39
|
|
40 // CHECK: def D0 {
|
|
41 // CHECK: int Val = 0;
|
|
42 // CHECK: }
|
|
43
|
|
44 // CHECK: def D1 {
|
|
45 // CHECK: int Val = 1;
|
|
46 // CHECK: }
|
|
47
|
|
48 // CHECK: def D2 {
|
|
49 // CHECK: int Val = 2;
|
|
50 // CHECK: }
|
|
51
|
|
52 // CHECK: def D3 {
|
|
53 // CHECK: int Val = 3;
|
|
54 // CHECK: }
|
|
55
|
|
56 // CHECK: def D4 {
|
|
57 // CHECK: int Val = 4;
|
|
58 // CHECK: }
|
|
59
|
|
60 class D<dag D> {
|
|
61 int Val = !size(D);
|
|
62 }
|
|
63
|
|
64 def op;
|
|
65
|
|
66 def D0 : D<(op)>;
|
|
67 def D1 : D<(op "string")>;
|
|
68 def D2 : D<(op "string", 42)>;
|
|
69 def D3 : D<(op "string", 42, (op "sub-dag"))>;
|
|
70 def D4 : D<(op "string", 42, (op "sub-dag"), D0.Val)>;
|
|
71
|
|
72 // Test !size of strings.
|
|
73
|
|
74 // CHECK: def S0 {
|
|
75 // CHECK: int Val = 0;
|
|
76 // CHECK: }
|
|
77
|
|
78 // CHECK: def S1 {
|
|
79 // CHECK: int Val = 1;
|
|
80 // CHECK: }
|
|
81
|
|
82 // CHECK: def S2 {
|
|
83 // CHECK: int Val = 2;
|
|
84 // CHECK: }
|
|
85
|
|
86 // CHECK: def S3 {
|
|
87 // CHECK: int Val = 3;
|
|
88 // CHECK: }
|
|
89
|
|
90 // CHECK: def S4 {
|
|
91 // CHECK: int Val = 29;
|
|
92 // CHECK: }
|
|
93
|
|
94 class S<string S> {
|
|
95 int Val = !size(S);
|
|
96 }
|
|
97
|
|
98 def S0 : S<"">;
|
|
99 def S1 : S<"a">;
|
|
100 def S2 : S<"ab">;
|
|
101 def S3 : S<"abc">;
|
|
102 def S4 : S<"This is the end of the world!">;
|
|
103
|