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