https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117609
David Malcolm <dmalcolm at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|[14/15/16 Regression] ICE: |[14/15 Regression] ICE:
|SIGSEGV in |SIGSEGV in
|fold_convert_const |fold_convert_const
|(fold-const.cc:2486) with |(fold-const.cc:2486) with
|-fanalyzer -frounding-math |-fanalyzer -frounding-math
|and __builtin_memmove() |and __builtin_memmove()
Last reconfirmed| |2026-02-09
Status|UNCONFIRMED |NEW
Ever confirmed|0 |1
--- Comment #4 from David Malcolm <dmalcolm at gcc dot gnu.org> ---
Happens on strip_types on this svalue:
(gdb) call next_byte->dump()
(36): unaryop_svalue(nop_expr)
╰─ (16): ‘long unsigned int’: unaryop_svalue(fix_trunc_expr)
╰─ (12): ‘_Decimal64’: unaryop_svalue(float_expr)
╰─ (11): ‘long int’: constant_svalue (‘37459296484904192’)
Looks like I fixed this on trunk with:
* region-model-manager.cc
(region_model_manager::maybe_fold_unaryop):
Only fold constants if we have a type.
as part of r16-6063-g0b786d961d4426 (big supergraph rewrite). The pertinent
change looks like it might be backportable.