xref: /llvm-project/llvm/test/TableGen/defset.td (revision 93b4f8538267e620de4a36e7cf0abc0d4f8d7c10)
1// RUN: llvm-tblgen %s | FileCheck %s
2// XFAIL: vg_leak
3
4// CHECK: --- Defs ---
5
6// CHECK: def Sum {
7// CHECK:   int x = 712;
8// CHECK: }
9
10// CHECK: def yyy_A0
11// CHECK: def yyy_A1
12// CHECK: def yyy_A2
13// CHECK: def yyy_B0A0
14// CHECK: def yyy_B0A1
15// CHECK: def yyy_C0B0A0
16// CHECK: def yyy_C0B0A1
17// CHECK: def yyy_C0B1A0
18// CHECK: def yyy_C0B1A1
19// CHECK-NOT: def zzz_A0
20// CHECK: def zzz_B0A0
21// CHECK: def zzz_B0A1
22// CHECK: def zzz_C0B0A0
23// CHECK: def zzz_C0B0A1
24// CHECK: def zzz_C0B1A0
25// CHECK: def zzz_C0B1A1
26
27class A<int a> {
28  int Num = a;
29}
30
31multiclass B<int b> {
32  def A0 : A<!add(10, b)>;
33  def A1 : A<!add(20, b)>;
34}
35
36multiclass C<int c> {
37  defm B0 : B<!add(100, c)>;
38  defm B1 : B<!add(200, c)>;
39}
40
41defset list<A> As = {
42  def A0 : A<1>;
43  foreach i = 1...2 in {
44    def A#i : A<!add(i, 1)>;
45  }
46  defset list<A> SubAs = {
47    defm B0 : B<2>;
48    defm C0 : C<3>;
49  }
50}
51
52def Sum {
53  int x = !foldl(0, As, a, b, !add(a, b.Num));
54}
55
56foreach a = As in {
57  def yyy_ # !cast<string>(a);
58}
59
60foreach a = SubAs in {
61  def zzz_ # !cast<string>(a);
62}
63