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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |11.3
     Ever confirmed|0                           |1
            Summary|Incorrect debug info for    |[11/12 Regression]
                   |uint128 bit shift in gcc    |Incorrect debug info for
                   |11.2                        |uint128 bit shift in gcc
                   |                            |11.2
                 CC|                            |jakub at gcc dot gnu.org
   Last reconfirmed|                            |2021-11-02
             Status|UNCONFIRMED                 |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Started with my r11-7757-gfc9c4e5fc50c7fcbd27d6cb3dd372f7da8216954 aka PR99562
change.
Untested fix:
2021-11-02  Jakub Jelinek  <ja...@redhat.com>

        PR debug/103046
        * dwarf2out.c (add_const_value_attribute) <case CONST_WIDE_INT>: Round
        prec up to next HOST_BITS_PER_WIDE_INT multiple.

--- gcc/dwarf2out.c.jj  2021-10-08 10:52:47.086531820 +0200
+++ gcc/dwarf2out.c     2021-11-02 16:25:24.505504356 +0100
@@ -20102,6 +20102,7 @@ add_const_value_attribute (dw_die_ref di
        unsigned int prec = MIN (wi::min_precision (w1, UNSIGNED),
                                 (unsigned int) CONST_WIDE_INT_NUNITS (rtl)
                                 * HOST_BITS_PER_WIDE_INT);
+       prec = ROUND_UP (prec, HOST_BITS_PER_WIDE_INT);
        wide_int w = wide_int::from (w1, prec, UNSIGNED);
        add_AT_wide (die, DW_AT_const_value, w);
       }

Reply via email to