Home | History | Annotate | Download | only in TableGen
      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