1// RUN: llvm-tblgen %s | FileCheck %s 2// XFAIL: vg_leak 3 4// CHECK: --- Defs --- 5 6// Test that P and Q are not replaced by ?. TableGen's codegen emitter backend 7// relies on keeping variable references like this around to describe the 8// structure of instruction encodings. 9// 10// CHECK: def A { 11// CHECK: bits<8> Inst = { 1, 1, 1, 1, 1, 1, P, Q }; 12// CHECK: bits<2> src = { ?, ? }; 13// CHECK: bit P = ?; 14// CHECK: bit Q = ?; 15// CHECK: } 16 17def A { 18 bits<8> Inst; 19 bits<2> src; 20 21 bit P; 22 bit Q; 23 24 let Inst{7...2} = 0x3f; 25 let Inst{1} = P; 26 let Inst{0} = Q; 27 28 let P = src{1}; 29 let Q = src{0}; 30} 31 32class x { 33 field bits<32> A; 34} 35 36class y<bits<2> B> : x { 37 let A{21...20} = B; 38} 39 40def z : y<{0,?}>; 41