1*f4a2713aSLionel Sambuc// RUN: llvm-tblgen %s | FileCheck %s
2*f4a2713aSLionel Sambuc// XFAIL: vg_leak
3*f4a2713aSLionel Sambuc
4*f4a2713aSLionel Sambuc// CHECK: zing = 4
5*f4a2713aSLionel Sambuc// CHECK: zing = 4
6*f4a2713aSLionel Sambuc// CHECK: zing = 4
7*f4a2713aSLionel Sambuc// CHECK: zing = 4
8*f4a2713aSLionel Sambuc// CHECK-NOT: zing = 4
9*f4a2713aSLionel Sambuc
10*f4a2713aSLionel Sambucclass C1<int A, string B> {
11*f4a2713aSLionel Sambuc  int bar = A;
12*f4a2713aSLionel Sambuc  string thestr = B;
13*f4a2713aSLionel Sambuc  int zing;
14*f4a2713aSLionel Sambuc}
15*f4a2713aSLionel Sambuc
16*f4a2713aSLionel Sambucdef T : C1<4, "blah">;
17*f4a2713aSLionel Sambuc
18*f4a2713aSLionel Sambucmulticlass t<int a> {
19*f4a2713aSLionel Sambuc  def S1 : C1<a, "foo"> {
20*f4a2713aSLionel Sambuc    int foo = 4;
21*f4a2713aSLionel Sambuc    let bar = 1;
22*f4a2713aSLionel Sambuc  }
23*f4a2713aSLionel Sambuc  def S2 : C1<a, "bar">;
24*f4a2713aSLionel Sambuc}
25*f4a2713aSLionel Sambuc
26*f4a2713aSLionel Sambucmulticlass s<int a> {
27*f4a2713aSLionel Sambuc  def S3 : C1<a, "moo"> {
28*f4a2713aSLionel Sambuc    int moo = 3;
29*f4a2713aSLionel Sambuc    let bar = 1;
30*f4a2713aSLionel Sambuc  }
31*f4a2713aSLionel Sambuc  def S4 : C1<a, "baz">;
32*f4a2713aSLionel Sambuc}
33*f4a2713aSLionel Sambuc
34*f4a2713aSLionel Sambucdefm FOO : t<42>, s<24>;
35*f4a2713aSLionel Sambuc
36*f4a2713aSLionel Sambucdef T4 : C1<6, "foo">;
37*f4a2713aSLionel Sambuc
38*f4a2713aSLionel Sambuclet zing = 4 in
39*f4a2713aSLionel Sambuc  defm BAZ : t<3>, s<4>;
40