On 7/22/2021 6:34 AM, Richard Biener wrote:
We can improve uninit warnings from the early pass by looking
at PHI arguments on fallthru edges that are uninitialized and
have uses that are before a possible loop exit.  This catches
some cases earlier that we'd only warn in a more confusing
way after early inlining as seen by testcase adjustments.

It introduces

FAIL: gcc.dg/uninit-23.c (test for excess errors)

where we additionally warn

gcc.dg/uninit-23.c:21:13: warning: 't4' is used uninitialized [-Wuninitialized]

which I think is OK even if it's not obvious that the new
warning is an improvement when you look at the obvious source.

Somehow for all cases I never get the `'foo' was declared here`
notes, I didn't dig why that happens but it's odd.

Bootstrapped and tested on x86_64-unknown-linux-gnu.

Any comments?

Thanks,
Richard.

2021-07-22  Richard Biener  <rguent...@suse.de>

        PR tree-optimization/101573
        * tree-ssa-uninit.c (warn_uninitialized_vars): Look at
        uninitialized PHI arg defs in some constrained cases.
        (execute_early_warn_uninitialized): Calculate dominators.

        * gcc.dg/uninit-pr101573.c: New testcase.
        * gcc.dg/uninit-15-O0.c: Adjust.
        * gcc.dg/uninit-15.c: Likewise.
        * gcc.dg/uninit-23.c: Likewise.
        * c-c++-common/uninit-17.c: Likewise.
OK.  Like Martin I think the new code in a function would be easier to read.  So if you could factor the bits into a new function it'd be appreciated.

I wouldn't be terribly surprised if we find additional fallout on other targets, but we can fault in those fixes.

Jeff


Reply via email to