GSoC: Improve parallelism-aware analyses and optimizations

Greetings everyone,
I am Abhay Raj Singh, a 2nd-year student at NIT Hamirpur, Bharat(India).
I am very interested in the project titled “Improve parallelism-aware analyses and optimizations”

I would like to apologize for contacting so late I had midterm examination, finished recently.
I have taken a course on OpenMP from YouTube which was supported by Intel

I have ~4-5 years of experience with C++ and ~2years with “Modern C++” and STL.

I have contributed to some C++ projects like:
C++ Pipes (


Inkscape(my graphics designing software)

  • fixed several bugs and optimized API in the Pull request linked below


some of my own projects are
cppm (
CSC19 (

I believe the reasons I am a fit for this project are:

  • Ability to write generic code
  • Knowledge of internal workings of C++, compilers, and the platforms(hardware concepts)

(ex.TMP, constexpr, RAII, RVO, cache lines, move semantics, undefined behaviors, thread-safety, etc.)

Which I came to know about, by closely following C++ communities and events such as, CPPcon, core guidelines.

Although, I have already started going through the code base and will soon push some bug fixes.

Can you please suggest how to proceed with this project.

Thanks and Regards,

Hi Abhay,

glad you are interested in working on LLVM!

If you want a small first task that actually affects the same code base
as the project will, take a look at this comment [0]. The OpenMPOpt.cpp
pass has a static member that causes an unused warning in some builds.
Can you resolve this and put a patch for review [1]? We should talk
about a more exiting small task after :slight_smile:



Hi Abhay,

apologies for the delayed response and nice work with the first patch.

In OpenMPOpt.cpp there is a TODO which you could work on.
  // TODO: We directly convert uses into proper calls and unknown uses.
The idea is that we already cache all uses of a runtime call but we
later need to verify the use is "a proper call". Given that the
expectation is to have a proper call and it complicates the use sites
all over, we should validate uses early and categorize them in two maps:
1) "proper calls"
2) "unknown uses"

Does that make sense?