Great, if we need to do it, let's do it. Let's just try to test the stuff that only this catches. Greatly appreciate you being willing to find better test cases<br><br><div class="gmail_quote"><div dir="ltr">On Thu, Feb 2, 2017, 8:24 AM  <<a href="mailto:junbuml@codeaurora.org">junbuml@codeaurora.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br class="gmail_msg">
Thanks Daniel for the detail.<br class="gmail_msg">
<br class="gmail_msg">
I believe this is a necessary process to open up more jump threading<br class="gmail_msg">
during jump threading tasks even though it could be done in other place.<br class="gmail_msg">
This is the initial comment in SimplifyPartiallyRedundantLoad() :<br class="gmail_msg">
  /// This is an important optimization that encourages jump threading,<br class="gmail_msg">
and needs to be run<br class="gmail_msg">
  /// interlaced with other jump threading tasks.<br class="gmail_msg">
<br class="gmail_msg">
This patch simply continue scanning to find a loaded value through<br class="gmail_msg">
single predecessors, instead of being limited within one single block,<br class="gmail_msg">
while respecting the backward scan limit (6 instructions by default).<br class="gmail_msg">
<br class="gmail_msg">
I observed this patch was applied in spec2000/2006 pretty widely, so I<br class="gmail_msg">
will find the case which was not handled before in the whole pipeline.<br class="gmail_msg">
<br class="gmail_msg">
Thanks,<br class="gmail_msg">
Jun<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
On 2017-02-02 10:47, Daniel Berlin via Phabricator wrote:<br class="gmail_msg">
> dberlin added a comment.<br class="gmail_msg">
><br class="gmail_msg">
> Also, for the record, all of these testcases are fully redundant loads.<br class="gmail_msg">
><br class="gmail_msg">
> they are all of the form<br class="gmail_msg">
><br class="gmail_msg">
>   load<br class="gmail_msg">
>   if (...)<br class="gmail_msg">
>   {<br class="gmail_msg">
>   load<br class="gmail_msg">
>   }<br class="gmail_msg">
><br class="gmail_msg">
> This is a full redundancy. The initial load dominates the others, with<br class="gmail_msg">
> nothing in between, and so they are fully redundant This is also why<br class="gmail_msg">
> every pass we have that does any load elimination will already<br class="gmail_msg">
> eliminate them.<br class="gmail_msg">
><br class="gmail_msg">
> A partially redundant load would be<br class="gmail_msg">
><br class="gmail_msg">
>   if (a)<br class="gmail_msg">
>    load a<br class="gmail_msg">
>   else<br class="gmail_msg">
>     <nothing><br class="gmail_msg">
>   load a<br class="gmail_msg">
><br class="gmail_msg">
> This load is partially redundant because it unnecessarily happens<br class="gmail_msg">
> twice when we take the if(a)'s true branch<br class="gmail_msg">
><br class="gmail_msg">
> PRE will turn it into:<br class="gmail_msg">
><br class="gmail_msg">
>   if (a)<br class="gmail_msg">
>    load a<br class="gmail_msg">
>   else<br class="gmail_msg">
>    load a<br class="gmail_msg">
>   result = phi(...)<br class="gmail_msg">
><br class="gmail_msg">
> As mentioned, GVN already does this transformation, so i'd really like<br class="gmail_msg">
> to see a testcase where you doing this in jump threading enables an<br class="gmail_msg">
> optimization we don't get already.<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
> Repository:<br class="gmail_msg">
>   rL LLVM<br class="gmail_msg">
><br class="gmail_msg">
> <a href="https://reviews.llvm.org/D29200" rel="noreferrer" class="gmail_msg" target="_blank">https://reviews.llvm.org/D29200</a><br class="gmail_msg">
<br class="gmail_msg">
--<br class="gmail_msg">
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm<br class="gmail_msg">
Technologies, Inc.<br class="gmail_msg">
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a<br class="gmail_msg">
Linux Foundation Collaborative Project.<br class="gmail_msg">
</blockquote></div>