[cfe-dev] Contributing to C++2a feature implementation!

Richard Smith via cfe-dev cfe-dev at lists.llvm.org
Wed Oct 10 12:24:16 PDT 2018

Hi Kareem!

This sounds great, and we'd be happy to have more people helping out.

On Tue, 9 Oct 2018 at 06:49, Kareem Kareem via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> Hello,
> 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].
> ===
> Here is my relevant background:
> 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].
> 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.
> 3 - I did some tiny bug fixes in LLVM to properly propagate DebugInfo in
> some passes [3]. Nothing so fancy though :).
> ===
> 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.

Here's a selection of smaller C++20 papers you could choose from:

 * template-parameter-list for generic lambdas (http://wg21.link/p04282r2)
-- 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)
 * designated initializers (http://wg21.link/p0329r4) -- 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
 * [[likely]] and [[unlikely]] attributes (http://wg21.link/p0479r5) --
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)
 * pack expansion in lambda init-capture (http://wg21.iink/p0780r2) --
this'd be a good choice if you want to learn your way around the way Clang
represents and instantiates templates

> I can commit to a GSoC-style partnership if any experienced member would
> be willing to do so.
> [1] https://anydsl.github.io/
> [2] https://nvlabs.github.io/cub/
> [3] https://reviews.llvm.org/p/ergawy/
> [4] https://clang.llvm.org/cxx_status.html
> <https://clang.llvm.org/cxx_status.html#ts>
> Best,
> Kareem
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20181010/fb137005/attachment.html>

More information about the cfe-dev mailing list