[llvm-dev] Want to contribute in LLVM.

amit kumar via llvm-dev llvm-dev at lists.llvm.org
Tue Dec 15 19:26:59 PST 2020


Thank you so know to guide me towards my first step, I'm going through
your suggested step and will let you know if I face any problem. and
last but not least these kinds of quick help/replies really give
motivation to beginners like me towards open-source contribution.

Thanks and regards
Amit Kumar

On Wed, Dec 16, 2020 at 8:12 AM Armand Behroozi <armandb at umich.edu> wrote:
>
> Hey Amit,
>
> EECS583 at Umich also has a homework assignment or two that you could give a go if you wanted.
> HW2 asks you to extend the loop invariant code motion pass and do frequent path LICM (hoist almost invariant code).
>
> Link below.
> https://web.eecs.umich.edu/~mahlke/courses/583f18/homeworks.html
>
> It's just another resource.
>
> Best of luck.
>
> Regards,
>
> Armand
>
> On Tue, Dec 15, 2020 at 4:18 PM Stefanos Baziotis via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>>
>> Hi Amit,
>>
>> There are the bugs tagged beginner but last time I checked, IMHO, they were not that "beginner-friendly" after all.
>>
>> The way I would recommend that you start with LLVM is by rewriting a pass. One thing to note here is that this is not really a contribution (i.e.
>> a commit won't result immediately from that), so if you're only interested in contributing something with your first try, that won't do it.
>>
>> But a common theme I see among beginners, including myself when I started, is that when you're obsessed with landing a commit,
>> unavoidably you're going to "hack your way towards it". That basically means that you'll just gather relatively shallow knowledge, maybe
>> with some breadth, but that limited too, just to commit something. That's bad and it will probably not serve you in the long run.
>>
>> This is why for example, in courses which use LLVM as a teaching tool, the assignments don't ask you to do something
>> shallow like that but instead they ask for something that requires some kind of deep knowledge and thought (which you develop along).
>>
>> To that end, I recommend rewriting a pass (which is btw somewhat common in courses). Now, that might sound scary but it's not.
>> The _actual_ goal is not to actually rewrite the pass. Neither all of it, nor at the production level of LLVM. Rewriting
>> the pass is just an "artificial goal" only to have something to move towards. The _actual_ goal is what you'll learn by moving
>> towards this goal. And what you'll learn will probably be both deep and broad.
>>
>> You only need to start simple, like "OK, how do I query this analysis?". Just that, then you try something like "hmm, how can I inspect / traverse
>> the results of this analysis" etc. (and the good thing is that for a lot of these first steps, multiple other passes will have done the exact
>> same thing and you should feel free to copy code shamelessly as you're starting out).
>>
>> After some time doing that, you'll find that you start understanding the system in some detail and _then_, you'll be equipped to do actual commits.
>>
>> Now, the question is with which pass to start with? Again, because of the above, that doesn't really matter, but in any case, it depends on what you like.
>> For example, if you're interested in loops, I'd start with LCSSA (and along with it, I'd give a try to the LLVM Loop Terminology). If you're interested
>> in inter-procedural optimizations, I'd start with Sparse Conditional Constant Propagation (SCCP).
>>
>> If you have no idea where to start or what you like, you might start with Scalar Replacement of Aggregates (SROA), just because I saw it
>> in a cool course on UIUC recently and it seems to guide you relatively well. Here's the link: http://misailo.web.engr.illinois.edu/courses/526-sp20/,
>> it's project 1 (again, don't need to even do the whole thing, do the parts that motivate you; I mean please don't treat that as an _actual_ assignment,
>> you probably have enough of those already :) ).
>>
>> So, this got very long, sorry for that, I hope it helps. Please don't hesitate to reach me for questions.
>>
>> Best,
>> Stefanos
>>
>> Στις Τρί, 15 Δεκ 2020 στις 9:12 μ.μ., ο/η amit kumar via llvm-dev <llvm-dev at lists.llvm.org> έγραψε:
>>>
>>> Respected Sir/Ma'am,
>>>                        I'm Amit Kumar, a 3rd-year undergraduate
>>> student in Computer Science Engineering (CSE) from IIIT Nagpur, India.
>>> I am new to open source only contributed to HactoberFest in the past 2
>>> years and I came across LLVM through GSoC and interested in
>>> building some new features in the newer version's LLVM and contribute
>>> to the language. I had studied Compiler Design in our courses.
>>>
>>> Please help me and show me direction towards starting my journey to
>>> the open-source contribution.
>>> Thanks and Regards
>>> Amit Kumar
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> llvm-dev at lists.llvm.org
>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev


More information about the llvm-dev mailing list