97 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TableGen
		
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TableGen
		
	
	
	
| // RUN: llvm-tblgen %s | FileCheck %s
 | |
| // XFAIL: vg_leak
 | |
| 
 | |
| // "zing = 4" x 28
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK: zing = 4
 | |
| // CHECK-NOT: zing = 4
 | |
| 
 | |
| class C1<int A, string B> { 
 | |
|   int bar = A;
 | |
|   string thestr = B;
 | |
|   int zing;
 | |
| }
 | |
| 
 | |
| def T : C1<4, "blah">;
 | |
| 
 | |
| multiclass t1<int a1> {
 | |
|   def S1 : C1<a1, "foo"> {
 | |
|     int foo = 4;
 | |
|     let bar = 1;
 | |
|   }
 | |
|   def S2 : C1<a1, "bar">;
 | |
| }
 | |
| 
 | |
| multiclass t2<int a2> {
 | |
|   def S3 : C1<a2, "foo"> {
 | |
|     int foo = 4;
 | |
|     let bar = 1;
 | |
|   }
 | |
|   def S4 : C1<a2, "bar">;
 | |
| }
 | |
| 
 | |
| multiclass s1<int as1, int bs1> : t1<as1> {
 | |
|   def S5 : C1<bs1, "moo"> {
 | |
|     int moo = 3;
 | |
|     let bar = 1;
 | |
|   }
 | |
|   def S6 : C1<bs1, "baz">;
 | |
| }
 | |
| 
 | |
| multiclass s2<int as2> : t1<as2>, t2<as2>;
 | |
| 
 | |
| multiclass s3<int as3, int bs3> : t1<as3>, t2<as3> {
 | |
|   def S7 : C1<bs3, "moo"> {
 | |
|     int moo = 3;
 | |
|     let bar = 1;
 | |
|   }
 | |
|   def S8 : C1<bs3, "baz">;
 | |
| }
 | |
| 
 | |
| let zing = 4 in
 | |
| defm FOO1 : s1<42, 24>;
 | |
| 
 | |
| let zing = 4 in
 | |
| defm FOO2 : s2<99>;
 | |
| 
 | |
| let zing = 4 in
 | |
| defm FOO3 : s3<84, 48>;
 | |
| 
 | |
| def T4 : C1<6, "foo">;
 | |
| 
 | |
| let zing = 4 in
 | |
|   defm BAZ1 : s1<3, 4>;
 | |
| 
 | |
| let zing = 4 in
 | |
|   defm BAZ2 : s2<5>;
 | |
| 
 | |
| let zing = 4 in
 | |
|   defm BAZ3 : s3<6, 7>;
 | |
| 
 |