On Fri, May 15, 2026 at 3:42 PM Marek Polacek <[email protected]> wrote:
>
> On Thu, May 14, 2026 at 01:15:21AM -0700, Andrew Pinski wrote:
> > This reverts the group_case_labels_stmt part of r8-546-gca4d2851687875.
> > This is placed in the wrong location to remove the case statements that go
> > directly to __builtin_unreachable. In fact the removal of the case
> > statements
> > make us lose optimizations in some cases (Wuninitialized-pr107919-1.C for
> > one).
> >
> > Also this fixes PR 125290 by no longer leaving around a switch which just
> > has a default case.
> >
> > Bootstrapped and tested on x86_64-linux-gnu.
> >
> > PR tree-optimization/125290
> >
> > gcc/ChangeLog:
> >
> > * tree-cfg.cc (group_case_labels_stmt): Remove code that was
> > added to remove `cases` that goto blocks of unreachable.
> > * tree-ssa-forwprop.cc (optimize_unreachable): Remove the
> > comment about switch cases being handled.
> >
> > gcc/testsuite/ChangeLog:
> >
> > * g++.dg/warn/Wuninitialized-pr107919-1.C: Remove xfail.
> > * gcc.dg/analyzer/taint-assert.c: Update for the non-removal
> > of block containing unreachable.
> > * gcc.dg/torture/pr125290-1.c: New test.
> >
> > Signed-off-by: Andrew Pinski <[email protected]>
> > ---
> > .../g++.dg/warn/Wuninitialized-pr107919-1.C | 2 +-
> > gcc/testsuite/gcc.dg/analyzer/taint-assert.c | 4 +-
> > gcc/testsuite/gcc.dg/torture/pr125290-1.c | 40 +++++++++++++++
> > gcc/tree-cfg.cc | 51 +------------------
> > gcc/tree-ssa-forwprop.cc | 3 +-
> > 5 files changed, 46 insertions(+), 54 deletions(-)
> > create mode 100644 gcc/testsuite/gcc.dg/torture/pr125290-1.c
> >
> > diff --git a/gcc/testsuite/g++.dg/warn/Wuninitialized-pr107919-1.C
> > b/gcc/testsuite/g++.dg/warn/Wuninitialized-pr107919-1.C
> > index 049fa4d307a..b3ed4628bdd 100644
> > --- a/gcc/testsuite/g++.dg/warn/Wuninitialized-pr107919-1.C
> > +++ b/gcc/testsuite/g++.dg/warn/Wuninitialized-pr107919-1.C
> > @@ -14,4 +14,4 @@ void do_something(void* storage)
> > std::swap(event, swappedValue);
> > }
> >
> > -// { dg-bogus "may be used uninitialized" "" { xfail *-*-* } 0 }
> > +// { dg-bogus "may be used uninitialized" "" 0 }
>
> This is wrong:
> ERROR: g++.dg/warn/Wuninitialized-pr107919-1.C -std=gnu++98: syntax error in
> target selector "0" for " dg-bogus 17 "may be used uninitialized" "" 0 "
Whoops, I was trying to figure out how this slipped through. I updated
the testcase without retesting the testcase. And I forgot that for the
line number you still needed the target stance.
Thanks for updating the testcase to be correct.
Thanks,
Drea
>
> Fixed by:
>
> gcc/testsuite/ChangeLog:
>
> * g++.dg/warn/Wuninitialized-pr107919-1.C: Fix a dg-bogus.
> ---
> gcc/testsuite/g++.dg/warn/Wuninitialized-pr107919-1.C | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gcc/testsuite/g++.dg/warn/Wuninitialized-pr107919-1.C
> b/gcc/testsuite/g++.dg/warn/Wuninitialized-pr107919-1.C
> index b3ed4628bdd..931b4648e00 100644
> --- a/gcc/testsuite/g++.dg/warn/Wuninitialized-pr107919-1.C
> +++ b/gcc/testsuite/g++.dg/warn/Wuninitialized-pr107919-1.C
> @@ -14,4 +14,4 @@ void do_something(void* storage)
> std::swap(event, swappedValue);
> }
>
> -// { dg-bogus "may be used uninitialized" "" 0 }
> +// { dg-bogus "may be used uninitialized" "" { target *-*-* } 0 }
>
> base-commit: f108e23d2bff50d0ee8cf0d25a08be5432b702b6
> --
> 2.54.0
>