<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p>If someone can produce an *IR* reproducer which they believe is
incorrect, I'm happy to take a look at the PRE code. I will not
have the time to reproduce this from C or work through the
interaction of other passes; I will only look at this if there is
a bug with PRE specific IR reproducer attached.</p>
<p>Philip<br>
</p>
<br>
<div class="moz-cite-prefix">On 01/16/2017 10:14 AM, Daniel Berlin
via llvm-dev wrote:<br>
</div>
<blockquote
cite="mid:CAF4BwTXepSL1QUJdUfdPLpgQ2RdFP8kfY7San4NCNSYKrFbC7g@mail.gmail.com"
type="cite">
<div dir="ltr"><br>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Mon, Jan 16, 2017 at 2:46 AM,
Mikael Holmén <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:mikael.holmen@ericsson.com" target="_blank">mikael.holmen@ericsson.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">Hi,<span class="gmail-"><br>
<br>
On 01/13/2017 10:29 PM, Daniel Berlin wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px
0px 0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
Yeah, there's a lot of things this could be.<br>
<br>
On the memdep side:<br>
Note that memdep is not actually properly updated in
all cases by most<br>
passes that claim to not invalidate it (they don't
invalidate dependent<br>
pointers, only pointers they directly touch).<br>
<br>
There's already a bug filed about this.<br>
</blockquote>
<br>
</span>
You mean<br>
<a moz-do-not-send="true"
href="https://llvm.org/bugs/show_bug.cgi?id=27740"
rel="noreferrer" target="_blank">https://llvm.org/bugs/show_bu<wbr>g.cgi?id=27740</a><br>
?</blockquote>
<div>Among others.</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex"><span class="gmail-"><br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px
0px 0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
So far we've only seen<br>
missed-opt, not wrong code from this.<br>
But it should be possible to generate wrong code bugs
with it (if you<br>
place the load/store in a place that invalidates the
cached dependent<br>
result) , so i wonder if this is one.<br>
</blockquote>
<br>
</span>
Any idea what to do about it?<br>
<br>
</blockquote>
<div>It depends on where the real bug is.</div>
<div><br>
</div>
<div><br>
You filed a reproducer that does not require running the
other passes first, which means it's either just a bug in
PRE, or a bug in memdep.</div>
<div><br>
</div>
<div>If i was a betting man, i'd bet on PRE and it's
inter-iteration pre attempts.</div>
<div>Staring at this case for a second, my money is on the
following happening.</div>
<div><br>
</div>
<div>1. PRE starts by asking if the value of step[i] where i
== 0 is fully available in all preds</div>
<div>2. PHITransaddr get it as part of memdep, and inside of
those preds (which are in loop 1, not loop2), using it's
magical powers, gives an answer about step[i] (note, not
step[0]) instead. This answer may even be valid in the
loop. The problem may even be related to the fact that
the loops both iterate the same way (so it thinks step[i]
is valid in both, even though the i's are different).</div>
<div>3. The answer is not valid outside of the loop, but it
now thinks the value is fully available</div>
<div>4. It performs insertions and gives you the wrong
answer.</div>
<div><br>
</div>
<div>If i disable all of phitransaddr's fun magic, your
testcase starts working.</div>
<div><br>
</div>
<div>I'll be honest, i don't have the energy ATM to track
down what fun safety condition it's missing here.</div>
<div>I'd actually rather disable the code (which is a mess)
and focus on improving looploadelimination.</div>
<div>Maybe someone else wants to take a look at it.</div>
<div><br>
</div>
<div>(I'll add all this to the bug)</div>
<div><br>
</div>
<div>--Dan</div>
<div><br>
</div>
</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
LLVM Developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
</pre>
</blockquote>
<br>
</body>
</html>