diff llvm/test/TableGen/foreach-leak.td @ 150:1d019706d866

LLVM10
author anatofuz
date Thu, 13 Feb 2020 15:10:13 +0900
parents
children c4bab56944e8
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/llvm/test/TableGen/foreach-leak.td	Thu Feb 13 15:10:13 2020 +0900
@@ -0,0 +1,28 @@
+// RUN: llvm-tblgen %s | FileCheck %s
+// XFAIL: vg_leak
+
+// CHECK: --- Classes ---
+// CHECK: list<int> ret = !foreach(a,
+
+// CHECK: --- Defs ---
+
+// CHECK: def C0 {
+// CHECK:   list<list<int>> ret = {{\[}}[1, 2, 3], [1, 2, 3]];
+// CHECK: }
+
+// The variable name 'a' is used both in the "inner" and in the "outer" foreach.
+// The test ensure that the inner declaration of 'a' properly shadows the outer
+// one.
+class A<list<int> lst> {
+  list<int> ret = !foreach(a, lst, !add(a, 1));
+}
+
+class B<list<int> lst1, list<int> lst2> {
+  list<list<int>> ret = !foreach(a, lst1, A<lst2>.ret);
+}
+
+class C<list<int> lst2> {
+  list<list<int>> ret = B<[0, 1], lst2>.ret;
+}
+
+def C0 : C<[0, 1, 2]>;