<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Dec 28, 2010, at 1:38 PM, Cameron Zwarich wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Dec 28, 2010, at 1:28 PM, Jakob Stoklund Olesen wrote:</div><br><blockquote type="cite"><div>On Dec 28, 2010, at 1:03 PM, Cameron Zwarich wrote:<br><font class="Apple-style-span" color="#006312"><font class="Apple-style-span" color="#144FAE"><br></font></font><blockquote type="cite">What's the format of variadic instructions? Wouldn't all of the explicit defs appear at the front?<br></blockquote><br>No, they look like:<br><br>  <fixed defs>, <fixed uses>, <variadic ops...>, <implicit ops><br><br>The variadic operands can be uses or defs. For instance, ARM's LDM instructions have a variable number of defs.<font class="Apple-style-span"><font class="Apple-style-span" color="#144FAE"><br></font></font></div></blockquote><br></div><div>Ah, okay. I could check whether the instruction is variadic before bailing out early after the last explicit def, but maybe I should just roll it out for now. 28% is a nice speedup though. ;-)</div></div></blockquote></div><br><div>Maybe you are going about this the wrong way. The majority of virtual registers are never involved with PHIs, so StrongPHIElimination shouldn't have to look at them at all. Yet, here you are iterating over all operands in the machine code.</div><div><br></div><div>Perhaps you could keep track of the virtual registers that are used or defined by PHI instructions and use their use-def chains instead?</div><div><br></div><div>/jakob</div><div><br></div></body></html>