LMAO reportedly this broke a bunch of shit in Linux kernel: https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=781634daea8cb788efb33994f4a19df76598542e;hp=600cf1128e49f086522bfddc54490b4e39e30383
Conversation
Notices
-
Embed this notice
Rich Felker (dalias@hachyderm.io)'s status on Saturday, 21-Dec-2024 16:06:57 JST Rich Felker
-
Embed this notice
Rob Landley (landley@mstdn.jp)'s status on Saturday, 21-Dec-2024 17:42:01 JST Rob Landley
@dalias ...?
-
Embed this notice
Rich Felker (dalias@hachyderm.io)'s status on Saturday, 21-Dec-2024 17:42:01 JST Rich Felker
@landley They made gcc take advantage of ctz(0) being undefined. Linux uses it.
-
Embed this notice
Rob Landley (landley@mstdn.jp)'s status on Saturday, 21-Dec-2024 18:12:12 JST Rob Landley
@dalias If behavior is "undefined", define it to the most obvious thing and stick with it.
I want a -fdisable-stupid-optimizer for every instance where the plain meaning of the language and the behavior of GCC diverge. (Alas disabling the optimizer entirely loses the old "turbo C for dos did this" stuff like dead code elimination.)
-
Embed this notice
Rich Felker (dalias@hachyderm.io)'s status on Saturday, 21-Dec-2024 18:12:12 JST Rich Felker
@landley Both are kinda at fault here. It's always been undefined in the docs, and the insn is even supposedly undefined on some cpu versions (including some x86!) but "happened to produce 32 or 64". GCC making sudden change without realizing it broke Linux and presumably without a chicken switch seems bad tho.
-
Embed this notice