[llvm-dev] Beginning developer questions

David Blaikie via llvm-dev llvm-dev at lists.llvm.org
Sun Jan 24 16:55:37 PST 2021


If you or someone else have some time - perhaps a patch to
https://llvm.org/docs/GettingStarted.html could be proposed.

On Sat, Jan 23, 2021 at 7:53 PM Deep Majumder <deep.majumder2019 at gmail.com>
wrote:

> Hi all,
> I have got a lot of useful advice from many different people in this
> thread. Is it possible for me to make a page in the wiki or a section
> perhaps summarising all of these points?
> Warm regards,
> Deep
>
> On Fri, Jan 15, 2021 at 8:32 AM David Blaikie <dblaikie at gmail.com> wrote:
>
>> Ah, It's "-Wl,--gdb-index" the character after 'W' is lower-case L,
>> not upper case i. (L for Linker). And it's a comma, not a space,
>> between "-Wl" and "--gdb-index"
>>
>> On Thu, Jan 14, 2021 at 6:58 PM Deep Majumder
>> <deep.majumder2019 at gmail.com> wrote:
>> >
>> > Hi David,
>> > Sorry to annoy you. I have lld enabled via LLVM_ENABLE_LLD=ON. To use
>> -WI and --gdb-index, I set CMAKE_EXE_LINKER_FLAGS_DEBUG=-WI --gdb-index in
>> CMakeCache.txt. But that doesn't work out and I get the following error:
>> > c++: error: unrecognized command line option ‘-WI’; did you mean ‘-I’?
>> > c++: error: unrecognized command line option ‘--gdb-index’; did you
>> mean ‘--no-index’?
>> >
>> > Why does this happen?
>> > Warm Regards,
>> > Deep
>> >
>> >
>> > On Fri, Jan 15, 2021 at 7:39 AM David Blaikie <dblaikie at gmail.com>
>> wrote:
>> >>
>> >> You'd need gold or lld - ld.bfd doesn't support gdb-index.
>> >>
>> >> On Thu, Jan 14, 2021 at 6:04 PM Deep Majumder
>> >> <deep.majumder2019 at gmail.com> wrote:
>> >> >
>> >> > Hi David,
>> >> > Do you use ld, gold or lld as the linker. I am getting an unknown
>> flag error with lld for the --gdb-index.
>> >> > Warm regards,
>> >> > Deep
>> >> >
>> >> > On Thu, Jan 14, 2021, 11:38 PM David Blaikie <dblaikie at gmail.com>
>> wrote:
>> >> >>
>> >> >> gdb startup time can be reduced significantly by using a
>> linker-generated index. Compile with -ggnu-pubnames and link with
>> -Wl,--gdb-index. I use this configuration (plus Split DWARF, fwiw) and gdb
>> startup time is only a few seconds/quite usabel.
>> >> >>
>> >> >> On Thu, Jan 14, 2021 at 9:58 AM Deep Majumder via llvm-dev <
>> llvm-dev at lists.llvm.org> wrote:
>> >> >>>
>> >> >>> Hi all,
>> >> >>> As Stefanos had pointed out, GDB takes an awful lot of time to
>> even start on a debug build of an executable (say clang). LLDB works better
>> but still isn't quite smooth to work with (takes a long time to set
>> breakpoints). So what do LLVM devs who use Linux use for debugging, or is
>> Windows the predominant platform of development?
>> >> >>> Warm regards,
>> >> >>> Deep
>> >> >>>
>> >> >>> On Wed, Jan 13, 2021, 12:26 AM <paul.robinson at sony.com> wrote:
>> >> >>>>
>> >> >>>> Re CLion:  The LLVM *Project* (presumably meaning the Foundation)
>> does not pay core developers.  It does pay for some infrastructure staff
>> IIRC.
>> >> >>>>
>> >> >>>> However, the project is primarily funded by commercial companies
>> (you should be able to find documentation of the contributors on the
>> Foundation website), so I think on that count it would not qualify for the
>> free CLion.
>> >> >>>>
>> >> >>>> --paulr
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> From: llvm-dev <llvm-dev-bounces at lists.llvm.org> On Behalf Of
>> Chris Tetreault via llvm-dev
>> >> >>>> Sent: Tuesday, January 12, 2021 1:34 PM
>> >> >>>> To: Deep Majumder <deep.majumder2019 at gmail.com>; LLVM Dev <
>> llvm-dev at lists.llvm.org>
>> >> >>>> Subject: Re: [llvm-dev] Beginning developer questions
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> I’ve had good luck using QTCreator for large C++ projects in the
>> past. Unlike CLion, QTCreator is actually free. It may be worth taking a
>> look.
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> From: llvm-dev <llvm-dev-bounces at lists.llvm.org> On Behalf Of
>> Deep Majumder via llvm-dev
>> >> >>>> Sent: Tuesday, January 12, 2021 9:52 AM
>> >> >>>> To: Madhur Amilkanthwar <madhur13490 at gmail.com>
>> >> >>>> Cc: llvm-dev <llvm-dev at lists.llvm.org>
>> >> >>>> Subject: [EXT] Re: [llvm-dev] Beginning developer questions
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> Hi Stefanos and Madhur,
>> >> >>>>
>> >> >>>> Of course it would be great if LLVM is given licenses by
>> JetBrains as it would benefit many people(I guess) working on this project
>> who are not students.
>> >> >>>>
>> >> >>>> I am a student and so have a free license anyway.
>> >> >>>>
>> >> >>>> Also, thank you David for the link.
>> >> >>>>
>> >> >>>> Warm Regards,
>> >> >>>>
>> >> >>>> Deep
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> On Tue, Jan 12, 2021 at 11:17 PM Madhur Amilkanthwar <
>> madhur13490 at gmail.com> wrote:
>> >> >>>>
>> >> >>>> Hi Stefanos,
>> >> >>>>
>> >> >>>> Speaking of CLion, their page says open source projects can
>> qualify for free licenses. I am not sure if LLVM community qualifies as per
>> the below required qualifications:
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> Do not pay their core project developers.
>> >> >>>>
>> >> >>>> Meet the Open Source definition.
>> >> >>>>
>> >> >>>> Are in active development, i.e. new code commits are submitted
>> regularly within the past 3 months.
>> >> >>>>
>> >> >>>> Do not provide paid versions of open source software or any
>> commercial services around the Open Source project (e.g. paid support,
>> consulting, etc).
>> >> >>>>
>> >> >>>> Are not funded by commercial companies or organizations (NGO,
>> educational, research, or governmental).
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> On Tue, Jan 12, 2021 at 10:31 PM David Blaikie via llvm-dev <
>> llvm-dev at lists.llvm.org> wrote:
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> On Tue, Jan 12, 2021 at 7:35 AM Deep Majumder via llvm-dev <
>> llvm-dev at lists.llvm.org> wrote:
>> >> >>>>
>> >> >>>> Thanks everyone for the advice! I am able to build LLVM now
>> without causing my laptop to thrash. Also as I understand that for
>> auto-complete in LLVM, Linux is not the best place to be. Also, thanks for
>> the Doxygen-generated docs link.
>> >> >>>>
>> >> >>>> Warm regards,
>> >> >>>>
>> >> >>>>
>> >> >>>> If you're more vim/emacs than IDE - I use
>> https://wiki.archlinux.org/index.php/Vim/YouCompleteMe and
>> compile_commands.json generated from the ninja build I think (maybe it's
>> generated by cmake? I forget)
>> >> >>>>
>> >> >>>>
>> >> >>>> Deep
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> On Tue, Jan 12, 2021 at 10:03 AM Craig Topper <
>> craig.topper at gmail.com> wrote:
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> On Mon, Jan 11, 2021 at 8:07 PM Stefanos Baziotis via llvm-dev <
>> llvm-dev at lists.llvm.org> wrote:
>> >> >>>>
>> >> >>>> Hi Deep,
>> >> >>>>
>> >> >>>> 1) Kind of. There's Doxygen generated from source automatically,
>> which shows you many things e.g., members of a type along with some short
>> documentation (which is taken from the code). It also shows you the
>> inheritance tree related to this type
>> >> >>>>
>> >> >>>> Here's an example:
>> https://llvm.org/doxygen/classllvm_1_1LoopInfo.html
>> >> >>>>
>> >> >>>> It doesn't really matter what this is for now, but you can see
>> e.g., that LoopInfo inherits from LoopInfoBase. If you scroll down, you can
>> click to different members and go to a more detailed description further
>> down. You can open the dropdown menus (e.g., public
>> >> >>>>
>> >> >>>> functions inherited). And finally, at the top, you can see the
>> file it appears at. In general, I think that if you start clicking stuff,
>> it's going to make sense, it's relatively intuitive.
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> 2) Try minimizing the number of parallel threads used. I think by
>> default Ninja uses all the available threads which in most machines will
>> fill up the RAM. To limit them, use the -j argument like this: ninja -j8
>> >> >>>>
>> >> >>>> Another thing that will probably be useful in general is that you
>> can choose to build specific sub-projects instead of building the whole
>> thing, like this: ninja -j8 opt
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> You can also use -DLLVM_PARALLEL_LINK_JOBS=<number> on your cmake
>> command to limit just the number of linking jobs that can run in parallel.
>> -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON can be a useful
>> build configuration that you gets you debug logging and assertions, but you
>> won't have debug symbols for gdb. There's also -DLLVM_USE_SPLIT_DWARF. All
>> of these options are covered here
>> https://llvm.org/docs/GettingStarted.html#common-problems
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> 3) Ok, first of all, if you only care about editing and not
>> debugging LLVM (i.e. launching it with a debugger like gdb), then editors
>> like Vim, Emacs, 4coder, maybe Sublime Text should do the job. I think most
>> people
>> >> >>>>
>> >> >>>> developing LLVM on Linux use something like this.
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> Now, if you're interested in IDEs and / or debuggers, well, the
>> news in Linux is bad IMHO. For example, in my machine, GDB takes _30
>> seconds_ to launch the debug build of opt.
>> >> >>>>
>> >> >>>> So, I couldn't use any IDE because virtually all use GDB under
>> the hood. Personally, I switched to Windows + Visual Studio just for this
>> reason. That was an insane productivity boost for me.
>> >> >>>>
>> >> >>>> But if you need something that works in Linux, you can maybe try
>> LLDB. Hopefully it will be faster. If yes, you can maybe try hooking it in
>> an IDE, which I guess won't be trivial.
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> That said, as I don't develop LLVM in Linux, other people might
>> have better suggestions.
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> Best,
>> >> >>>>
>> >> >>>> Stefanos
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> Στις Τρί, 12 Ιαν 2021 στις 5:43 π.μ., ο/η Deep Majumder via
>> llvm-dev <llvm-dev at lists.llvm.org> έγραψε:
>> >> >>>>
>> >> >>>> Hello everyone,
>> >> >>>>
>> >> >>>> I have been studying the LLVM IR and now want to get into LLVM
>> development. I have a few questions regarding that and I would be really
>> grateful to get answers for:
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> 1) The LangRef is an excellent guide/reference to the IR. Is
>> there something similar for the codebase (the core llvm to be specific)? Or
>> do I have to generate that from the source, in which case how do I do that?
>> >> >>>>
>> >> >>>> 2) I tried building just the llvm sub-project, and that is
>> filling up my RAM completely during the linking stages, and sends my laptop
>> thrashing. I am using Ninja. Is there a way to mitigate this? (I am on
>> Ubuntu 20.04 Linux, 8 GM RAM, 8 GM swap on an HDD).
>> >> >>>>
>> >> >>>> 3) VSCode, at least on my laptop, is very sluggish with such
>> large a project. Is there any recommended development environment for Linux
>> (or at least something that has been found to work well)?
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> Thank you for your time!
>> >> >>>>
>> >> >>>> Regards,
>> >> >>>>
>> >> >>>> Deep
>> >> >>>>
>> >> >>>> _______________________________________________
>> >> >>>> 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
>> >> >>>>
>> >> >>>> _______________________________________________
>> >> >>>> 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
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> --
>> >> >>>>
>> >> >>>> Disclaimer: Views, concerns, thoughts, questions, ideas expressed
>> in this mail are of my own and my employer has no take in it.
>> >> >>>>
>> >> >>>> Thank You.
>> >> >>>> Madhur D. Amilkanthwar
>> >> >>>
>> >> >>> _______________________________________________
>> >> >>> 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/20210124/8d96890d/attachment.html>


More information about the llvm-dev mailing list