MultiClassInherit.td 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. // RUN: llvm-tblgen %s | FileCheck %s
  2. // XFAIL: vg_leak
  3. // "zing = 4" x 28
  4. // CHECK: zing = 4
  5. // CHECK: zing = 4
  6. // CHECK: zing = 4
  7. // CHECK: zing = 4
  8. // CHECK: zing = 4
  9. // CHECK: zing = 4
  10. // CHECK: zing = 4
  11. // CHECK: zing = 4
  12. // CHECK: zing = 4
  13. // CHECK: zing = 4
  14. // CHECK: zing = 4
  15. // CHECK: zing = 4
  16. // CHECK: zing = 4
  17. // CHECK: zing = 4
  18. // CHECK: zing = 4
  19. // CHECK: zing = 4
  20. // CHECK: zing = 4
  21. // CHECK: zing = 4
  22. // CHECK: zing = 4
  23. // CHECK: zing = 4
  24. // CHECK: zing = 4
  25. // CHECK: zing = 4
  26. // CHECK: zing = 4
  27. // CHECK: zing = 4
  28. // CHECK: zing = 4
  29. // CHECK: zing = 4
  30. // CHECK: zing = 4
  31. // CHECK: zing = 4
  32. // CHECK-NOT: zing = 4
  33. class C1<int A, string B> {
  34. int bar = A;
  35. string thestr = B;
  36. int zing;
  37. }
  38. def T : C1<4, "blah">;
  39. multiclass t1<int a1> {
  40. def S1 : C1<a1, "foo"> {
  41. int foo = 4;
  42. let bar = 1;
  43. }
  44. def S2 : C1<a1, "bar">;
  45. }
  46. multiclass t2<int a2> {
  47. def S3 : C1<a2, "foo"> {
  48. int foo = 4;
  49. let bar = 1;
  50. }
  51. def S4 : C1<a2, "bar">;
  52. }
  53. multiclass s1<int as1, int bs1> : t1<as1> {
  54. def S5 : C1<bs1, "moo"> {
  55. int moo = 3;
  56. let bar = 1;
  57. }
  58. def S6 : C1<bs1, "baz">;
  59. }
  60. multiclass s2<int as2> : t1<as2>, t2<as2>;
  61. multiclass s3<int as3, int bs3> : t1<as3>, t2<as3> {
  62. def S7 : C1<bs3, "moo"> {
  63. int moo = 3;
  64. let bar = 1;
  65. }
  66. def S8 : C1<bs3, "baz">;
  67. }
  68. let zing = 4 in
  69. defm FOO1 : s1<42, 24>;
  70. let zing = 4 in
  71. defm FOO2 : s2<99>;
  72. let zing = 4 in
  73. defm FOO3 : s3<84, 48>;
  74. def T4 : C1<6, "foo">;
  75. let zing = 4 in
  76. defm BAZ1 : s1<3, 4>;
  77. let zing = 4 in
  78. defm BAZ2 : s2<5>;
  79. let zing = 4 in
  80. defm BAZ3 : s3<6, 7>;