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