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