diff llvm/test/TableGen/size.td @ 207:2e18cbf3894f

LLVM12
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 08 Jun 2021 06:07:14 +0900
parents 1d019706d866
children
line wrap: on
line diff
--- a/llvm/test/TableGen/size.td	Mon May 25 11:55:54 2020 +0900
+++ b/llvm/test/TableGen/size.td	Tue Jun 08 06:07:14 2021 +0900
@@ -1,6 +1,8 @@
 // RUN: llvm-tblgen %s | FileCheck %s
 // XFAIL: vg_leak
 
+// Test !size of lists.
+
 // CHECK: --- Defs ---
 
 // CHECK: def A1 {
@@ -32,3 +34,70 @@
 
 def B1 : B<[]>;
 def B2 : B<["a", "b"]>;
+
+// Test !size of DAGs.
+
+// CHECK: def D0 {
+// CHECK:   int Val = 0;
+// CHECK: }
+
+// CHECK: def D1 {
+// CHECK:   int Val = 1;
+// CHECK: }
+
+// CHECK: def D2 {
+// CHECK:   int Val = 2;
+// CHECK: }
+
+// CHECK: def D3 {
+// CHECK:   int Val = 3;
+// CHECK: }
+
+// CHECK: def D4 {
+// CHECK:   int Val = 4;
+// CHECK: }
+
+class D<dag D> {
+  int Val = !size(D);
+}
+
+def op;
+
+def D0 : D<(op)>;
+def D1 : D<(op "string")>;
+def D2 : D<(op "string", 42)>;
+def D3 : D<(op "string", 42, (op "sub-dag"))>;
+def D4 : D<(op "string", 42, (op "sub-dag"), D0.Val)>;
+
+// Test !size of strings.
+
+// CHECK: def S0 {
+// CHECK:   int Val = 0;
+// CHECK: }
+
+// CHECK: def S1 {
+// CHECK:   int Val = 1;
+// CHECK: }
+
+// CHECK: def S2 {
+// CHECK:   int Val = 2;
+// CHECK: }
+
+// CHECK: def S3 {
+// CHECK:   int Val = 3;
+// CHECK: }
+
+// CHECK: def S4 {
+// CHECK:   int Val = 29;
+// CHECK: }
+
+class S<string S> {
+  int Val = !size(S);
+}
+
+def S0 : S<"">;
+def S1 : S<"a">;
+def S2 : S<"ab">;
+def S3 : S<"abc">;
+def S4 : S<"This is the end of the world!">;
+