<div dir="ltr"><div>I have some code such that:</div><div><br></div><div>vgpr1 = mov 0</div><div>branch bb</div><div>bb:</div><div>PHI vgpr2 = vgpr1, ….</div><div>PHI vgpr3 = vgpr1, ….</div><div>PHI vgpr4 = vgpr1, ….</div><div>PHI vgpr5 = vgpr1, ….</div><div><br></div><div>PHI node elimination is generating copies for all these PHIs (and hoisting them) as such:</div><div><br></div><div>vgpr1 = 0</div><div>vgpr20 = COPY vgpr1 // old vgpr2</div><div>vgpr30 = COPY vgpr1 // old vgpr3</div><div>vgpr40 = COPY vgpr1 // old vgpr4</div><div>vgpr 50 = COPY vgprt1 // old vgpr5</div><div><br></div><div>I expect the zero to get propagated in a later phase but it's not. I was looking at adding immediate folding to the register coalescer but this doesn't really seem like the right place. Any suggestions?</div><div><br></div><div>I'm sort of surprised that other targets haven't run into this issue.</div><div><br></div><div>-Ryan</div><div><br></div><div><br></div></div>