<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class=""><br class=""></div>Thanks for sharing this Hal.<div class=""><br class=""></div><div class="">Random thought - with the goal of increasing cross-pollination, it might be useful to invite someone from the MLIR world who has been working on it MemoryEffects design to give a talk or share some thoughts.  It is a more general and quite different approach than LLVM’s alias analysis implementation.<div class=""><br class=""></div><div class="">It looks like River, Mehdi, Lei, and Jacques have all been involved in it, but I don’t know to what level.</div><div class=""><br class=""></div><div class="">-Chris<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Jun 24, 2020, at 8:33 AM, Finkel, Hal J. via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">Hi, everyone,</div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">We had a great call last month, and progress is definitely being made on several fronts. The notes from our last call are available here:</div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">  <a href="https://docs.google.com/document/d/1ybwEKDVtIbhIhK50qYtwKsL50K-NvB6LfuBsfepBZ9Y/edit#heading=h.vpxs8lkuxy79" id="LPlnk603524" class="">https://docs.google.com/document/d/1ybwEKDVtIbhIhK50qYtwKsL50K-NvB6LfuBsfepBZ9Y/edit#heading=h.vpxs8lkuxy79</a></div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">and, also, pasted below.</div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">DOODLE POLL:</div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">As we discussed on our last call, I would like to schedule a regular call to discuss alias-analysis issues within LLVM. I've put together an initial Doodle poll to pick a time for this call: <a href="https://doodle.com/poll/9iqfaqttvvic5rfp" id="LPlnk462928" class="">https://doodle.com/poll/9iqfaqttvvic5rfp</a></div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">Please fill out this poll with the understanding that the meeting will recur every four weeks. If you're interested in participating, but none of the times on the poll would work for you, please let me know.</div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">Notes from our last call:</div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">****</div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><b style="font-weight: normal;" class=""><ul style="margin-top: 0px; margin-bottom: 0px;" class=""><li dir="ltr" style="font-size: 11pt; font-family: Arial; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span style="font-size: 12pt; font-family: Calibri, sans-serif;" class="">Scalability challenges and other issues discovered with the current infrastructure (especially, perhaps, with the noalias metadata).<br class=""></span></div></li><ul style="margin-top: 0px; margin-bottom: 0px;" class=""><li dir="ltr" style="list-style-type: circle; font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Issue #1: MDNode::intersect uses O(n^2) algorithm. The operation does not scale for large NoAlias sets.</span></div></li><li dir="ltr" style="list-style-type: circle; font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Issue #2: ScopedNoAliasAAResult::mayAliasInScopes includes overhead (per query) of partitioning the input set based on the domain metadata.</span></div></li><li dir="ltr" style="list-style-type: circle; font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Issue #3: Memory footprint of the flattened Alias.Scope or NoAlias set can be large.</span></div></li><li dir="ltr" style="list-style-type: circle; font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Issue #4: correctness: current implementation has problems after inlining in a loop.  </span></div></li></ul></ul><br class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38; margin-left: 36pt;" class=""><span style="font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class="">Notes:</span></div><ul style="margin-top: 0px; margin-bottom: 0px;" class=""><li dir="ltr" style="font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400; margin-left: 72pt;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Jeroen notes that he has not observed scalability issues with the<span class="Apple-converted-space"> </span></span><span class=""><br class=""></span><span class="">“full restrict” implementation.</span></div></li><li dir="ltr" style="font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400; margin-left: 72pt;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Michael notes that part of the scalability challenge comes from the fact that the noalias scheme marks all those things with which you don’t alias, but for restrict-like pointers, that’s the default for everything in that scope.</span></div></li><li dir="ltr" style="font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400; margin-left: 72pt;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Tarique notes that there may still be a need for AA from the frontend, e.g., for Fortran, above what the C-like restrict provides.</span></div></li><li dir="ltr" style="font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400; margin-left: 72pt;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Eric asks if anyone is considering a ground-up design to support Fortran?</span></div></li><ul style="margin-top: 0px; margin-bottom: 0px;" class=""><li dir="ltr" style="list-style-type: circle; font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400; margin-left: 72pt;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Troy notes that we would prefer one representation to cover Fortran, C, etc. Fortran is, in some sense, simpler than C/C++. Also notes that language-specific AA can be a useful technique as well.</span></div></li><li dir="ltr" style="list-style-type: circle; font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400; margin-left: 72pt;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Johannes notes that other languages, e.g., Rust, can also benefit, and we might need something where we can have universes, negated aliasing edges, etc.</span></div></li><li dir="ltr" style="list-style-type: circle; font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400; margin-left: 72pt;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Michael notes that we can chain AA, and so it’s possible to have something more domain specific.</span></div></li><li dir="ltr" style="list-style-type: circle; font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400; margin-left: 72pt;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Hal notes that if we have language-specific MD, we need to figure out how to maintain it (otherwise, all of the passes will drop it, but maintaining it means that enough of the semantics must be available). Jeroen notes that reusing in-tree passes maximally reuses correct implementation in combination with loop unrolling, etc.</span></div></li></ul></ul><br class=""><ul style="margin-top: 0px; margin-bottom: 0px;" class=""><li dir="ltr" style="font-size: 11pt; font-family: Arial; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span style="font-size: 12pt; font-family: Calibri, sans-serif;" class="">Proposed solutions: progress, outstanding challenges, how to make progress going forward.<br class=""></span></div></li><ul style="margin-top: 0px; margin-bottom: 0px;" class=""><li dir="ltr" style="list-style-type: circle; font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Proposal #1: (Related to both Issue #1 and Issue #2) In the MDNode class, pre-partition the set of Metadata operands where each partition is an ordered set of Metadata operands belonging to a specific domain.</span></div></li><li dir="ltr" style="list-style-type: circle; font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Proposal #2: (Related to Issue #3) Design a hierarchical representation for the metadata operands in Alias.Scope and NoAlias sets.</span></div></li><li dir="ltr" style="list-style-type: circle; font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Proposal #3:<span class="Apple-converted-space"> </span></span><a href="https://reviews.llvm.org/D68484" class=""><span style="color: rgb(17, 85, 204); text-decoration: underline;" class="">https://reviews.llvm.org/D68484</span></a><span class=""><span class="Apple-converted-space"> </span>provides the infrastructure to fix issue #4. It might also help with issue #1 and issue #3 as it makes it possible to share scopes.<br class=""></span></div></li></ul></ul><br class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span style="font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class="">Notes</span></div><br class=""><ul style="margin-top: 0px; margin-bottom: 0px;" class=""><li dir="ltr" style="font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Tarique presented challenges with the current prototype, including that there’s currently no way to differentiate noalias MD from other kinds of metadata, so it’s hard to keep a useful cache in the generic MDNode implementation.</span></div></li><li dir="ltr" style="font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Jeroen presented some slides on the full-restrict implementation, noted how this scheme might solve/mitigate some of the scalability challenges associated with the pure-metadata solution.</span></div></li><li dir="ltr" style="font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">The full-restrict implementation is being used, and Jerone is currently updating this implementation based on feedback from that usage, he also will update the implementation to use provenance instead of sidechannel and repost.</span></div></li><li dir="ltr" style="font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Johannes notes that we need more reviewers for this patch set.</span></div></li></ul></b><br class=""></div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">****</div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">Thanks again,</div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">Hal</div><div style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div id="Signature" class=""><div class=""><div class="BodyFragment"><font size="2" class=""><span style="font-size: 10pt;" class=""><div class="PlainText">Hal Finkel<br class="">Lead, Compiler Technology and Programming Languages<br class="">Leadership Computing Facility<br class="">Argonne National Laboratory</div></span></font></div></div></div></div><div style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><div id="appendonsend" class=""></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><hr tabindex="-1" style="display: inline-block; width: 869.25px;" class=""><div id="divRplyFwdMsg" dir="ltr" class=""><font face="Calibri, sans-serif" style="font-size: 11pt;" class=""><b class="">From:</b><span class="Apple-converted-space"> </span>llvm-dev <<a href="mailto:llvm-dev-bounces@lists.llvm.org" class="">llvm-dev-bounces@lists.llvm.org</a>> on behalf of Finkel, Hal J. via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>><br class=""><b class="">Sent:</b><span class="Apple-converted-space"> </span>Thursday, May 28, 2020 7:35 AM<br class=""><b class="">To:</b><span class="Apple-converted-space"> </span>Jeroen Dobbelaere <<a href="mailto:Jeroen.Dobbelaere@synopsys.com" class="">Jeroen.Dobbelaere@synopsys.com</a>>; Alina Sbirlea <<a href="mailto:alina.sbirlea@gmail.com" class="">alina.sbirlea@gmail.com</a>><br class=""><b class="">Cc:</b><span class="Apple-converted-space"> </span><a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a><span class="Apple-converted-space"> </span><<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>>; Doerfert, Johannes <<a href="mailto:jdoerfert@anl.gov" class="">jdoerfert@anl.gov</a>><br class=""><b class="">Subject:</b><span class="Apple-converted-space"> </span>Re: [llvm-dev] LLVM Alias Analysis Technical Call - Doodle Poll</font><div class=""> </div></div><div dir="ltr" class=""><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">Hi, everyone,</div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">Just a quick reminder, this call starts in approximately 1.5 hours.</div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">At the present time, our agenda has:</div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><b style="font-weight: normal;" class=""><ul style="margin-top: 0px; margin-bottom: 0px;" class=""><li dir="ltr" style="font-size: 11pt; font-family: Arial; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span style="font-size: 12pt; font-family: Calibri, sans-serif;" class="">Scalability challenges and other issues discovered with the current infrastructure (especially, perhaps, with the noalias metadata).</span></div></li><ul style="margin-top: 0px; margin-bottom: 0px;" class=""><li dir="ltr" style="list-style-type: circle; font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class="">Issue #1: MDNode::intersect uses O(n^2) algorithm. The operation does not scale for large NoAlias sets.<br class=""></div></li><li dir="ltr" style="list-style-type: circle; font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Issue #2: ScopedNoAliasAAResult::mayAliasInScopes includes overhead (per query) of partitioning the input set based on the domain metadata.</span></div></li><li dir="ltr" style="list-style-type: circle; font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Issue #3: Memory footprint of the flattened Alias.Scope or NoAlias set can be large.</span></div></li><li dir="ltr" style="list-style-type: circle; font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Issue #4: correctness: current implementation has problems after inlining in a loop.  </span></div></li></ul><li dir="ltr" style="font-size: 11pt; font-family: Arial; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span style="font-size: 12pt; font-family: Calibri, sans-serif;" class="">Proposed solutions: progress, outstanding challenges, how to make progress going forward.</span></div></li><ul style="margin-top: 0px; margin-bottom: 0px;" class=""><li dir="ltr" style="list-style-type: circle; font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class="">Proposal #1: (Related to both Issue #1 and Issue #2) In the MDNode class, pre-partition the set of Metadata operands where each partition is an ordered set of Metadata operands belonging to a specific domain.<br class=""></div></li><li dir="ltr" style="list-style-type: circle; font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span class="">Proposal #2: (Related to Issue #3) Design a hierarchical representation for the metadata operands in Alias.Scope and NoAlias sets.</span></div></li><li dir="ltr" style="list-style-type: circle; font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; font-weight: normal;" class=""><span style="font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class="">Proposal #3:<span class="Apple-converted-space"> </span></span><a href="https://reviews.llvm.org/D68484" class=""><span style="font-size: 12pt; font-family: Calibri, sans-serif; color: rgb(17, 85, 204); font-weight: 400;" class="">https://reviews.llvm.org/D68484</span></a><span style="font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""><span class="Apple-converted-space"> </span>provides the infrastructure to fix issue #4. It might also help with issue #1 and issue #3 as it makes it possible to share scopes.</span></span></div></li></ul></ul><div class=""><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; font-weight: normal;" class=""><span style="font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""><br class=""></span></span></div><div style="margin-top: 0pt; margin-bottom: 0pt; line-height: 1.38;" class=""><span style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; font-weight: normal;" class=""><span style="font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400;" class=""> -Hal</span></span></div></div></b></div><div class=""><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div id="x_Signature" class=""><div class="x_BodyFragment"><font size="2" class=""><span style="font-size: 10pt;" class=""><div class="x_PlainText">Hal Finkel<br class="">Lead, Compiler Technology and Programming Languages<br class="">Leadership Computing Facility<br class="">Argonne National Laboratory</div></span></font></div></div></div><div class=""><div id="x_appendonsend" class=""></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><hr tabindex="-1" style="display: inline-block; width: 869.25px;" class=""><div id="x_divRplyFwdMsg" dir="ltr" class=""><font face="Calibri, sans-serif" style="font-size: 11pt;" class=""><b class="">From:</b><span class="Apple-converted-space"> </span>Finkel, Hal J. <<a href="mailto:hfinkel@anl.gov" class="">hfinkel@anl.gov</a>><br class=""><b class="">Sent:</b><span class="Apple-converted-space"> </span>Monday, May 18, 2020 11:40 AM<br class=""><b class="">To:</b><span class="Apple-converted-space"> </span>Jeroen Dobbelaere <<a href="mailto:Jeroen.Dobbelaere@synopsys.com" class="">Jeroen.Dobbelaere@synopsys.com</a>>; Alina Sbirlea <<a href="mailto:alina.sbirlea@gmail.com" class="">alina.sbirlea@gmail.com</a>><br class=""><b class="">Cc:</b><span class="Apple-converted-space"> </span><a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a><span class="Apple-converted-space"> </span><<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>>; Doerfert, Johannes <<a href="mailto:jdoerfert@anl.gov" class="">jdoerfert@anl.gov</a>><br class=""><b class="">Subject:</b><span class="Apple-converted-space"> </span>Re: LLVM Alias Analysis Technical Call - Doodle Poll</font><div class=""> </div></div><div dir="ltr" class=""><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">To join our call on Thursday, May 28th @ <span style="font-family: Calibri, Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255); display: inline !important;" class="">9-10 AM central time / 2-3 PM UTC </span>please use this information:</div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><span class="">Meeting URL<br class=""></span><div class=""><a href="https://bluejeans.com/643493129?src=join_info" class="">https://bluejeans.com/643493129?src=join_info</a><br class=""></div><div class=""><br class=""></div><div class="">Meeting ID<br class=""></div><div class="">643 493 129<br class=""></div><div class=""><br class=""></div><div class="">Want to dial in from a phone?<br class=""></div><div class=""><br class=""></div><div class="">Dial one of the following numbers:<br class=""></div><div class="">+1.312.216.0325 (US (Chicago))<br class=""></div><div class="">+1.408.740.7256 (US (San Jose))<br class=""></div><div class="">+1.866.226.4650 (US Toll Free)<br class=""></div><div class="">(see all numbers -<span class="Apple-converted-space"> </span><a href="https://www.bluejeans.com/premium-numbers" class="">https://www.bluejeans.com/premium-numbers</a>)<br class=""></div><div class=""><br class=""></div><div class="">Enter the meeting ID and passcode followed by #<br class=""></div><div class=""><br class=""></div><div class="">Connecting from a room system?<br class=""></div><span class="">Dial: bjn.vc or 199.48.152.152 and enter your meeting ID & passcode</span><br class=""></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><span class=""><br class=""></span></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><span class="">On our agenda, we'll have:</span></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><span class=""><br class=""></span></div><div class=""><font face="Calibri, Arial, Helvetica, sans-serif" class=""><span style="font-size: 12pt;" class=""> 1. Scalability<span class="Apple-converted-space"> </span></span>challenges<span style="font-size: 12pt;" class=""> and other issues discovered with the current infrastructure (especially, perhaps, with the noalias metadata).</span></font></div><div class=""><font face="Calibri, Arial, Helvetica, sans-serif" class=""><span style="font-size: 12pt;" class=""> 2. Proposed solutions: progress, outstanding<span class="Apple-converted-space"> </span></span>challenges, how to make progress going forward.</font></div><div class=""><font face="Calibri, Arial, Helvetica, sans-serif" class=""><br class=""></font></div><div class=""><font face="Calibri, Arial, Helvetica, sans-serif" class="">We'll formulate the detailed agenda and take notes from the call using this Google doc: <a href="https://docs.google.com/document/d/1ybwEKDVtIbhIhK50qYtwKsL50K-NvB6LfuBsfepBZ9Y/edit?usp=sharing" id="LPNoLP538393" class="">https://docs.google.com/document/d/1ybwEKDVtIbhIhK50qYtwKsL50K-NvB6LfuBsfepBZ9Y/edit?usp=sharing</a></font></div><div class=""><br class=""></div><div class="">A summary will then be sent to the mailing list after the call. If you would like to add items to the agenda, please edit the document (or reply to this email).</div><div class=""><br class=""></div><div class="">Thanks again,</div><div class="">Hal</div><div class=""><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div id="x_x_Signature" class=""><div class="x_x_BodyFragment"><font size="2" class=""><span style="font-size: 10pt;" class=""><div class="x_x_PlainText">Hal Finkel<br class="">Lead, Compiler Technology and Programming Languages<br class="">Leadership Computing Facility<br class="">Argonne National Laboratory</div></span></font></div></div></div><div class=""><div id="x_x_appendonsend" class=""></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><hr tabindex="-1" style="display: inline-block; width: 869.25px;" class=""><div id="x_x_divRplyFwdMsg" dir="ltr" class=""><font face="Calibri, sans-serif" style="font-size: 11pt;" class=""><b class="">From:</b><span class="Apple-converted-space"> </span>Finkel, Hal J. <<a href="mailto:hfinkel@anl.gov" class="">hfinkel@anl.gov</a>><br class=""><b class="">Sent:</b><span class="Apple-converted-space"> </span>Monday, May 18, 2020 10:24 AM<br class=""><b class="">To:</b><span class="Apple-converted-space"> </span>Jeroen Dobbelaere <<a href="mailto:Jeroen.Dobbelaere@synopsys.com" class="">Jeroen.Dobbelaere@synopsys.com</a>>; Alina Sbirlea <<a href="mailto:alina.sbirlea@gmail.com" class="">alina.sbirlea@gmail.com</a>>; Finkel, Hal J. <<a href="mailto:hfinkel@anl.gov" class="">hfinkel@anl.gov</a>><br class=""><b class="">Cc:</b><span class="Apple-converted-space"> </span><a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a><span class="Apple-converted-space"> </span><<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>>; Doerfert, Johannes <<a href="mailto:jdoerfert@anl.gov" class="">jdoerfert@anl.gov</a>><br class=""><b class="">Subject:</b><span class="Apple-converted-space"> </span>Re: LLVM Alias Analysis Technical Call - Doodle Poll</font><div class=""> </div></div><div dir="ltr" class=""><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">Thanks to everyone who participated in the poll. The time that maximizes availability is:</div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">  Thursday, May 28th @ 9-10 AM central time / 2-3 PM UTC.</div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">I'll send out meeting information shortly.</div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""> -Hal</div><div class=""><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div id="x_x_x_Signature" class=""><div class="x_x_x_BodyFragment"><font size="2" class=""><span style="font-size: 10pt;" class=""><div class="x_x_x_PlainText">Hal Finkel<br class="">Lead, Compiler Technology and Programming Languages<br class="">Leadership Computing Facility<br class="">Argonne National Laboratory</div></span></font></div></div></div><div class=""><div id="x_x_x_appendonsend" class=""></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><hr tabindex="-1" style="display: inline-block; width: 869.25px;" class=""><div id="x_x_x_divRplyFwdMsg" dir="ltr" class=""><font face="Calibri, sans-serif" style="font-size: 11pt;" class=""><b class="">From:</b><span class="Apple-converted-space"> </span>llvm-dev <<a href="mailto:llvm-dev-bounces@lists.llvm.org" class="">llvm-dev-bounces@lists.llvm.org</a>> on behalf of Finkel, Hal J. via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>><br class=""><b class="">Sent:</b><span class="Apple-converted-space"> </span>Wednesday, May 13, 2020 11:14 AM<br class=""><b class="">To:</b><span class="Apple-converted-space"> </span>Jeroen Dobbelaere <<a href="mailto:Jeroen.Dobbelaere@synopsys.com" class="">Jeroen.Dobbelaere@synopsys.com</a>>; Alina Sbirlea <<a href="mailto:alina.sbirlea@gmail.com" class="">alina.sbirlea@gmail.com</a>><br class=""><b class="">Cc:</b><span class="Apple-converted-space"> </span><a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a><span class="Apple-converted-space"> </span><<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>>; Doerfert, Johannes <<a href="mailto:jdoerfert@anl.gov" class="">jdoerfert@anl.gov</a>><br class=""><b class="">Subject:</b><span class="Apple-converted-space"> </span>[llvm-dev] LLVM Alias Analysis Technical Call - Doodle Poll</font><div class=""> </div></div><div dir="ltr" class=""><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">Hi, everyone,</div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">We've had a number of discussions recently, including on the Flang technical call, about potential improvements to LLVM's alias analysis to support handling restrict and restrict-like semantics.</div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">We would like to try having a call to discuss these issues further. Please, if you're interested in joining, indicate your availability (prior to the end of this week):</div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">  <a href="https://doodle.com/poll/evhwr2eyfvcf8ib3" id="LPlnk510266" class="">https://doodle.com/poll/evhwr2eyfvcf8ib3</a></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">Thanks again,</div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">Hal</div><div class=""><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div id="x_x_x_x_Signature" class=""><div class="x_x_x_x_BodyFragment"><font size="2" class=""><span style="font-size: 10pt;" class=""><div class="x_x_x_x_PlainText">Hal Finkel<br class="">Lead, Compiler Technology and Programming Languages<br class="">Leadership Computing Facility<br class="">Argonne National Laboratory</div></span></font></div></div></div><div class=""><div id="x_x_x_x_appendonsend" class=""></div><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><hr tabindex="-1" style="display: inline-block; width: 869.25px;" class=""><div id="x_x_x_x_divRplyFwdMsg" dir="ltr" class=""><font face="Calibri, sans-serif" style="font-size: 11pt;" class=""><b class="">From:</b><span class="Apple-converted-space"> </span>llvm-dev <<a href="mailto:llvm-dev-bounces@lists.llvm.org" class="">llvm-dev-bounces@lists.llvm.org</a>> on behalf of Alina Sbirlea via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>><br class=""><b class="">Sent:</b><span class="Apple-converted-space"> </span>Monday, May 11, 2020 9:49 AM<br class=""><b class="">To:</b><span class="Apple-converted-space"> </span>Jeroen Dobbelaere <<a href="mailto:Jeroen.Dobbelaere@synopsys.com" class="">Jeroen.Dobbelaere@synopsys.com</a>><br class=""><b class="">Cc:</b><span class="Apple-converted-space"> </span><a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a><span class="Apple-converted-space"> </span><<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>>; Doerfert, Johannes <<a href="mailto:jdoerfert@anl.gov" class="">jdoerfert@anl.gov</a>><br class=""><b class="">Subject:</b><span class="Apple-converted-space"> </span>Re: [llvm-dev] Full restrict support - status update</font><div class=""> </div></div><div class=""><div dir="ltr" class="">Hi Johannes et al,<br class=""><div class=""><br class=""></div><div class="">Trying to revive this discussion, as the restrict support is relevant for one of our teams.</div><div class=""><br class=""></div><div class="">Thank you,</div><div class="">Alina</div></div><br class=""><div class="x_x_x_x_x_gmail_quote"><div dir="ltr" class="x_x_x_x_x_gmail_attr">On Tue, Nov 12, 2019 at 1:16 PM Jeroen Dobbelaere via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>> wrote:<br class=""></div><blockquote class="x_x_x_x_x_gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;">Hi Johannes et al,<br class=""><br class="">> -----Original Message-----<br class="">> From: Doerfert, Johannes <<a href="mailto:jdoerfert@anl.gov" target="_blank" class="">jdoerfert@anl.gov</a>><br class="">[..]<br class="">> On 11/06, Jeroen Dobbelaere wrote:<br class="">> > >From: Alexey Zhikhartsev<br class="">> > [..]<br class="">> > > We would love to see your patches merged as soon as possible, so I was<br class="">> wondering: do you think the lack of bitcode support will prevent that from<br class="">> happening?<br class="">> ><br class="">> > Yes, I think that the lack of bitcode support will prevent it.<br class="">> ><br class="">> > During the Developers meeting, I also talked with Hal and Johannes.<br class="">> > They had some extra remarks:<br class="">> > - (1) the restrict implementation deserves a separate document. (I am<br class="">> working on that one)<br class="">> > - (2) they don't like the naming of 'noalias_sidechannel'.<br class="">> > - (3) they also have some other mechanisms in mind to add the 'sidechannel'<br class="">> to the load/store instructions<br class="">> >        (and maybe to function calls, intrinsics; currently that is handled through<br class="">> llvm.noalias.arg.guard)<br class="">> ><br class="">> > For (2) and (3), I am waiting for a proposal from them ;)<br class="">><span class="Apple-converted-space"> </span><br class="">> I would like to see the restrict support be merged but, as Jeroen<br class="">> mentions above, I feel there are two design choices we have to<br class="">> overthink. Here are short descriptions to get some feedback from the<br class="">> community:<br class="">><span class="Apple-converted-space"> </span><br class="">> (A) Naming and restriction<br class="">><span class="Apple-converted-space"> </span><br class="">> The name "sidechannel" is unfortunate, it has various negative<br class="">> connotations, e.g., the release notes that read:<br class="">>  "LLVM 10.0 now has sidechannel support for your restrict pointer"<br class="">> will raise a lot of follow up questions.<br class="">><span class="Apple-converted-space"> </span><br class="">> What I think we actually do, and what we should call it, is "provenance"<br class="">> tracking.<br class="">><span class="Apple-converted-space"> </span><br class="">> Now beyond the pure renaming of "sidechannel" into "provenance" (or sth.<br class="">> similar) I want us to decouple provenance tracking from the noalias<br class="">> logic. Noalias/restrict is one use case in which (pointer) provenance<br class="">> information is useful but not the only one. If we add some mechanism to<br class="">> track provenance, let's make it generic and reusable. Note that the<br class="">> basic ideas are not much different to what the noalias RFC proposed.<br class="">> The major difference would be that we have provenance information and if<br class="">> that originates in an `llvm.restrict.decl` call we can use it for<br class="">> (no)alias queries.<br class=""><br class="">"provenance" might indeed be a good name.<br class=""><br class="">There is a big difference between a restrict declaration, and a restrict usage:<span class="Apple-converted-space"> </span><br class="">- the declaration intrinsic (llvm.noalias.decl) is used to track in the cfg the location<br class="">   where the restrict variable was declared. This is important to handle code motion,<br class="">   merging, duplication in a correct way (inlining, loop unrolling, ...)<br class="">- the restrict usage intrinsics (llvm.noalias and llvm.side.noalias) are used to indicate<br class="">   that from that point on, restrict (noalias) properties are introduced for that pointer.<br class="">  They can exist without an associated 'llvm.noalias.decl' (when the declaration is outside<br class="">   the function.)<br class="">Given that, I assume that you mean 'llvm.provenance.noalias' (~ llvm.side.noalias) instead<br class="">of 'llvm.restrict.decl'.<br class=""><br class="">><span class="Apple-converted-space"> </span><br class="">><span class="Apple-converted-space"> </span><br class="">><span class="Apple-converted-space"> </span><br class="">> (B) Using operand bundles<br class="">><span class="Apple-converted-space"> </span><br class="">> Right now, loads and stores are treated differently and given a new<br class="">> operand. Then there are intrinsics to decode other kinds of information.<br class="">> As an alternative, we could allow operand bundles on all instructions<br class="">> and use them to tie information to an instruction. The "sidechannel"<br class="">> operand of a load would then look something like:<br class="">>   load i32* %p [ "ptr_provenance"(%p_decl) ]<br class="">> and for a store we could have<br class="">>   store i32** %p.addr, i32* %p [ "ptr_provenance"(%p_decl) ]<br class="">><span class="Apple-converted-space"> </span><br class="">> The benefit is that we do not change the operand count (which causes a<br class="">> lot of noise) but we still have to make sure ptr/value uses are not<br class="">> confused with operand bundle uses. We can attach the information to more<br class="">> than load/store instructions, also to remove the need for some of the<br class="">> intrinsics.<br class=""><br class="">To me, operand bundles sound to be more or less equivalent to the current<br class="">solution. It  might also make the 'instruction cloning' easier, if we can omit the<br class="">'ptr_provenance' there. The change of the number of operands caused some<br class="">noise, but it is the changes in the amount of 'uses' of a pointer that refer to the<br class="">same instruction that caused the most problems. Especially when that instruction<br class="">was going to be erased. Operand bundles will still need those code changes.<br class="">(like in parts of D68516 and D68518)<br class=""><br class="">As the 'Call' instruction already supports operand bundles, it could eliminate the need<br class="">for the 'llvm.noalias.arg.guard' intrinsic, which combines the normal pointer with the<br class="">side channel (aka provenance). But, after inlining, we still need to put that information<br class="">somewhere. Or it should be propagated during inlining.<br class="">Care must be taken not to lose that information when the 'call' is changed by optimizations<br class="">as, after inlining, that might result in wrong alias analysis conclusions.<br class=""><br class="">Are you thinking of "operand bundles" support for just LoadInst/StoreInst, or for all<br class="">instructions ?<br class=""><br class="">Greetings,<br class=""><br class="">Jeroen Dobbelaere<br class=""><br class=""><br class="">_______________________________________________<br class="">LLVM Developers mailing list<br class=""><a href="mailto:llvm-dev@lists.llvm.org" target="_blank" class="">llvm-dev@lists.llvm.org</a><br class=""><a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank" class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br class=""></blockquote></div></div></div></div></div></div></div></div></div></div></div><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">_______________________________________________</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">LLVM Developers mailing list</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><a href="mailto:llvm-dev@lists.llvm.org" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">llvm-dev@lists.llvm.org</a><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a></div></blockquote></div><br class=""></div></div></body></html>