[llvm-dev] Beginning developer questions

Deep Majumder via llvm-dev llvm-dev at lists.llvm.org
Sat Jan 23 19:53:05 PST 2021


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/5105da7a/attachment.html>


More information about the llvm-dev mailing list