<div dir="ltr"><span style="font-size:12.8px">> Could anyone let me know desirable skills should be developed to contribute to LLVM</span><br><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">I'm pretty sure we don't require an arbitrary set of skills for you to contribute to LLVM. :) Given that LLVM is largely a C++ project, having solid background in C++ would certainly help. If you haven't worked with LLVM before (e.g. in your compilers class), the following resources are really helpful:</span></div><div><span style="font-size:12.8px">- <a href="http://llvm.org/docs/ProgrammersManual.html">http://llvm.org/docs/ProgrammersManual.html</a> -- Programmers manual. Goes over many LLVM-specific things (e.g. we use dyn_cast instead of dynamic_cast, ...)</span></div><div><span style="font-size:12.8px">- <a href="http://llvm.org/docs/CodingStandards.html">http://llvm.org/docs/CodingStandards.html</a> -- Coding standards. For style, the liberal application of clang-format is recommended.</span></div><div><span style="font-size:12.8px">- <a href="http://llvm.org/docs/GetElementPtr.html">http://llvm.org/docs/GetElementPtr.html</a> -- An article that covers common misconceptions about the getelementptr instruction.</span></div><div><span style="font-size:12.8px">- <a href="http://llvm.org/docs/Lexicon.html">http://llvm.org/docs/Lexicon.html</a> -- The lexicon, i.e. the jargon translator. I find myself using this relatively often. ;)</span></div><div><span style="font-size:12.8px"><br></span></div><div>As far as contributing to LLVM itself, send out a patch that fixes a problem and ask people to review it. If you have no clue where to start, find open+unassigned bugs in the bugtracker (<a href="https://llvm.org/bugs/">https://llvm.org/bugs/</a>), pick an unassigned one, and try to fix it. There's also probably random "we'd like to see this feature" notes scattered about in docs for e.g. clang-tidy, if you're open to contributing to tooling/if you'd prefer to add new features rather than fixing old ones. If you have short/targeted questions, IRC (#llvm on OFTC) tends to be a good place to ask.</div><div><br></div><div>Have fun!</div><div>George</div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Nov 1, 2015 at 1:03 PM, John Criswell via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"><span class="">
<div>On 11/1/15 1:15 PM, Aswin kumar via
llvm-dev wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div>
<div>
<div>Hi,<br>
<br>
</div>
I am a graduate student in computer science.I have taken a
programming languages course this semester and I am having
great fun building interpreters.I am planning to build toy
compilers in the winter.I would love to participate in GSOC
2016 contributing to LLVM.Could anyone let me know desirable
skills should be developed to contribute to LLVM ? Also I
would like to know the open projects in LLVM for Google
Summer Of Code 2016.<br>
</div>
</div>
</div>
</blockquote>
<br></span>
What skills you need for GSoC depends entirely upon what sort of
LLVM-based projects you want to do. Many LLVM-based projects
requiring knowing how to write LLVM passes and doing either analysis
or optimization on the LLVM IR. For such projects, I'd recommend
learning how to write an LLVM pass (which is well documented at
<a href="http://llvm.org/docs/WritingAnLLVMPass.html" target="_blank">http://llvm.org/docs/WritingAnLLVMPass.html</a>.<br>
<br>
However, some GSoC students work on Clang (and therefore need to
understand how to analyze and manipulate Clang's AST). Others may
work on the code generator portions of LLVM (which requires
understanding the MachineInstr IR or the MC layer).<br>
<br>
I recommend that you learn whatever interests you. When it comes
time to worry about GSoC, you can then suggest a project that
leverages what you've learned.<br>
<br>
As far as GSoC projects, I think it's too early to have a list of
those up yet. I think we'll have a more up-to-date list in the
spring. That said, if you're looking for projects, you can look at
the open projects page at <a href="http://llvm.org/OpenProjects.html" target="_blank">http://llvm.org/OpenProjects.html</a>. Fixing
open bugs in the LLVM and Clang bug database would also be a good
way to start learning about Clang and LLVM. You can also look at
LLVM sub-projects such as lldb, ldb, and Polly.<br>
<br>
As for myself, I tend to mentor projects that instrument programs in
some way (usually to improve their security, but I've also mentored
a performance-bug finding tool). You can read about my work (nearly
all of which uses LLVM) on my publications page at
<a href="http://www.cs.rochester.edu/u/criswell/pubs.html" target="_blank">http://www.cs.rochester.edu/u/criswell/pubs.html</a> to get a sense of
the sorts of things that interest me. In a nutshell, I like
security, and I like using compilers to change operating system
kernel code.<br>
<br>
Regards,<br>
<br>
John Criswell<br>
<br>
<blockquote type="cite">
<div dir="ltr">
<div>
<div><br>
</div>
Regards,<br>
</div>
Aswin.<br>
</div>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
LLVM Developers mailing list
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><span class="HOEnZb"><font color="#888888">
</font></span></pre><span class="HOEnZb"><font color="#888888">
</font></span></blockquote><span class="HOEnZb"><font color="#888888">
<br>
<br>
<pre cols="72">--
John Criswell
Assistant Professor
Department of Computer Science, University of Rochester
<a href="http://www.cs.rochester.edu/u/criswell" target="_blank">http://www.cs.rochester.edu/u/criswell</a></pre>
</font></span></div>
<br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br></div></div>