[HN Gopher] Diving into GCC Internals
___________________________________________________________________
Diving into GCC Internals
Author : penguin_booze
Score : 65 points
Date : 2022-06-13 20:12 UTC (2 hours ago)
(HTM) web link (gcc-newbies-guide.readthedocs.io)
(TXT) w3m dump (gcc-newbies-guide.readthedocs.io)
| bragr wrote:
| >What's in the GCC source tree?
|
| >TODO [1]
|
| Oh good, it's not like we'd actually want those newbies to get
| involved and contribute. No, that's what LLVM is for. [2]
|
| [1] https://gcc-newbies-guide.readthedocs.io/en/latest/gcc-
| sourc...
|
| [2] https://llvm.org/docs/GettingStarted.html
| [deleted]
| cptwunderlich wrote:
| Gosh, I really wish GCC had more/better documentation. Especially
| big picture stuff. E.g., I would like to know what register
| allocation algorithms it uses (and how certain details are
| handled), but looking at that code I noped out...
| chrisseaton wrote:
| It uses something they call IRA and LRA on the RTL
| representation. But bottom line is: it's graph colouring.
|
| https://gcc.gnu.org/onlinedocs/gccint/RTL-passes.html
|
| There's really quite a lot of documentation and published
| papers when you actually look:
|
| https://github.com/gcc-mirror/gcc/blob/751f306688508b08842d0...
| Analemma_ wrote:
| This might be less true now, but for a long time gcc's code was
| terrible and undocumented on purpose. rms wanted it that way,
| to make it harder for it to be forked or EEE'd by corporations.
|
| Whether that was a _good_ plan is up for debate, but there you
| go.
| astrange wrote:
| You can read GCC Summit presentations for things like that. The
| register allocator is called IRA/LRA. It used to have a ball of
| mud called reload that isn't worth understanding because it
| doesn't make much sense.
|
| GCC's code style is strange because the original authors wanted
| to make it look like Lisp for some reason.
| touisteur wrote:
| Err I always thought it looked strange because it was in C
| with classes before or after some holy war.
|
| While gcc (and in general compiler) plugins are some of the
| most interesting tech enablers (be it for fuzzing,, static
| analysis, or runtime checks injection) 'People competently
| maintaining gcc plugins' (a sect I'm not a part anymore,
| thank dog) are amongst the most patient, devoted, unsung
| angels of this world.
| astrange wrote:
| It's in C++ now. The weird spacing and functions ending in
| _p are Lispisms.
|
| It's also garbage collected so it's still not "normal" C++
| but neither is LLVM.
|
| Not sure about the plugin API, but C++ is basically
| impossible to use with plugins because it's so hard to keep
| ABI contracts, so it might not have changed.
| [deleted]
___________________________________________________________________
(page generated 2022-06-13 23:00 UTC)