3 ms·
GCC does some things better than LLVM. It supports more architectures, has a not broken implentation of restrict (which should be useful for Rust), and optimize
by jeltz 7y ago
GCC does some things better than LLVM. It supports more architectures, has a not broken implentation of restrict (which should be useful for Rust), and optimizes some code better. They both have their own pros and cons.
- cesarb 7y ago> has a not broken implementation of restrict (which should be useful for Rust) The most recent restrict bug the rustc developers found (which made they disable restrict again) was found in both LLVM and GCC (they made a C reproducer, so they could test in both). See: https://github.com/rust-lang/rust/issues/54878 https://github.com/rust-lang/rust/issues/54878 (rustc) https://bugs.llvm.org/show_bug.cgi?id=39282 https://bugs.llvm.org/show_bug.cgi?id=39282 (LLVM) https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87609 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87609 (GCC).
- sanxiyn 7y agoNote that GCC bug is now fixed. LLVM bug isn't.
- cwzwarich 7y agoThe interiteration issue with LLVM's noalias has been known for years: https://reviews.llvm.org/D9375 https://reviews.llvm.org/D9375 I even filed a version of it myself: https://bugs.llvm.org/show_bug.cgi?id=27955 https://bugs.llvm.org/show_bug.cgi?id=27955 I'm actually surprised that Rust enabled noalias usage with this known outstanding issue. When I worked on Rust years ago, it was definitely common knowledge on the compiler "team" that this was broken. I'm equally surprised that GCC had that bug, since their pointer aliasing model is equipped to correctly handle this situation (and is why they were able to fix it quickly).