<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<p>Thanks, Neil. To be clear, the patch should cause the intersect function to be called on the metadata.</p>
<p> -Hal<br>
</p>
<div class="moz-cite-prefix">On 1/22/20 11:09 AM, Neil Henning wrote:<br>
</div>
<blockquote type="cite" cite="mid:CALRoqd1W53zrM8uQTMvnBeptEbk3Ocr_m8NYVsqjcfdsYNm+wg@mail.gmail.com">
<div dir="ltr">
<div>Ok I think we have some common ground - CSE should choose the aliased pointer over the non-aliased one because we don't want the no-aliasing information to creep outwards from the inlined callsite.</div>
<div><br>
</div>
<div>I'll put together a patch in the coming days and add y'all as reviewers so you get visibility.</div>
<div><br>
</div>
<div>Cheers,</div>
<div>-Neil.<br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Wed, Jan 22, 2020 at 4:47 PM Jeroen Dobbelaere <<a href="mailto:Jeroen.Dobbelaere@synopsys.com" moz-do-not-send="true">Jeroen.Dobbelaere@synopsys.com</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
          0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div lang="EN-US">
<div class="gmail-m_4212421648495265144WordSection1">
<p class="MsoNormal">That's indeed a good example that shows that dropping the metadata (A) is the only correct solution.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Greetings,</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Jeroen Dobbelaere</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<div style="border-color:currentcolor currentcolor
                currentcolor blue;border-style:none none none
                solid;border-width:medium medium medium
                1.5pt;padding:0in 0in 0in 4pt">
<div>
<div style="border-color:rgb(225,225,225) currentcolor
                    currentcolor;border-style:solid none
                    none;border-width:1pt medium medium;padding:3pt 0in
                    0in">
<p class="MsoNormal"><b>From:</b> Finkel, Hal J. <<a href="mailto:hfinkel@anl.gov" target="_blank" moz-do-not-send="true">hfinkel@anl.gov</a>>
<br>
<b>Sent:</b> Wednesday, January 22, 2020 17:33<br>
<b>To:</b> Jeroen Dobbelaere <<a href="mailto:dobbel@synopsys.com" target="_blank" moz-do-not-send="true">dobbel@synopsys.com</a>>; Neil Henning <<a href="mailto:neil.henning@unity3d.com" target="_blank" moz-do-not-send="true">neil.henning@unity3d.com</a>>;
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank" moz-do-not-send="true">llvm-dev@lists.llvm.org</a><br>
<b>Subject:</b> Re: [llvm-dev] Inlining + CSE + restrict pointers == funtimes</p>
</div>
</div>
<p class="MsoNormal"> </p>
<p>At a high level, EarlyCSE should be intersecting the metadata of instructions that it combines. If it doesn't, and also doesn't drop the metadata, that seems like a bug, regardless of anything else.</p>
<div>
<p class="MsoNormal">On 1/22/20 9:30 AM, Jeroen Dobbelaere wrote:</p>
</div>
<blockquote style="margin-top:5pt;margin-bottom:5pt">
<p class="MsoNormal">[..]</p>
<p class="MsoNormal">-- (A) dropping the noalias information will result in less optimization opportunities</p>
<p class="MsoNormal">-- (B) preferring the load with the noalias annotation can allow more reorderings and a better schedule.</p>
<p class="MsoNormal">  (especially when there would be a 'store' in the context where the restrict is valid; aka in 'called').</p>
<p class="MsoNormal">  </p>
<p class="MsoNormal">My preference would go to (B) as that opens up more optimization opportunities.</p>
</blockquote>
<p> </p>
<p>I'm concerned that this isn't sound. So, imagine if I had something like this:</p>
<p class="MsoNormal">int * restrict r = a;<br>
...<br>
int x = noaliasing ? *r : *a;</p>
<p>then we need the aliasing load to retain its dependencies relative to other things in the block. If we combine them into one load, it needs to be the aliasing one.</p>
<p>Thanks again,</p>
<p style="margin-left:5.25pt">Hal </p>
<pre>[...]</pre>
</div>
</div>
</div>
</blockquote>
</div>
<br clear="all">
<br>
-- <br>
<div dir="ltr" class="gmail_signature">
<div dir="ltr">
<table style="border-collapse:collapse;border-spacing:0px;color:rgb(90,90,91);font-size:13px;margin:0px
            0px 20px;padding:0px" width="100%" cellspacing="0" cellpadding="0" border="0">
<tbody style="margin:0px;padding:0px">
<tr style="margin:0px;padding:0px">
<td style="border-collapse:collapse;font-size:0px;line-height:1.5em;padding:0px
                  0px 20px;vertical-align:top" align="left">
<table style="border-collapse:collapse;border-spacing:0px;margin:0px;padding:0px" cellspacing="0" cellpadding="0" border="0" align="left">
<tbody style="margin:0px;padding:0px">
<tr style="margin:0px;padding:0px">
<td style="border-collapse:collapse;font-size:1.12em;line-height:1.5em;padding:0px;vertical-align:top;width:64px">
<img style="border: medium none; border-radius:
                            0px; display: block; font-size: 13px;
                            height: auto; line-height: 100%; margin:
                            0px; max-width: 100%; outline-style: none;
                            outline-width: medium; padding: 20px 0px
                            0px; width: 100%;" alt="" src="https://unity3d.com/profiles/unity3d/themes/unity/images/ui/other/unity-logo-dark-email.png" moz-do-not-send="true" width="64" height="auto"></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr style="margin:0px;padding:0px">
<td style="border-collapse:collapse;font-size:0px;line-height:1.5em;padding:0px;vertical-align:top" align="left">
<div style="color:rgb(0,0,0);font-family:Roboto,Arial;font-size:14px;font-weight:600;line-height:15px;margin:0px;padding:0px">
Neil Henning</div>
</td>
</tr>
<tr style="margin:0px;padding:0px">
<td style="border-collapse:collapse;font-size:0px;line-height:1.5em;padding:0px;vertical-align:top" align="left">
<div style="color:rgb(0,0,0);font-family:Roboto,Arial;font-size:14px;line-height:15px;margin:0px;padding:0px
                    0px 10px">
Senior Software Engineer Compiler</div>
</td>
</tr>
<tr style="margin:0px;padding:0px">
<td style="border-collapse:collapse;font-size:0px;line-height:1.5em;padding:0px;vertical-align:top" align="left">
<div style="color:rgb(0,0,0);font-family:Roboto,Arial;font-size:12px;line-height:15px;margin:0px;padding:0px">
<a href="http://unity.com" target="_blank" moz-do-not-send="true">unity.com</a></div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</blockquote>
<pre class="moz-signature" cols="72">-- 
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory</pre>
</body>
</html>