TableGen: Explicitly forbid self-references to field members
Summary:
Otherwise, patterns like in the test case produce cryptic error
messages about fields being resolved incompletely.
Change-Id: I713c0191f00fe140ad698675803ab1f8823dc5bd
Reviewers: arsenm, craig.topper, tra, MartinO
Subscribers: wdng, llvm-commits
Differential Revision: https://reviews.llvm.org/D44476
llvm-svn: 327850
diff --git a/llvm/test/TableGen/self-reference-recursion.td b/llvm/test/TableGen/self-reference-recursion.td
new file mode 100644
index 0000000..7eadfb7
--- /dev/null
+++ b/llvm/test/TableGen/self-reference-recursion.td
@@ -0,0 +1,9 @@
+// RUN: not llvm-tblgen %s 2>&1 | FileCheck %s
+// XFAIL: vg_leak
+
+class A<string self> {
+ int x = !cast<A>(self).x;
+}
+
+// CHECK: error: Attempting to access field 'x' of 'A0' is a forbidden self-reference
+def A0 : A<"A0">;