Home | History | Annotate | Download | only in TableGen
      1 // RUN: llvm-tblgen %s | FileCheck %s
      2 // XFAIL: vg_leak
      3 
      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
     34 
     35 class C1<int A, string B> { 
     36   int bar = A;
     37   string thestr = B;
     38   int zing;
     39 }
     40 
     41 def T : C1<4, "blah">;
     42 
     43 multiclass t1<int a1> {
     44   def S1 : C1<a1, "foo"> {
     45     int foo = 4;
     46     let bar = 1;
     47   }
     48   def S2 : C1<a1, "bar">;
     49 }
     50 
     51 multiclass 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 
     59 multiclass s1<int as1, int bs1> : t1<as1> {
     60   def S5 : C1<bs1, "moo"> {
     61     int moo = 3;
     62     let bar = 1;
     63   }
     64   def S6 : C1<bs1, "baz">;
     65 }
     66 
     67 multiclass s2<int as2> : t1<as2>, t2<as2>;
     68 
     69 multiclass 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 
     77 let zing = 4 in
     78 defm FOO1 : s1<42, 24>;
     79 
     80 let zing = 4 in
     81 defm FOO2 : s2<99>;
     82 
     83 let zing = 4 in
     84 defm FOO3 : s3<84, 48>;
     85 
     86 def T4 : C1<6, "foo">;
     87 
     88 let zing = 4 in
     89   defm BAZ1 : s1<3, 4>;
     90 
     91 let zing = 4 in
     92   defm BAZ2 : s2<5>;
     93 
     94 let zing = 4 in
     95   defm BAZ3 : s3<6, 7>;
     96 
     97