// RUN: llvm-tblgen %s | FileCheck %s
// XFAIL: vg_leak

// CHECK: --- Defs ---

// CHECK: def A00 {
// CHECK:   int sum = 7;
// CHECK: }

// CHECK: def A01 {
// CHECK:   int sum = 8;
// CHECK: }

// CHECK-NOT: def B0

// CHECK: def B12 {
// CHECK:   int val = 9;
// CHECK: }

// CHECK: def B20 {
// CHECK:   int val = 7;
// CHECK: }

// CHECK: def B24 {
// CHECK:   int val = 11;
// CHECK: }

// CHECK: def B25 {
// CHECK:   int val = 12;
// CHECK: }

// CHECK: def C04
// CHECK: def C05

// CHECK: def D0A
// CHECK-NOT: def D0B
// CHECK: def D1A
// CHECK: def D1B

// CHECK: def E01
// CHECK: def E02
// CHECK-NOT: def E0C

// CHECK: def E18
// CHECK: def E19
// CHECK: def E1C33
// CHECK: def E1C34
// CHECK: def E1C55
// CHECK: def E1C56

// CHECK-NOT: def F0
// CHECK-NOT: def F1
// CHECK-NOT: def F2_0_0
// CHECK:     def F2_1_0
// CHECK-NOT: def F2_1_2
// CHECK:     def F2_2_0
// CHECK:     def F2_2_1
// CHECK-NOT: def F2_2_2

multiclass A<int x> {
  foreach i = [0, 1] in {
    def NAME#i {
      int sum = !add(x, i);
    }
  }
}

defm A0 : A<7>;

multiclass B<int x, list<int> lst> {
  foreach i = lst in {
    def NAME#i {
      int val = !add(x, i);
    }
  }
}

defm B0 : B<7, []>;
defm B1 : B<7, [2]>;
defm B2 : B<7, [0, 4, 5]>;

multiclass C<int x> {
  foreach i = [x, !add(x, 1)] in {
    def NAME#i;
  }
}

defm C0 : C<4>;

multiclass D<bit b> {
  def A;

  foreach _ = !if(b, [0], []<int>) in
  def B;
}

defm D0 : D<0>;
defm D1 : D<1>;

multiclass E<list<int> lst, int x>
  : C<x> {
  foreach i = lst in
  defm C#i : C<i>;
}

defm E0 : E<[], 1>;
defm E1 : E<[3, 5], 8>;

multiclass F<list<int> lst> {
  foreach i = lst in
  foreach j = !foldl([]<int>, lst, lhs, x,
                     !if(!lt(x, i), !listconcat(lhs, [x]), lhs)) in
  def _#i#_#j;
}

defm F0 : F<[]>;
defm F1 : F<[0]>;
defm F2 : F<[0, 1, 2]>;
