<div dir="ltr">Hello Devs,<div><br></div><div>Machine Instruction verifier pass always validates Live variable info associated with MachineInstr along with other checks.</div><div><br></div><div>Please consider following scenario (w.r.t bugZilla <span style="font-size:12.8px;white-space:nowrap">32583)</span></div><div><span style="font-size:12.8px;white-space:nowrap"><br></span></div><div><span style="font-size:12.8px;white-space:nowrap">1/  MachineCSE pass may prohibit optimising out a common sub-expression for instruction using physical registers </span></div><div><span style="font-size:12.8px;white-space:nowrap">by looking at the LiveIn info of successor basic blocks. </span></div><div><span style="font-size:12.8px;white-space:nowrap"><br></span></div><div><span style="font-size:12.8px;white-space:nowrap">2/ Which means we need Live Variables analysis to happen prior to executing MachineCSE.</span></div><div><span style="font-size:12.8px;white-space:nowrap"><br></span></div><div><span style="font-size:12.8px;white-space:nowrap">3/ Live variable analysis associates Kill/def information with MachineOperands.</span></div><div><span style="font-size:12.8px;white-space:nowrap"><br></span></div><div><span style="font-size:12.8px;white-space:nowrap">4/ In one of the regression Peephole optimizer (which does not uses liveness information)</span><br></div><div><span style="font-size:12.8px;white-space:nowrap">performs certain transformations over MachineBasicBlock which potentially dirties the</span></div><div><span style="font-size:12.8px;white-space:nowrap">liveness information computed early. </span></div><div><span style="font-size:12.8px;white-space:nowrap"><br></span></div><div><span style="font-size:12.8px;white-space:nowrap">5/ Now, when Machine Instruction verifier kicks in after Peephole optimizer it reports use after kill violation</span></div><div><span style="font-size:12.8px;white-space:nowrap">over a particular instruction.  </span></div><div><br></div><div>Can we selectively turn of the live variable checking in Machine instruction verifier till next Live variable pass is invoked (as per the need of following pass).<br></div><div><br></div><div>This may sound like defeating the purpose of machine instruction verifier which checks instruction validity against different parameters after each transformation pass, but if a pass does not use Live ness information should not be constrained to do other transformations which may dirty the live ness information.</div><div><br></div><div>Please provide you comments.</div><div><br></div><div>Thanks,</div><div>Jatin Bhateja</div></div>