Hi Stefanos,
First, thanks a lot for the very detailed response! I watched both of the
videos, and I seem to have a rough idea now of how each of the different
pieces of software maps onto the compilation process. Though I found blogs
such as these two: https://jonasdevlieghere.com/understanding-the-clang-ast/,
https://releases.llvm.org/2.6/docs/tutorial/JITTutorial1.html to be better
for a more in-depth understanding. Anyways, in response to your answers:
The latter can even be problematic if you start applying C++
craziness> while the first is pretty much always needed when working in a team
project.
>
Ok, that makes sense as you would want the style to be consistent
throughout.
running the LLVM suite is super easy>
Yeah, everything went fine from following your instructions. I do have a
question though: How do I diagnose failed tests? I found the files that
correspond to them, and they seem to be 1 line scripts rather than
"code"
per say.
But I think every good GSoC proposal includes a biography-like
section>
Then, try to study it, understand the context and the
problem.>
But because submitting good patches is one of the best
indicators>
Ok, so for the application process, basically try to get more info on the
projects I am interested in and from there submit a proposal? Given the
whole coronavirus situation and the time remaining for the application, I
probably do not have the time to get a patch through. Regarding the
projects I am interested in, I have narrowed it down to two(mostly because
I don't think I have the ability to tackle PostDominatorTree project as of
now), and have the following questions about them:
LLVM Pass
1.
I am following the guide to create a LLVM pass following this guide(
https://llvm.org/docs/WritingAnLLVMPass.html), but it appears
“add_llvm_library” is a macro and not a built-in command. So I have two
questions. 1) In comparing the online repo I found this macro in and my
local, it appears I don’t have the file. Do I need to build it then? 2) How
do I tell CMake to look for this macro?
2.
Is there a specific section of the dragon book that I should read so
that I can at least understand theoretically what it means to create a
LoopNestPass?
LLDB Tab Completion
1.
Is there any resource I can read that explains how lldb is able to
“pause” the executable and map it to a certain line in the source file/in
general how lldb represents the state of the executable?
2.
Where in the source code can I go to see how existing tab completions
are implemented?
3. I built lldb and check-lldb, but it seems that the call path to clang
got messed up, as it is trying to call "Example=Code/llvm-project"
rather
than my actual name for the directory "Example-Code/llvm-project".
Should I
just clone the repo into a parent directory that doesn't use hyphen?
(Would it be better if I posted this on the forum?)
Best regards,
Benson
On Sat, Mar 14, 2020 at 11:10 AM Stefanos Baziotis <
stefanos.baziotis at gmail.com> wrote:
> Hi Benson,
>
> You're welcome to the LLVM community!
>
> I'll try to help but note that I'm no formal position to talk about
how
> LLVM decides about GSoC (I'm a LLVM newcomer anyway).
> With that said, the rest is _my_ opinion which is partially formed from my
> experience as a GSoC student.
>
> > But to be up front about this, I have not done any full scale C++
> project
> Depending on how you define "full-scale", a lot of amazing LLVM
> contributors have not done a full-scale C++. So, I think no problem there,
> it's just good to have a relatively good knowledge of C++.
> Talking about C++ skills, I think they're more important if you want to
> contribute to Clang than say LLVM middle or back-end. Because for Clang,
> you have to know a lot of details of the language
> in order to parse it, type-check it and generate LLVM IR. In most other
> parts of LLVM, you're only using the language.
> As a matter of fact, if you have a good knowledge of C++, I believe
it's
> more important to be able to understand and adapt to "nearby"
code, than to
> be an expert in C++.
> The latter can even be problematic if you start applying C++ craziness
> while the first is pretty much always needed when working in a team
project.
>
> > 1. Do I need to submit a resume/screening/patches?
> As far as the resume, in the way that you may usually apply to jobs, no.
> But I think every good GSoC proposal includes a biography-like section
> where you basically tell your story in programming and how you fit into
> the project (in our case, LLVM).
>
> I'm not sure what you mean by screening.
>
> As for patches, I don't think they're required but they're
super useful.
> Not because they're some part of unrelated logistics (like "you
have to
> have X patches to be considered").
> But because submitting good patches is one of the best indicators (if not
> the best) that you are able to do useful work in this project. :)
> And they don't only show your technical skills. But also communication
> skills, independence etc.
>
> > 2. Although I do have interests in certain projects posted on you
> website(Implement missing tab completion, createLoopPass, and
> PostDominatorTree), I am uncertain if I have enough expertise to decide
> what would be an appropriate project to contribute to given my current
> knowledge and experience.
> This is kind of a generic sentence.
> I'd say, start with finding a project that you're truly interested
in.
> Then, try to study it, understand the context and the problem.
> You don't need to get very far, that's totally ok. You can then do
a post
> (either here or on Discourse:
> https://llvm.discourse.group/c/community/gsoc/32)
> for this specific project (you can do posts for multiple projects).
> Hopefully, by discussing with people (and mentors) and understanding what
> the project is asking better,
> you can find if you want to do it or not. Certainly, the mentors of the
> project can guide you through.
>
> 3. The GCC GSoC website suggested checking out their source code,
> compiling and running their test suite. Can I do something similar for
> LLVM?
> Yes, totally. I'm not familiar with GCC internals but running the LLVM
> suite is super easy (so easy that you don't really learn anything by
doing
> it :P )
> So, the LLVM project has moved to a common repository:
> https://github.com/llvm/llvm-project
> You can clone the project and then use CMake to build it. The cmake
> configuration for LLVM has a bunch of flags:
> https://llvm.org/docs/CMake.html
> and you may get lost. So, I'll say start simple:
> Go to the llvm-project dir (the one you cloned) and do:
> cmake ./llvm -DLLVM_ENABLE_PROJECTS="clang"
-DCMAKE_BUILD_TYPE=Release
> -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_TARGETS_TO_BUILD="X86"
>
> In the link above you can read what the flags do. llvm middle / back-end
> (i.e. opt / llc, ask if you don't know what these mean) is always
built.
> But to build clang
> we have to enable it explicitly. We set build type to release because
> doing a debug build will take a lot of time and a lot of space. Also, when
> starting out,
> you probably don't need it. We enable assertions mostly because you can
> use the -debug option say in opt and see debug prints.
> Finally, we only build for x86 arch because that's probably what you
have
> and you don't need any other for now.
>
> Hit enter and once the configuration is complete you can do:
> make
> or
> make -j<number of threads> <-- this is faster but limit it
depending on
> your systemS
>
> When that's finished, the llvm-project/bin/ dir will have executables
like
> clang, clang++, opt, llc etc.
> Which you can run (also ask if you don't know what to do with them.
With
> clang you probably will know, it's like invoking
> most compilers like gcc to compile .c / .cpp files).
>
> To run the test suite, you can go to llvm-project/llvm/test and do:
> <dir of llvm-project>/bin/llvm-lit .
> That will run only llvm's test suite but you'll get an idea.
>
> Also, you can watch these videos:
> https://www.youtube.com/watch?v=J5xExRGaIIY
> https://www.youtube.com/watch?v=5kkMpJpIGYU
>
> Hope this helped!
>
> Kind regards,
> Stefanos Baziotis
>
> Στις Σάβ, 14 Μαρ 2020 στις 2:04 π.μ., ο/η Benson Bin Bin Li via llvm-dev
<
> llvm-dev at lists.llvm.org> έγραψε:
>
>> Dear LLVM Team,
>>
>> I would like to contribute to/participate in LLVM’s GSOC, because I
would
>> very much like to combine my knowledge of graph theory/algorithms and
my
>> interest in C++ together. Contributing to the LLVM code seems like a
>> fantastic challenge and learning experience for these two interests of
>> mine, as well as computer science in general (For example, the use of a
new
>> syntactic category to disambiguate a grammar demonstrates 1)
indirection 2)
>> the power of naming things).
>>
>> But to be up front about this, I have not done any full scale C++
>> project(Although we had to modify the Linux kernel in my OS class, that
was
>> in C). However, I do believe my C++ skills are at an intermediate
level, as
>> C++, like Python, is a language in which I will spend my free time
learning
>> more about. Like vim, there is always more to learn in C++, and to that
end
>> I will watch CppCon Videos or peruse blogs such as Fluent C++(which is
a
>> treasure trove of material to nerd out on) in my free time. I also have
a
>> layman’s knowledge of CMake, from using it to configure ccls to lint
C++
>> code with specific flags, and am aware of Google’s Test framework.
Finally,
>> I am currently taking Professor Stroustrap’s C++ class, and the
compilers
>> course here at Columbia.
>>
>> Regarding the logistics:
>>
>> 1. Do I need to submit a resume/screening/patches?
>>
>> 2. Although I do have interests in certain projects posted on you
>> website(Implement missing tab completion, createLoopPass, and
>> PostDominatorTree), I am uncertain if I have enough expertise to decide
>> what would be an appropriate project to contribute to given my current
>> knowledge and experience.
>>
>> 3. The GCC GSoC website suggested checking out their source code,
>> compiling and running their test suite. Can I do something similar for
LLVM?
>>
>> Anyways, thank you for taking the time to read this email, and I hope
to
>> hear back!
>>
>> Best regards,
>>
>> Benson Li
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20200315/68630db0/attachment.html>