// RUN: llvm-tblgen %s | FileCheck %s // XFAIL: vg_leak // CHECK: def B0a { // CHECK: string e = "B0"; // CHECK: } // CHECK: def B0ba { // CHECK: string a = "B0b"; // CHECK: string b = "B0"; // CHECK: } // CHECK: def B0bys { // CHECK: string f = "B0b"; // CHECK: string g = "B0"; // CHECK: } // CHECK: def B0cza { // CHECK: string a = "B0cz"; // CHECK: string b = "B0"; // CHECK: } // CHECK: def B0czyt { // CHECK: string f = "B0cz"; // CHECK: string g = "B0"; // CHECK: } // CHECK: def C0 { // CHECK: string a = "C0"; // CHECK: string b = "C0"; // CHECK: string c = "a"; // CHECK: } // CHECK: def D0a { // CHECK: string a = "D0a"; // CHECK: string b = "D0a"; // CHECK: string c = "D0"; // CHECK: } // CHECK: def D0b { // CHECK: string a = "D0b"; // CHECK: string b = "D0b"; // CHECK: string c = "a"; // CHECK: } // CHECK: def xB0b { // CHECK: string c = "B0b"; // CHECK: string d = "B0"; // CHECK: } // CHECK: def xB0cz { // CHECK: string c = "B0cz"; // CHECK: string d = "B0"; // CHECK: } multiclass A<string p, string q> { def a { string a = NAME; string b = p; } def x # NAME { string c = NAME; string d = p; } def y # q { string f = NAME; string g = p; } } multiclass B<string name, string t> { def a { string e = NAME; } defm b : A<NAME, "s">; defm NAME # c # name : A<NAME, t>; } defm B0 : B<"z", "t">; class Cbase { string a = NAME; } class C<string arg> : Cbase { string b = NAME; string c = arg; } def C0 : C<"a">; multiclass D<string arg> { def a : C<NAME>; def b : C<arg>; } defm D0 : D<"a">;