summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorNicolai Haehnle <nhaehnle@gmail.com>2018-03-06 13:48:30 +0000
committerNicolai Haehnle <nhaehnle@gmail.com>2018-03-06 13:48:30 +0000
commit9a84a509130c1c6501655f89ce43b9e7d37a2bb4 (patch)
tree16ebd621ef676ea6baff021fde0950b4d0a66e63 /llvm/test
parent13080fd14e71fa4cf64bdd477ebc8ca01b9c856f (diff)
downloadbcm5719-llvm-9a84a509130c1c6501655f89ce43b9e7d37a2bb4.tar.gz
bcm5719-llvm-9a84a509130c1c6501655f89ce43b9e7d37a2bb4.zip
TableGen: Simplify BitsInit::resolveReferences
Summary: No functional change intended. The removed code has a loop for recursive resolving, which is superseded by the recursive resolving done by the Resolver implementations. Add a test case which was broken by an earlier version of this change. Change-Id: Ib208d037b77a8bbb725977f1388601fc984723d8 Reviewers: arsenm, craig.topper, tra, MartinO Subscribers: wdng, llvm-commits Differential Revision: https://reviews.llvm.org/D43655 llvm-svn: 326784
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/TableGen/UnsetBitInit.td31
1 files changed, 30 insertions, 1 deletions
diff --git a/llvm/test/TableGen/UnsetBitInit.td b/llvm/test/TableGen/UnsetBitInit.td
index d232293d787..694847358f6 100644
--- a/llvm/test/TableGen/UnsetBitInit.td
+++ b/llvm/test/TableGen/UnsetBitInit.td
@@ -1,5 +1,34 @@
-// RUN: llvm-tblgen %s
+// RUN: llvm-tblgen %s | FileCheck %s
// XFAIL: vg_leak
+
+// CHECK: --- Defs ---
+
+// Test that P and Q are not replaced by ?. TableGen's codegen emitter backend
+// relies on keeping variable references like this around to describe the
+// structure of instruction encodings.
+//
+// CHECK: def A {
+// CHECK: bits<8> Inst = { 1, 1, 1, 1, 1, 1, P, Q };
+// CHECK: bits<2> src = { ?, ? };
+// CHECK: bit P = ?;
+// CHECK: bit Q = ?;
+// CHECK: }
+
+def A {
+ bits<8> Inst;
+ bits<2> src;
+
+ bit P;
+ bit Q;
+
+ let Inst{7-2} = 0x3f;
+ let Inst{1} = P;
+ let Inst{0} = Q;
+
+ let P = src{1};
+ let Q = src{0};
+}
+
class x {
field bits<32> A;
}
OpenPOWER on IntegriCloud