xref: /llvm-project/llvm/test/TableGen/empty.td (revision dc5d6632b0c25cc5c057325c517f28575452d602)
1// RUN: llvm-tblgen %s | FileCheck %s
2// XFAIL: vg_leak
3
4defvar LongList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
5defvar EmptyStr = "";
6
7// Test !empty(dag).
8
9// CHECK: def Drec1 {
10// CHECK:   bit Empty = 1;
11// CHECK:   bit NotEmpty = 0;
12// CHECK: def Drec2 {
13// CHECK:   bit Empty = 0;
14// CHECK:   bit NotEmpty = 1;
15// CHECK: def Drec3 {
16// CHECK:   bit Empty = 0;
17// CHECK:   bit NotEmpty = 1;
18
19class D<dag ADag> {
20  bit Empty = !empty(ADag);
21  bit NotEmpty = !not(!empty(ADag));
22}
23
24def op;
25
26def Drec1 : D<(op)>;
27def Drec2 : D<(op "string")>;
28def Drec3 : D<(op "string", 42)>;
29
30// Test !empty(list).
31
32// CHECK: def Lrec1 {
33// CHECK:   bit Empty = 1;
34// CHECK:   bit NotEmpty = 0;
35// CHECK: def Lrec2 {
36// CHECK:   bit Empty = 0;
37// CHECK:   bit NotEmpty = 1;
38// CHECK: def Lrec3 {
39// CHECK:   bit Empty = 0;
40// CHECK:   bit NotEmpty = 1;
41
42class L<list<int> Ints> {
43  bit Empty = !empty(Ints);
44  bit NotEmpty = !not(!empty(Ints));
45}
46
47def Lrec1 : L<[]>;
48def Lrec2 : L<[1]>;
49def Lrec3 : L<LongList>;
50
51// Test !empty(string).
52
53// CHECK: def Srec1 {
54// CHECK:   bit Empty = 1;
55// CHECK:   bit NotEmpty = 0;
56// CHECK: def Srec2 {
57// CHECK:   bit Empty = 0;
58// CHECK:   bit NotEmpty = 1;
59// CHECK: def Srec3 {
60// CHECK:   bit Empty = 0;
61// CHECK:   bit NotEmpty = 1;
62
63class S<string Str> {
64  bit Empty = !empty(Str);
65  bit NotEmpty = !not(!empty(Str));
66}
67
68def Srec1 : S<EmptyStr>;
69def Srec2 : S<"a">;
70def Srec3 : S<"ab">;
71
72