https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88576
Eric Gallager <egallager at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |egallager at gcc dot gnu.org --- Comment #13 from Eric Gallager <egallager at gcc dot gnu.org> --- (In reply to Richard Biener from comment #11) > (In reply to Florian Weimer from comment #6) > > Has this got to do anything with errno? It seems to me that with > > -fno-math-errno, GCC assumes that malloc does not set *any* TLS variable. > > That doesn't look right to me. > > GCC assumes that memory allocation does not affect global heap state. > That's correct unless you compile the memory allocator itself. > > Note the original "alias" with -fno-math-errno was probably too lazy but > allocations being a barrier for any load/store of global memory is quite > bad for optimization in _fortran_ (which has no business with errno) > where we (unfortunately) also get everything passed by reference. > > I'll introduce -f[no-]alloc-errno, defaulted to the -f[no-]math-errno > state and enabled at -Ofast (but not with -ffast-math). Darwin has -fno-math-errno set by default, but its malloc can set errno (to ENOMEM), so it wouldn't make sense to have -fno-alloc-errno set by -fno-math-errno on Darwin