https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122426
Bug ID: 122426
Summary: [16 Regression] Recent change in ranger causing
multiple target to regress pr111003.c test
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: law at gcc dot gnu.org
Target Milestone: ---
This change:
commit 3d102b7a40bd179c93eccc31b74f95c69f81f45e
Author: Andrew MacLeod <[email protected]>
Date: Tue Oct 21 16:05:22 2025 -0400
Create and apply bitmasks for truncating casts.
When folding a cast, we were not applying the bitmask if we reached
a VARYING result.
We were also not creating a bitmask to represent the lower bits of a
truncating cast in op1_range. So GORI was losing bits.
PR tree-optimization/118254
PR tree-optimization/114331
gcc/
* range-op.cc (operator_cast::fold_range): When VARYING is
reached, update the bitmask if we reach VARYING.
(operator_cast::op1_range): For truncating casts, create a
bitmask bit in LHS.
gcc/testsuite/
* gcc.dg/pr114331.c: New.
* gcc.dg/pr118254.c: New.
Is causing multiple targets to regress tree-ssa/pr111003.c.
It looks like we're not realizing the call to "foo" can't actually be reached.
I haven't looked into any details why.
So far seen on ft32-elf, msp430-elf, fr30-elf, and m32r-elf. There's probably
more showing this behavior, results of the latest tester run are still in
flight.