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.

Reply via email to