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 56multiclass 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 73multiclass 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 83defm B0 : B<"z", "t">; 84 85class Cbase { 86 string a = NAME; 87} 88 89class C<string arg> : Cbase { 90 string b = NAME; 91 string c = arg; 92} 93 94def C0 : C<"a">; 95 96multiclass D<string arg> { 97 def a : C<NAME>; 98 def b : C<arg>; 99} 100 101defm D0 : D<"a">; 102