// RUN: llvm-tblgen %s | FileCheck %s // XFAIL: vg_leak // CHECK: WorldHelloCC // CHECK-NOT: WorldHelloCC class C<string n> { string name = n; } multiclass Names<string n, string m> { def CC : C<n>; def World#NAME#CC : C<m>; } defm Hello : Names<"hello", "world">; // Ensure that the same anonymous name is used as the prefix for all defs in an // anonymous multiclass. class Outer<C i> { C Inner = i; } multiclass MC<string name> { def hi : C<name>; def there : Outer<!cast<C>(!strconcat(NAME, "hi"))>; } defm : MC<"foo">; multiclass MC2<string name> { def there : Outer<C<name> >; } // Ensure that we've correctly captured the reference to name from the implicit // anonymous C def in the template parameter list of Outer. // CHECK-NOT: MC2::name defm : MC2<"bar">;