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 "

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

Reply via email to