1 // RUN: llvm-tblgen %s | FileCheck %s 2 // XFAIL: vg_leak 3 4 // CHECK: def B0a { 5 // CHECK: string e = "B0"; 6 // CHECK: } 7 8 // CHECK: def B0ba { 9 // CHECK: string a = "B0b"; 10 // CHECK: string b = "B0"; 11 // CHECK: } 12 13 // CHECK: def B0bys { 14 // CHECK: string f = "B0b"; 15 // CHECK: string g = "B0"; 16 // CHECK: } 17 18 // CHECK: def B0cza { 19 // CHECK: string a = "B0cz"; 20 // CHECK: string b = "B0"; 21 // CHECK: } 22 23 // CHECK: def B0czyt { 24 // CHECK: string f = "B0cz"; 25 // CHECK: string g = "B0"; 26 // CHECK: } 27 28 // CHECK: def C0 { 29 // CHECK: string a = "C0"; 30 // CHECK: string b = "C0"; 31 // CHECK: string c = "a"; 32 // CHECK: } 33 34 // CHECK: def D0a { 35 // CHECK: string a = "D0a"; 36 // CHECK: string b = "D0a"; 37 // CHECK: string c = "D0"; 38 // CHECK: } 39 40 // CHECK: def D0b { 41 // CHECK: string a = "D0b"; 42 // CHECK: string b = "D0b"; 43 // CHECK: string c = "a"; 44 // CHECK: } 45 46 // CHECK: def xB0b { 47 // CHECK: string c = "B0b"; 48 // CHECK: string d = "B0"; 49 // CHECK: } 50 51 // CHECK: def xB0cz { 52 // CHECK: string c = "B0cz"; 53 // CHECK: string d = "B0"; 54 // CHECK: } 55 56 multiclass A<string p, string q> { 57 def a { 58 string a = NAME; 59 string b = p; 60 } 61 62 def x # NAME { 63 string c = NAME; 64 string d = p; 65 } 66 67 def y # q { 68 string f = NAME; 69 string g = p; 70 } 71 } 72 73 multiclass B<string name, string t> { 74 def a { 75 string e = NAME; 76 } 77 78 defm b : A<NAME, "s">; 79 80 defm NAME # c # name : A<NAME, t>; 81 } 82 83 defm B0 : B<"z", "t">; 84 85 class Cbase { 86 string a = NAME; 87 } 88 89 class C<string arg> : Cbase { 90 string b = NAME; 91 string c = arg; 92 } 93 94 def C0 : C<"a">; 95 96 multiclass D<string arg> { 97 def a : C<NAME>; 98 def b : C<arg>; 99 } 100 101 defm D0 : D<"a">; 102