On Tue, Sep 27, 2022 at 5:48 PM Jeff Law via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > > On 8/22/22 00:16, Richard Biener via Gcc-patches wrote: > > The following fixes PR105646, not diagnosing > > > > int f1(); > > int f3(){ > > auto const & a = f1(); > > bool v3{v3}; > > return a; > > } > > > > with optimization because the early uninit diagnostic pass only > > diagnoses always executed cases. The patch does this by > > re-interpreting what always executed means and choosing to > > ignore exceptional and abnormal control flow for this. At the > > same time it improves things as suggested in a comment - when > > the value-numbering run done without optimizing figures there's > > a fallthru path, consider blocks on it as always executed. > > > > Bootstrapped and tested on x86_64-unknown-linux-gnu. > > > > OK? > > > > Thanks, > > Richard. > > > > PR tree-optimization/105646 > > * tree-ssa-uninit.cc (warn_uninitialized_vars): Pre-compute > > the set of fallthru reachable blocks from function entry > > and use that to determine wlims.always_executed. > > > > * g++.dg/uninit-pr105646.C: New testcase. > > I'm torn on this. On one hand, ignoring abnormal flow control in the > early pass is almost certainly going to result in false positives but > it's also going to result in fixing some false negatives. > > I'm willing to ACK and see what the real world fallout is in the spring > when the distros run their builds. Your call.
I have pushed this now after retesting. Let's see if there's any bad fallout - we can certainly reconsider. Richard. > > Jeff > >