| // 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,?}>; |