Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / TableGen / size.td
blob5a1e661f19c221bed0a8268907467af55a5e89ee
1 // RUN: llvm-tblgen %s | FileCheck %s
2 // XFAIL: vg_leak
4 // Test !size of lists.
6 // CHECK: --- Defs ---
8 // CHECK: def A1 {
9 // CHECK:   int Val = 0;
10 // CHECK: }
12 // CHECK: def A2 {
13 // CHECK:   int Val = 3;
14 // CHECK: }
16 // CHECK: def B1 {
17 // CHECK:   int Val = 0;
18 // CHECK: }
20 // CHECK: def B2 {
21 // CHECK:   int Val = 2;
22 // CHECK: }
24 class A<list<int> L> {
25   int Val = !size(L);
28 class B<list<string> L> {
29   int Val = !size(L);
32 def A1 : A<[]>;
33 def A2 : A<[1, 1, 2]>;
35 def B1 : B<[]>;
36 def B2 : B<["a", "b"]>;
38 // Test !size of DAGs.
40 // CHECK: def D0 {
41 // CHECK:   int Val = 0;
42 // CHECK: }
44 // CHECK: def D1 {
45 // CHECK:   int Val = 1;
46 // CHECK: }
48 // CHECK: def D2 {
49 // CHECK:   int Val = 2;
50 // CHECK: }
52 // CHECK: def D3 {
53 // CHECK:   int Val = 3;
54 // CHECK: }
56 // CHECK: def D4 {
57 // CHECK:   int Val = 4;
58 // CHECK: }
60 class D<dag D> {
61   int Val = !size(D);
64 def op;
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)>;
72 // Test !size of strings.
74 // CHECK: def S0 {
75 // CHECK:   int Val = 0;
76 // CHECK: }
78 // CHECK: def S1 {
79 // CHECK:   int Val = 1;
80 // CHECK: }
82 // CHECK: def S2 {
83 // CHECK:   int Val = 2;
84 // CHECK: }
86 // CHECK: def S3 {
87 // CHECK:   int Val = 3;
88 // CHECK: }
90 // CHECK: def S4 {
91 // CHECK:   int Val = 29;
92 // CHECK: }
94 class S<string S> {
95   int Val = !size(S);
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!">;