Re: netbsd-11 gcc bug
Mouse <[email protected]> Sun, 24 May 2026 08:33:19 -0400 (EDT)
| Newsgroups | gmane.os.netbsd.devel.toolchain |
|---|---|
| Message-ID | <[email protected]> |
>> I'd say this should be filed as a bug with the gcc people; if they >> can't/won't fix it, NetBSD should roll back to a previous gcc and/or >> drop gcc as the system compiler, as then it'd be clearly unsuitable. (I perhaps should have added "as the self-hosting compiler for NetBSD".) > It is not about gcc or clang, it is about the C standard, which is > created by an open comittee and you are welcome to send defect > reports and/or ask for clarifictaions. Which is fair - but compilers do not have to take advantage of all the leeway the standard gives them. "Undefined behaviour" can, after all, include "exactly what the code author intended". > The compiler using all strength the standard gives it is just a > logical consequence of the user asking it to optimize. Then, for the sake of being useful, it needs a setting that is "do most optimizations, but don't make such unreasonable inferences about formally-undefined behaviour". Perhaps the gcc people are able-and-willing to do that. But, if not, I still maintain that it is thereby unsuitable for the use case of building NetBSD. The standard is an attempt to satisfy everyone; the result is a compromise, and gives too much leeway for some use cases and not enough for others - repeated, of course, for each point on which there is potential leeway. If &p->member is undefined behaviour when p is nil, the correct thing for a *useful* compiler to do is not to simply assume p is non-nil, at least not unless specifically told to; it is to test for nil and take some suitable action - indirect through it, call a (possibly invocation-dependent) routine, *something* better than silently propagating the inference. Especially in the presence of an explicit test for nil later! > But fixing the code to avoid "undefined behaviour" is the proper > solution and fits NetBSD's clean code mission well. Well, none of this is my call to make. But I still think it excessive for the compiler to cause formally-undefined behaviour to elide explicit tests, especially when told to run freestanding. /~\ The ASCII Mouse \ / Ribbon Campaign X Against HTML [email protected] / \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B