5 ms·
>just a simple case of bad code generation render little compiler into a toy one If you find some time to go through gcc bugzilla you'll find shockingly simple
by fuhsnn 2y ago
>just a simple case of bad code generation render little compiler into a toy one
If you find some time to go through gcc bugzilla you'll find shockingly simple snippets of code that miscompiled (often by optimization passes), with fixes never backported to older versions that production environments like RHEL are using.
- auselen 2y agoOk, but that’s sw engineering issue. I still insist that a production grade compiler can’t leave performance on table. Which is where the current battlefield is.
- jsnnsjxj 2y agoI do not agree in the general case. There are very useful DSL compilers which do not consider performance at all, but just compile to a target which does the optimization for them (JVM, LLVM IR or even just C)
- bigstrat2003 2y agoI think a production grade compiler not only can, but must, leave performance on the table when the cost is correctness (unless the performance gain is incredibly high and the correctness loss is minimal). Correctness is not all important, but it is the most important thing. Unfortunately, compiler writers do not agree and they do silly things like "let's assume UB cannot ever happen and optimize based on that".
- auselen 2y agoCorrectness is already a must, how did you arrive to this?
- kragen 2y agoif only the gcc and llvm maintainers, and c standard authors, agreed with you
- auselen 2y agoI mean these compilers build all these SW stacks, even this very browser I’m using, where are these correctness issues you are talking about?
- kragen 2y agothere are new items in this category every day, but https://blog.cr.yp.to/20240803-clang.html https://blog.cr.yp.to/20240803-clang.html is noteworthy
- auselen 2y agoEh https://news.ycombinator.com/item?id=41146860 https://news.ycombinator.com/item?id=41146860
- kragen 2y agoyes, that
- fulafel 2y agoThis is about optimizations affecting timing of cryptographic code, not correctness of computation, the argument for calling this a correctness bug in the compiler is quite weak I think.
- auselen 2y agoI realized with all the rhel systems I’m using, we are never using default toolchains on them. Just use those old systems to run stuff, even newer toolchains.