On 12/15/2017 02:08 AM, Richard Biener wrote: > On Fri, Dec 15, 2017 at 4:40 AM, Martin Sebor <mse...@gmail.com> wrote: >> On 12/07/2017 03:48 PM, Jeff Law wrote: >>> >>> On 12/07/2017 03:38 PM, Richard Sandiford wrote: >>> >>>>> So I think that's the final ack on this series. >>>> >>>> >>>> Thanks to both of you, really appreciate it! >>> >>> Sorry it took so long. >>> >>>> >>>>> Richard S. can you confirm? I fully expect the trunk has moved some >>>>> and the patches will need adjustments -- consider adjustments which >>>>> work in a manner similar to the patches to date pre-approved. >>>> >>>> >>>> Yeah, that's now all of the poly_int patches. I still owe you replies >>>> to some of them -- I'll get to that as soon as I can. >>> >>> NP. I don't think any of the questions were all that significant. >>> Those which were I think you already responded to. >> >> >> I am disappointed that the no-op ctor issue hasn't been adequately >> addressed. No numbers were presented as to the difference it makes >> to have the ctor do the expected thing (i.e., initialize the object). >> In my view, the choice seems arbitrarily in favor of a hypothetical >> performance improvement at -O0 without regard to the impact on >> correctness. We have recently seen the adverse effects of similar >> choices in other areas: the hash table insertion[*] and the related >> offset_int initialization. > > As were coming from a C code base not initializing stuff is what I expect. > I'm really surprised to see lot of default initialization done in places > where it only hurts compile-time (of GCC at least where we need to > optimize that away). I suspect a lot of the default initializations were done when Kaveh and others were working to get us -Wuninitialized clean -- which happened when uninitialized warnings were still done in RTL (flow.c).
I've long wished we had marked the initializations which were done solely to make -Wuninitialized happy because it would be a good way to measure progress on our analysis & optimization passes's ability to prove the paths weren't executable. WRT the nop ctor issue, I had a slight leaning towards initializing them, but I certainly could argue either side. I think the long term goal really should be to move to C++11 where it can be done right. jeff