[llvm-dev] GSoC Opportunity
Benson Bin Bin Li via llvm-dev
llvm-dev at lists.llvm.org
Wed Mar 18 11:07:53 PDT 2020
Hi everyone,
If you're interested in LLVM, start whether you'll get a proposal or not.
> GSoC is good because it motivates people to start contributing to a
> project even if they don't get GSoC in the end.
>
Yeah, I definitely am interested, and given this whole coronavirus
situation, will probably still want to contribute over the summer even if I
don't get selected. So if there is a project that still needs a student, it
does work out better for both parties. But in any case, thanks for letting
me know Stefanos. I will probably try to find a different project then.
Best,
Benson
On Wed, Mar 18, 2020 at 8:59 AM Stefanos Baziotis <
stefanos.baziotis at gmail.com> wrote:
> Hi Raphael,
>
> Thanks for the clarification. I note that in this case, I also think that
> Benson should preferably find a different project as that would probably be
> better for everybody.
>
> Best,
> Stefanos Baziotis
>
> On Wed, Mar 18, 2020, 12:24 Raphael “Teemperor” Isemann <
> teemperor at gmail.com> wrote:
>
>> Just to clarify my point about the “asking if there is already another
>> student applying”:
>>
>> In my situation there is already a student that applied 3 or 4 weeks ago
>> and that already has a finished application where I gave multiple rounds of
>> feedback and that already landed a few patches that convinced me he’s a
>> good candidate. I just told Benson that he can (of course) apply but that
>> he might want to see if there is still a project without a student that he
>> finds interesting. The reason here is simply that I don’t want Benson to
>> spend the remaining time on an application where there is a high chance
>> that another student gets selected, while at the same we have useful GSoC
>> projects without any applications that end up not happening.
>>
>> My goal is to have at least one good application for every project we put
>> up, as that benefits both LLVM and students.
>>
>> On Mar 18, 2020, at 10:39 AM, Stefanos Baziotis via llvm-dev <
>> llvm-dev at lists.llvm.org> wrote:
>>
>> Hi to both,
>>
>> > I'm not applying for GSoC but that's a hint if other students are
>> applying to help them get started.
>> Yes I agree, thanks for bringing up the topic.
>>
>> > On a more serious note, how do I know what issue can be solved in a
>> reasonable amount of time/how do I search for one?
>> Well, usually you don't. If you're lucky, someone will be able to
>> provide you with some issues that you can get started with in the part of
>> LLVM that you're interested
>> (independent of GSoC or not). If you can't get such an answer, then one
>> thing you can try is search for TODOs and FIXMEs and see if you can tackle
>> any of those.
>>
>> > He also suggested that I ask if another student has already submitted
>> a proposal for this one, and if so, to look for another llvm project within
>> the given time remaining.
>> In the discussion I posted above, you can see that probably there's
>> another person interested.
>>
>> But of course multiple people can apply to the same project.
>> Realistically speaking, you should apply where you think you have a chance,
>> so that you can
>> devote time that is useful in the end for both parties.
>>
>> One important thing though is: If you're interested in LLVM, start
>> whether you'll get a proposal or not.
>> GSoC is good because it motivates people to start contributing to a
>> project even if they don't get GSoC in the end. And in the long run that's
>> more important (and not only because the next year it will be way easier
>> to get a GSoC).
>>
>> Best,
>> Stefanos Baziotis
>>
>> Στις Τετ, 18 Μαρ 2020 στις 8:51 π.μ., ο/η Benson Bin Bin Li <
>> bbl2117 at columbia.edu> έγραψε:
>>
>>> Ohh also, Raphael Isemann got back to me on the LLDB tab completion
>>> project, and said that another student has already written a proposal. He
>>> also suggested that I ask if another student has already submitted a
>>> proposal for this one, and if so, to look for another llvm project within
>>> the given time remaining.
>>>
>>> On Wed, Mar 18, 2020 at 1:45 AM Benson Bin Bin Li <bbl2117 at columbia.edu>
>>> wrote:
>>>
>>>> IMHO, you do. :)
>>>>
>>>> Lol, you have too much faith in me. On a more serious note, how do I
>>>> know what issue can be solved in a reasonable amount of time/how do I
>>>> search for one?
>>>>
>>>>
>>>>
>>>>> Please feel free to email me or Ettore if you encounter any blockers,
>>>>> or have further questions.
>>>>
>>>>
>>>> Hi Whitney, thanks for the video link and info. I was a bit busy today,
>>>> but I will work tomorrow and get back to you on this!
>>>>
>>>> Best,
>>>> Benson
>>>>
>>>> On Tue, Mar 17, 2020 at 12:54 PM Nicholas Krause <xerofoify at gmail.com>
>>>> wrote:
>>>>
>>>>>
>>>>>
>>>>> On 3/17/20 10:09 AM, Stefanos Baziotis wrote:
>>>>>
>>>>> Hi Nick,
>>>>>
>>>>> What you said makes sense, but it's not called a call graph. :)
>>>>>
>>>>> Sure I assumed so that was just a term I used by mistake :).
>>>>>
>>>>> You're essentially referring to what LoopInfo does which makes sense,
>>>>> but as I mentioned earlier, this is already done
>>>>> in the LoopInfo. Now, how much one will be able to use it in a
>>>>> LoopNestPass is another issue, which is certainly
>>>>> something that mentors could help you with.
>>>>>
>>>>> I'm not applying for GSoC but that's a hint if other students are
>>>>> applying to help them get started.
>>>>>
>>>>> Nick
>>>>>
>>>>>
>>>>> Best,
>>>>> Stefanos
>>>>>
>>>>> Στις Τρί, 17 Μαρ 2020 στις 3:35 μ.μ., ο/η Nicholas Krause <
>>>>> xerofoify at gmail.com> έγραψε:
>>>>>
>>>>>>
>>>>>>
>>>>>> On 3/17/20 9:23 AM, Stefanos Baziotis wrote:
>>>>>>
>>>>>> > Yes that's correct.
>>>>>> Well, now that I saw the LoopNestAnalysis* files, they try to do sth
>>>>>> similar. So, I hope it helped.
>>>>>>
>>>>>> > My idea was similar but using the call graph directly
>>>>>>
>>>>>> Personally I don't see how the call graph can help you, since well...
>>>>>> it's a call graph. :)
>>>>>>
>>>>>> Not directly but you can could implement a call graph for the loops
>>>>>> internal to a function and walk up
>>>>>> it backwards. In addition you could make it possible to implement
>>>>>> this call graph to know the number
>>>>>> of loops nested and pop out to the outermost as a function. Basically
>>>>>> SCC for loops themselves rather
>>>>>> than functions.
>>>>>>
>>>>>> That's probably beyond the scope of the project so your right it
>>>>>> doesn't matter for this,
>>>>>> Nick
>>>>>>
>>>>>> You care about loops in a specific function. What can help you is the
>>>>>> Control-Flow graph, which is basically what LoopInfo uses to identify loops
>>>>>> in a function.
>>>>>> But because of that, loop identification is not your problem, loop
>>>>>> traversing is, if I understand it correctly.
>>>>>> Although you have to do things similar to loop identification (i.e.
>>>>>> what LoopInfo does) when trying to
>>>>>> decide for perfect nestings etc.
>>>>>>
>>>>>> Best,
>>>>>> Stefanos
>>>>>>
>>>>>>
>>>>>> Στις Τρί, 17 Μαρ 2020 στις 3:08 μ.μ., ο/η Nicholas Krause <
>>>>>> xerofoify at gmail.com> έγραψε:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 3/16/20 11:41 PM, Stefanos Baziotis wrote:
>>>>>>>
>>>>>>> Hi everyone,
>>>>>>>
>>>>>>> > I probably do not have the time to get a patch through.
>>>>>>> IMHO, you do. :)
>>>>>>>
>>>>>>> First of all, @Benson sorry but I'm not at all familiar with LLDB so
>>>>>>> I can't help there.
>>>>>>>
>>>>>>> Other than that, I'll also disappoint you both probably because I'm
>>>>>>> not that familiar with the creation of passes and the problem at hand. I'll
>>>>>>> try to help as I can.
>>>>>>>
>>>>>>> > 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? As I can understand, no because it's more of a structural,
>>>>>>> LLVM-specific problem than a generic, compiler optimization problem. > Stefanos
>>>>>>> can speak to this more but in order to create a LoopNestPass after reading
>>>>>>> what they are talking about requires information from the call graph
>>>>>>> > for a function or the loop hierarchy in LLVM IR. I'm not sure of
>>>>>>> the internal classes for this so Stefanos is there a way currently to get
>>>>>>> the info in IR about
>>>>>>> > the outer loop or from the call graph? That seems to be the
>>>>>>> biggest problem getting the outer loop in the IR or the call graph. After
>>>>>>> that you would
>>>>>>> > basically check if the loop is the outer loop and if so you can
>>>>>>> add dynamically to the pipeline.
>>>>>>>
>>>>>>> I'm not sure I followed you here. First of all, if you create a
>>>>>>> regular LoopPass, you'll visit loops from the innermost to the outermost.
>>>>>>> In the loop nest pass
>>>>>>> you want the outermost though, so you'll have to visit them all
>>>>>>> until you there. Now if you do it in a function pass, you lose the ability
>>>>>>> to put loops
>>>>>>> back into the pipeline, as this is how the function pass works. So,
>>>>>>> the way I understand it, to solve that problem, one would create something
>>>>>>> like a function
>>>>>>> pass, figure out the loops there (i.e. with LoopInfo), then convert
>>>>>>> it to LoopPass so that you can run loop passes over the loops.
>>>>>>> I think this can happen already, but right now, loops are going in
>>>>>>> reverse order:
>>>>>>> https://github.com/llvm/llvm-project/blob/master/llvm/include/llvm/Transforms/Scalar/LoopPassManager.h#L230
>>>>>>> So, maybe if you could modify that to something like
>>>>>>> FunctionToLestNestPassAdaptor, it would work? I don't know that's just an
>>>>>>> idea, let me not confuse you more.
>>>>>>>
>>>>>>> Best,
>>>>>>> Stefanos
>>>>>>>
>>>>>>> Yes that's correct. My idea was similar but using the call graph
>>>>>>> directly. The other problem is how to keep LCSSA form for all the loops as
>>>>>>> well and I'm
>>>>>>> aware that function passes don't care about that. So you can't
>>>>>>> really convert to a function pass itself but something similar.
>>>>>>>
>>>>>>> Nick
>>>>>>>
>>>>>>> Στις Δευ, 16 Μαρ 2020 στις 5:53 π.μ., ο/η Nicholas Krause <
>>>>>>> xerofoify at gmail.com> έγραψε:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On 3/15/20 11:12 PM, Benson Bin Bin Li via llvm-dev wrote:
>>>>>>>>
>>>>>>>> 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?
>>>>>>>>
>>>>>>>> Stefanos can speak to this more but in order to create a
>>>>>>>> LoopNestPass after reading what they are talking about requires information
>>>>>>>> from the call graph
>>>>>>>> for a function or the loop hierarchy in LLVM IR. I'm not sure of
>>>>>>>> the internal classes for this so Stefanos is there a way currently to get
>>>>>>>> the info in IR about
>>>>>>>> the outer loop or from the call graph? That seems to be the biggest
>>>>>>>> problem getting the outer loop in the IR or the call graph. After that you
>>>>>>>> would
>>>>>>>> basically check if the loop is the outer loop and if so you can add
>>>>>>>> dynamically to the pipeline.
>>>>>>>>
>>>>>>>> Sorry if I'm not much help as I'm not sure if the call graph API
>>>>>>>> supports this but I'm pretty sure LLVM IR doesn't make this easy,
>>>>>>>> Nick
>>>>>>>>
>>>>>>>>
>>>>>>>> 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
>>>>>>>>>>
>>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> LLVM Developers mailing listllvm-dev at lists.llvm.orghttps://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
>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200318/3f9e605c/attachment-0001.html>
More information about the llvm-dev
mailing list