4 ms·
This post is frankly one of the most convoluted discussions of SSA I've read. There's lots of info there, but I'd frankly suggest going back and look at a paper
by vidarh 1y ago
This post is frankly one of the most convoluted discussions of SSA I've read. There's lots of info there, but I'd frankly suggest going back and look at a paper on implementing it. I think I first came across SSA in a paper adding it to Wirths Oberon compiler, and it was much more accessible.
Edit: It was this paper by Brandis and Mössenböck: https://share.google/QNoV9G8yMBWQJqC82 https://share.google/QNoV9G8yMBWQJqC82
- jhallenworld 1y agoAlso I recommend Bob Morgan's book: https://turbo51.com/download/Building-an-Optimizing-Compile-Book-Preview.pdf https://turbo51.com/download/Building-an-Optimizing-Compile-...
- Rochus 1y agoIndeed a great book; I even have a paper copy. The SSA book is also pretty good: https://web.archive.org/web/20201111210448/https://ssabook.gforge.inria.fr/latest/ https://web.archive.org/web/20201111210448/https://ssabook.g...
- mananaysiempre 1y agoI’ve found the SSA book to be... unforgiving in its difficulty. Not in the sense that I thought it to be a bad book but rather in that I was getting the feeling that a dilettante in compilers like me wasn’t the target audience.
- Rochus 1y agoLike so many compiler books from academia.
- pbiggar 1y agoI was involved in making the book. It is very much a book for academics, and came out of an academic conference bringing together people working at the forefront of SSA-based research.
- mananaysiempre 1y agoI mean, once again, I’m not really complaining about the book. It’s fairly mathy, sure, but so what. I also actually welcome that it’s a coherent book rather than a bunch of papers in a trenchcoat or a menagerie of neat things people have thought of (*cough* Paxos variants). It’s rather that it’s a bit unusual in that it’s a coherent book whose prerequisites (on top of an old-timey compilers course, say) I don’t think actually exist in book form (I’d love to be proven wrong, as that’s likely what I need to read). The introductory part does make it self-contained in a sense, but it’s more like those grad-level maths books that include a definitions chapter or three: technically you don’t need to know any of that stuff beforehand, true, but in reality if it does more for you than just fill a few gaps and fix terminology, then you’re not going to have a good time with the rest. Again, just my experience, I don’t know if that’s what you were going for. If there was a criticism implied in my initial comment, it’s that I think that the kind of person that goes looking for literature recommendations in this thread isn’t going to have a good time with it, either; so at the very least they should know what they’re signing up for. But I don’t think you’re really disagreeing with that part?..
- pbiggar 1y agoOh for sure, I was agreeing with you. The target audience is academics. For non-experts, I love "Engineering a Compiler" by Cooper and Torczon.
- penguin_booze 1y agoThis only contains the first 3 chapters.
- cestith 1y agoGoogle says there’s no eBook available, for what that’s worth. https://books.google.com/books/about/Building_an_Optimizing_Compiler.html?id=CXlhQgAACAAJ https://books.google.com/books/about/Building_an_Optimizing_... Yet Amazon says it’s on Kindle. https://www.amazon.com/Building-Optimizing-Compiler-Bob-Morgan-ebook/dp/B008COCE9G https://www.amazon.com/Building-Optimizing-Compiler-Bob-Morg...
- jchw 1y agoHonestly, I think it's just something you either like or don't. If all you were trying to do was understand SSA, I agree this blog post is probably inefficient at that particular task, but often blog posts are entertainment as much as education, so meandering through a bunch of different things along the way is part of the deal. Personally I thought there were a lot of pretty interesting insights that I haven't seen a lot of discussion about in other places, though I will admit I mostly learned about SSA from Wikipedia and from people yelling about compilers online.
- Rochus 1y agoThanks for the link. Looks like an interesting paper. Here is the original reference: https://dl.acm.org/doi/10.1145/197320.197331 https://dl.acm.org/doi/10.1145/197320.197331. And here is a better readable postscript version: https://web.archive.org/web/20170706013237/ftp://ftp.ssw.uni-linz.ac.at/pub/Papers/Moe94.ps.gz https://web.archive.org/web/20170706013237/ftp://ftp.ssw.uni...
- anonymousDan 1y agoAs someone who knows a bit about SSA, what do you make of LLVM's design decision not to use SSA for memory but only registers (i.e. it doesn't have memory SSA)? It has always confused me a bit as to why this was done.
- vidarh 1y agoI don't really follow LLVM. I find it too big and convoluted for the stuff I'm doing.