| // 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; | |
| } | |
| class y<bits<2> B> : x { | |
| let A{21-20} = B; | |
| } | |
| def z : y<{0,?}>; |