3 ms·
LLVM and associated projects such as clang. Bazel is good too. OkHttp and Retrofit by Square.
by daniel-levin 8y ago
LLVM and associated projects such as clang. Bazel is good too. OkHttp and Retrofit by Square.
- vnorilo 8y agoLLVM is remarkable; the domain is both difficult and critical. Still, the code is consistent enough that I can often guess how things work based on what I think would be reasonable!
- glandium 8y agoDon't look how inline assembly is handled between clang and llvm.
- xfs 8y agoYet it contains monsters like this one https://github.com/llvm-mirror/llvm/blob/master/lib/Target/X86/X86ISelLowering.cpp https://github.com/llvm-mirror/llvm/blob/master/lib/Target/X...
- tom_mellior 8y agoI've been working with LLVM for a few years and I still find the code difficult to navigate and badly documented. And every single function's argument list is a random jumble of pointers and references (almost all arguments should be references, but many aren't).
- anarazel 8y agoIndeed. And it's not just medium to low-level stuff that's not well documented, it's the high-level stuff too. I personally don't mind that much if I have to spend a few minutes to understand something on a a very local scope, but if the bigger picture is unclear, that's quite bad. For LLVM one largely has to grep for a bunch of other users and try to figure it out from that. While I think it has some clear deficiencies, I found a lot of e.g. the optimization passes in GCC a lot easier to read. It's probably above par, but e.g. https://github.com/gcc-mirror/gcc/blob/master/gcc/gimple-ssa-store-merging.c https://github.com/gcc-mirror/gcc/blob/master/gcc/gimple-ssa... is really well explained imo.
- McP 8y agoThe coding standard for variables in LLVM drives me nuts. Both class names and variables names must be upper camel case so if you're lucky the code looks like this: Analyzer TheAnalyzer; but more commonly: Analyzer A; with A being utterly unhelpful to read many lines later.