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