<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Wed, 10 Oct 2018 at 12:32, Nicolas Lesser via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Wed, Oct 10, 2018 at 9:24 PM Richard Smith via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</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 dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hi Kareem!<div><br></div><div>This sounds great, and we'd be happy to have more people helping out.<br><div><br><div class="gmail_quote"><div dir="ltr">On Tue, 9 Oct 2018 at 06:49, Kareem Kareem via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</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"><u></u><div><div style="font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif"><div><div style="font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif"><div><div style="font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif">Hello,<br></div><div style="font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif"><br></div><div style="font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif">My name is Kareem and I am a C++ software engineer at TomTom. I would like to gain more experience in compilers by contributing to the implementation of experimental C++2a features as detailed on the Clang website [4].<br></div><div style="font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif"><br></div><div style="font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif">===<br></div><div style="font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif"><br></div><div style="font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif">Here is my relevant background:<br></div><div style="font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif"><br></div></div><div style="color:rgb(0,0,0);font-family:Arial,Helvetica,sans-serif;font-size:small;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)">1 - I implemented a library for a research language called Impala. Impala is implemented on top of a compiler framework called AnyDSL [1]. Specifically, I implemented a number of parallel primitives in Impala (e.g. map, reduce, radix sort). The library is inspired by Nvidia's CUB library [2].<br></div><div style="color:rgb(0,0,0);font-family:Arial,Helvetica,sans-serif;font-size:small;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)"><br></div><div style="color:rgb(0,0,0);font-family:Arial,Helvetica,sans-serif;font-size:small;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)">2 - I participated in a research project to extend LLVM IR to natively support fork-join parallelism. In particular, I implemented an OpenMP frontend and backend to translate to and from Parallel-IR. The frontend and backend supported simple parallel loops.<br></div><div style="color:rgb(0,0,0);font-family:Arial,Helvetica,sans-serif;font-size:small;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)"><br></div><div style="color:rgb(0,0,0);font-family:Arial,Helvetica,sans-serif;font-size:small;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)">3 - I did some tiny bug fixes in LLVM to properly propagate DebugInfo in some passes [3]. Nothing so fancy though :).<br></div><div style="color:rgb(0,0,0);font-family:Arial,Helvetica,sans-serif;font-size:small;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)"><br></div><div style="color:rgb(0,0,0);font-family:Arial,Helvetica,sans-serif;font-size:small;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)">===<br></div><div style="color:rgb(0,0,0);font-family:Arial,Helvetica,sans-serif;font-size:small;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)"><br></div><div style="color:rgb(0,0,0);font-family:Arial,Helvetica,sans-serif;font-size:small;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)">It would great if an experienced member of the community is able to guide me through this by choosing a (somewhat beginner friendly) proposal that I can start looking into and probably point me to relevant literature.</div></div></div></div></div></blockquote><div><br></div><div>Here's a selection of smaller C++20 papers you could choose from:</div><div><br></div><div> * template-parameter-list for generic lambdas (<a href="http://wg21.link/p04282r2" target="_blank">http://wg21.link/p04282r2</a>) -- this would involve parsing support and a few updates through various parts of the compiler to correctly deal with explicit template parameter lists (eg, AST pretty-printing)<br></div></div></div></div></div></div></div></div></div></blockquote><div><br></div><div>There is already patch for this in review: <a href="https://reviews.llvm.org/D36527" target="_blank">https://reviews.llvm.org/D36527</a> . Might want to check that out before you duplicate work :)</div></div></div></div></blockquote><div><br></div><div>Oops, sorry! :)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div class="gmail_quote"><div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><div><div class="gmail_quote"><div></div><div> * designated initializers (<a href="http://wg21.link/p0329r4" target="_blank">http://wg21.link/p0329r4</a>) -- we already support most of this, but we do not have support for some of the syntax yet, and we accept things that are not part of the C++20 feature: we should add syntactic support for the new parts and produce appropriate "extension" warnings based on the current language mode</div><div> * [[likely]] and [[unlikely]] attributes (<a href="http://wg21.link/p0479r5" target="_blank">http://wg21.link/p0479r5</a>) -- adding the attributes themselves should be straightforward, but you'll also need to figure out how best to express the effects of these attributes in LLVM IR (whether by existing intrinsics and metadata or by adding a new construct that LLVM can lower at an appropriate moment)</div><div> * pack expansion in lambda init-capture (<a href="http://wg21.iink/p0780r2" target="_blank">http://wg21.iink/p0780r2</a>) -- this'd be a good choice if you want to learn your way around the way Clang represents and instantiates templates</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"><div><div style="font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif"><div><div style="font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif"><div style="color:rgb(0,0,0);font-family:Arial,Helvetica,sans-serif;font-size:small;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)">I can commit to a GSoC-style partnership if any experienced member would be willing to do so.<br></div><div style="color:rgb(0,0,0);font-family:Arial,Helvetica,sans-serif;font-size:small;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)"><br></div><div style="color:rgb(0,0,0);font-family:Arial,Helvetica,sans-serif;font-size:small;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)">[1] <a href="https://anydsl.github.io/" style="color:rgb(17,85,204)" target="_blank">https://anydsl.github.io/</a><br></div><div style="color:rgb(0,0,0);font-family:Arial,Helvetica,sans-serif;font-size:small;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)">[2] <a href="https://nvlabs.github.io/cub/" style="color:rgb(17,85,204)" target="_blank">https://nvlabs.github.io/cub/</a><br></div><div style="color:rgb(0,0,0);font-family:Arial,Helvetica,sans-serif;font-size:small;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)">[3] <a href="https://reviews.llvm.org/p/ergawy/" style="color:rgb(17,85,204)" target="_blank">https://reviews.llvm.org/p/ergawy/</a><br></div><div>[4] <a href="https://clang.llvm.org/cxx_status.html#ts" target="_blank">https://clang.llvm.org/cxx_status.html</a><br></div><div><br></div><div>Best,<br></div><div>Kareem</div></div></div></div><br></div>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
</blockquote></div></div></div></div></div></div></div></div>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
</blockquote></div></div></div>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
</blockquote></div></div>