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 17 def 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 32 class x { 33 field bits<32> A; 34 } 35 36 class y<bits<2> B> : x { 37 let A{21-20} = B; 38 } 39 40 def z : y<{0,?}>; 41