https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127162

--- Comment #4 from aldy at quesejoda dot com ---
On Wed, Sep 02, 2026 at 12:01:18PM +0000, jamborm at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127162
> 
> Martin Jambor <jamborm at gcc dot gnu.org> changed:
> 
>            What    |Removed                     |Added
> ----------------------------------------------------------------------------
>                  CC|                            |aldyh at gcc dot gnu.org
>             Summary|[15/16/17 Regression]       |[15/16/17 Regression]
>                    |internal compiler error: in |internal compiler error: in
>                    |verify_mask, at             |verify_mask, at
>                    |value-range.cc:3125 with    |value-range.cc:3125 with
>                    |-O2                         |-O2 since
>                    |                            |r15-41-gd71308d5a681de
> 
> --- Comment #3 from Martin Jambor <jamborm at gcc dot gnu.org> ---
> Started with r15-41-gd71308d5a681de (Aldy Hernandez: Callers of irange_bitmask
> must normalize value/mask pairs.)

I haven't looked deeply, but get_pointer_alignment_1 in builtins.cc
seems to have a path where it doesn't update bitposp:

else if (TREE_CODE (exp) == SSA_NAME
           && POINTER_TYPE_P (TREE_TYPE (exp)))
    {
      unsigned int ptr_align, ptr_misalign;
      struct ptr_info_def *pi = SSA_NAME_PTR_INFO (exp);

      if (pi && get_ptr_info_alignment (pi, &ptr_align, &ptr_misalign))
        {
          *bitposp = ptr_misalign * BITS_PER_UNIT;
          *alignp = ptr_align * BITS_PER_UNIT;
          /* Make sure to return a sensible alignment when the multiplication   
             by BITS_PER_UNIT overflowed.  */
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
          if (*alignp == 0)
            *alignp = 1u << (HOST_BITS_PER_INT - 1);
          /* We cannot really tell whether this result is an approximation.  */
          return false;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        }

Reply via email to