| // 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); |
| } |