| // RUN: llvm-tblgen %s | FileCheck %s | |
| // XFAIL: vg_leak | |
| // CHECK: --- Defs --- | |
| // CHECK: def Sum { | |
| // CHECK: int x = 712; | |
| // CHECK: } | |
| // CHECK: def yyy_A0 | |
| // CHECK: def yyy_A1 | |
| // CHECK: def yyy_A2 | |
| // CHECK: def yyy_B0A0 | |
| // CHECK: def yyy_B0A1 | |
| // CHECK: def yyy_C0B0A0 | |
| // CHECK: def yyy_C0B0A1 | |
| // CHECK: def yyy_C0B1A0 | |
| // CHECK: def yyy_C0B1A1 | |
| // CHECK-NOT: def zzz_A0 | |
| // CHECK: def zzz_B0A0 | |
| // CHECK: def zzz_B0A1 | |
| // CHECK: def zzz_C0B0A0 | |
| // CHECK: def zzz_C0B0A1 | |
| // CHECK: def zzz_C0B1A0 | |
| // CHECK: def zzz_C0B1A1 | |
| class A<int a> { | |
| int Num = a; | |
| } | |
| multiclass B<int b> { | |
| def A0 : A<!add(10, b)>; | |
| def A1 : A<!add(20, b)>; | |
| } | |
| multiclass C<int c> { | |
| defm B0 : B<!add(100, c)>; | |
| defm B1 : B<!add(200, c)>; | |
| } | |
| defset list<A> As = { | |
| def A0 : A<1>; | |
| foreach i = 1-2 in { | |
| def A#i : A<!add(i, 1)>; | |
| } | |
| defset list<A> SubAs = { | |
| defm B0 : B<2>; | |
| defm C0 : C<3>; | |
| } | |
| } | |
| def Sum { | |
| int x = !foldl(0, As, a, b, !add(a, b.Num)); | |
| } | |
| foreach a = As in { | |
| def yyy_ # !cast<string>(a); | |
| } | |
| foreach a = SubAs in { | |
| def zzz_ # !cast<string>(a); | |
| } |