Still broken in LLVM: https://gist.github.com/thestinger/f805fd61f2da9901d2fe4442d31c82ce …. Breaks memory/type safety guarantees in LLVM-based languages if they take advantage of non-returning functions like Rust. C11 does allow removing the loop but not what the 2nd example ends up doing. @johnregehr @spun_off @RichFelker
-
Show this thread
-
C11 allows removing a no-op loop without a constant control expression, so it might be valid to remove `for (;;)` in C11 (not C89/C99) but the 2nd example wrong in C11 too. Same issue with `while (1)` which is unambiguously a constant expression and cannot be removed even in C11.
3 replies 0 retweets 0 likesShow this thread -
CopperheadOS Retweeted Paul Crowley
https://twitter.com/ciphergoth/status/914206519704526850 … The answer seems to be no, since https://bugs.llvm.org/show_bug.cgi?id=965 … was reported in 2006 but the incorrect optimization is still active. It's very backwards to do an optimization before infrastructure is there (halting attribute) to do it correctly...
CopperheadOS added,
1 reply 1 retweet 4 likesShow this thread
This principle applies to basically all floating point optimizations in both gcc and llvm.
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.