blob: 04fef2c84995b114a81adf17f6af29ce9ccc0fca [file] [log] [blame]
Bill Wendlingb4be7f62013-08-22 20:46:05 +00001// RUN: llvm-tblgen %s | FileCheck %s
NAKAMURA Takumia22657f2013-11-10 14:26:08 +00002// XFAIL: vg_leak
Bill Wendlingb4be7f62013-08-22 20:46:05 +00003
4// "zing = 4" x 28
5// CHECK: zing = 4
6// CHECK: zing = 4
7// CHECK: zing = 4
8// CHECK: zing = 4
9// CHECK: zing = 4
10// CHECK: zing = 4
11// CHECK: zing = 4
12// CHECK: zing = 4
13// CHECK: zing = 4
14// CHECK: zing = 4
15// CHECK: zing = 4
16// CHECK: zing = 4
17// CHECK: zing = 4
18// CHECK: zing = 4
19// CHECK: zing = 4
20// CHECK: zing = 4
21// CHECK: zing = 4
22// CHECK: zing = 4
23// CHECK: zing = 4
24// CHECK: zing = 4
25// CHECK: zing = 4
26// CHECK: zing = 4
27// CHECK: zing = 4
28// CHECK: zing = 4
29// CHECK: zing = 4
30// CHECK: zing = 4
31// CHECK: zing = 4
32// CHECK: zing = 4
33// CHECK-NOT: zing = 4
David Greenede444af2009-04-22 16:42:54 +000034
35class C1<int A, string B> {
36 int bar = A;
37 string thestr = B;
38 int zing;
39}
40
41def T : C1<4, "blah">;
42
David Greened34a73b2009-04-24 16:55:41 +000043multiclass t1<int a1> {
44 def S1 : C1<a1, "foo"> {
David Greenede444af2009-04-22 16:42:54 +000045 int foo = 4;
46 let bar = 1;
47 }
David Greened34a73b2009-04-24 16:55:41 +000048 def S2 : C1<a1, "bar">;
David Greenede444af2009-04-22 16:42:54 +000049}
50
David Greened34a73b2009-04-24 16:55:41 +000051multiclass t2<int a2> {
52 def S3 : C1<a2, "foo"> {
53 int foo = 4;
54 let bar = 1;
55 }
56 def S4 : C1<a2, "bar">;
57}
58
59multiclass s1<int as1, int bs1> : t1<as1> {
60 def S5 : C1<bs1, "moo"> {
David Greenede444af2009-04-22 16:42:54 +000061 int moo = 3;
62 let bar = 1;
63 }
David Greened34a73b2009-04-24 16:55:41 +000064 def S6 : C1<bs1, "baz">;
David Greenede444af2009-04-22 16:42:54 +000065}
66
David Greened34a73b2009-04-24 16:55:41 +000067multiclass s2<int as2> : t1<as2>, t2<as2>;
68
69multiclass s3<int as3, int bs3> : t1<as3>, t2<as3> {
70 def S7 : C1<bs3, "moo"> {
71 int moo = 3;
72 let bar = 1;
73 }
74 def S8 : C1<bs3, "baz">;
75}
76
77let zing = 4 in
78defm FOO1 : s1<42, 24>;
79
80let zing = 4 in
81defm FOO2 : s2<99>;
82
83let zing = 4 in
84defm FOO3 : s3<84, 48>;
David Greenede444af2009-04-22 16:42:54 +000085
86def T4 : C1<6, "foo">;
87
88let zing = 4 in
David Greened34a73b2009-04-24 16:55:41 +000089 defm BAZ1 : s1<3, 4>;
90
91let zing = 4 in
92 defm BAZ2 : s2<5>;
93
94let zing = 4 in
95 defm BAZ3 : s3<6, 7>;
96