[llvm-exegesis][NFC] Improve parsing of the YAML files
[llvm-core.git] / test / TableGen / defset.td
blob3c5fb68ea7ef098b05d9c8d8b9fd775b15b0b269
1 // RUN: llvm-tblgen %s | FileCheck %s
2 // XFAIL: vg_leak
4 // CHECK: --- Defs ---
6 // CHECK: def Sum {
7 // CHECK:   int x = 712;
8 // CHECK: }
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
27 class A<int a> {
28   int Num = a;
31 multiclass B<int b> {
32   def A0 : A<!add(10, b)>;
33   def A1 : A<!add(20, b)>;
36 multiclass C<int c> {
37   defm B0 : B<!add(100, c)>;
38   defm B1 : B<!add(200, c)>;
41 defset 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   }
52 def Sum {
53   int x = !foldl(0, As, a, b, !add(a, b.Num));
56 foreach a = As in {
57   def yyy_ # !cast<string>(a);
60 foreach a = SubAs in {
61   def zzz_ # !cast<string>(a);