brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · e3a7796 Raw
84 lines · plain
1// RUN: llvm-tblgen %s | FileCheck %s2// XFAIL: vg_leak3 4// CHECK: WorldHelloCC5// CHECK-NOT: WorldHelloCC6 7class C<string n> {8  string name = n;9}10 11multiclass Names<string n, string m> {12   def CC : C<n>;13   def World#NAME#CC : C<m>;14}15 16defm Hello : Names<"hello", "world">;17 18// Ensure that the same anonymous name is used as the prefix for all defs in an19// anonymous multiclass.20 21class Outer<C i> {22  C Inner = i;23}24 25multiclass MC<string name> {26  def hi : C<name>;27  def there : Outer<!cast<C>(!strconcat(NAME, "hi"))>;28}29 30defm : MC<"foo">;31 32multiclass MC2<string name> {33  def there : Outer<C<name> >;34}35 36// Ensure that we've correctly captured the reference to name from the implicit37// anonymous C def in the template parameter list of Outer.38// CHECK-NOT: MC2::name39 40defm : MC2<"bar">;41 42multiclass MC3<string s> {43  def ZFizz#s : C<s>;44}45 46defm "" : MC3<"Buzz">;47 48// CHECK: def ZFizzBuzz49// CHECK: string name = "Buzz";50// CHECK-NOT: MC3::s51 52multiclass MC4<string s> {53  def NAME#s : C<s>;54}55 56defm ZTagazok : MC4<"AToi">;57 58// CHECK: def ZTagazokAToi59// CHECK: string name = "AToi";60// CHECK-NOT: MC4::s61 62multiclass MC5<C c> {63  def NAME#c.name : C<c.name>;64}65 66def CTiger : C<"Tiger">;67defm Zebra : MC5<CTiger>;68 69// CHECK: def ZebraTiger70// CHECK: string name = "Tiger";71// CHECK-NOT: MC5::c72 73multiclass MC6<C c> {74  def NAME#Tiger#c.name : C<c.name>;75}76 77def CAligator : C<"Aligator">;78defm Zebra : MC6<CAligator>;79 80// CHECK: def ZebraTigerAligator81// CHECK: string name = "Aligator";82// CHECK-NOT: MC6::c83 84