<div dir="ltr">On 28 November 2013 09:29, Eric Anholt <span dir="ltr"><<a href="mailto:eric@anholt.net" target="_blank">eric@anholt.net</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">Paul Berry <<a href="mailto:stereotype441@gmail.com">stereotype441@gmail.com</a>> writes:<br>
<br>
> If an ir_loop has a non-null "counter" field, the variable referred to<br>
> by this field is implicitly read and written by the loop.  We need to<br>
> account for this in ir_variable_refcount, otherwise there is a danger<br>
> we will try to dead-code-eliminate the loop counter variable.<br>
><br>
> Note: at the moment the dead code elimination bug doesn't occur due to<br>
> a bug in ir_hierarchical_visitor: it doesn't visit the "counter"<br>
> field, so dead code elimination doesn't treat it as a candidate for<br>
> elimination.  But the patch to follow will fix that bug, so we need to<br>
> fix ir_variable_refcount first in order to avoid breaking dead code<br>
> elimination.<br>
<br>
</div>This series is:<br>
<br>
Reviewed-by: Eric Anholt <<a href="mailto:eric@anholt.net">eric@anholt.net</a>><br>
<br>
I wish loop_control.cpp would make loop->control informational, and not<br>
muck with the existing control flow in the loop.  That way we could just<br>
ignore loop->control in the backend, and it would only get used by loop<br>
unrolling.  I'm pretty sure I've seen loops where both loop controls<br>
(loop->control and the original variable) end up getting used, and it's<br>
something that's going to be hard for the backend to fix back up.<br>
</blockquote></div><br></div><div class="gmail_extra">Yeah, we talked about this on Tuesday.  I'm working on a patch series to fix up this mess.<br></div></div>