https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71885
Kern Sibbald <kern at sibbald dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kern at sibbald dot com --- Comment #5 from Kern Sibbald <kern at sibbald dot com> --- I would like to see a precise explanation of what "undefined behavior" is. Bacula does zero memory that is passed as a replacement to a new. This behavior is desirable and very well defined. I may be wrong, but it seems that you are assuming that the memory is already zero, which is not a good assumption. In the case of Bacula memory that is allocated from the heap is non-zero by explicit programming. Consequently this seems to me to be an overly aggressive optimization that should be enabled at a much higher optimization level than -O2, generally used by Bacula and many other programs. At some point g++'s tinkering with valid user's programs should stop. Yes, we can probably work around the g++ generated bug by explicitly testing for the g++ compiler version and adding another command line option, but this should be unnecessary. Changing g++ in this manner (rather cavalier in my opinion) can create lots of unnecessary problems for many programs. As you might image, I call this new g++ feature "unreasonable" and "dangerous". Please remove it or at least make it a new option that the g++ user must explicitly add.