[Bug ipa/103818] [12 Regression] ICE: in insert, at ipa-modref-tree.c:591 since r12-3202-gf5ff3a8ed4ca9173

hubicka at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sat Apr 9 20:25:31 GMT 2022


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

--- Comment #4 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
We have access list:

      Base 0: alias set 2
        Ref 0: alias set 1
          access: Parm 0 param offset:0 offset:-4611686018427387936 size:32
max_size:32
          access: Parm 0 param offset:0 offset:352 size:32 max_size:32
          access: Parm 0 param offset:0 offset:64 size:32 max_size:32
          access: Parm 0 param offset:0 offset:0 size:32 max_size:32
          access: Parm 0 param offset:0 offset:32800 size:32 max_size:32
          access: Parm 0 param offset:0 offset:160 size:32 max_size:32
          access: Parm 0 param offset:0 offset:4629700416936869888 size:32
max_size:32
          access: Parm 0 param offset:0 offset:-96 size:32 max_size:32
          access: Parm 0 param offset:0 offset:1376 size:32 max_size:32
          access: Parm 0 param offset:0 offset:224 size:32 max_size:32
          access: Parm 0 param offset:0 offset:-288 size:32 max_size:32
          access: Parm 0 param offset:0 offset:448 size:32 max_size:32
          access: Parm 0 param offset:0 offset:288 size:32 max_size:32
          access: Parm 0 param offset:0 offset:1568 size:32 max_size:32
          access: Parm 0 param offset:0 offset:640 size:32 max_size:32
          access: Parm 0 param offset:0 offset:2624 size:32 max_size:32

and we want to merge
         Parm 0 param offset:0 offset:-4611686018427387936 size:32 max_size:32
and
         Parm 0 param offset:0 offset:4629700416936869888 size:32 max_size:32
into one entry since we think they have small difference.  

So an overflow issue:
      new_max_size = max_size2 + offset2 - offset1;                             
      if (known_le (new_max_size, max_size1))                                   
        new_max_size = max_size1;                                               
So we need 128bit math here.
I need to look into proper way to get this right (and corresponding overflow
that makes the lgoic to choose these two entries as closest to each other.


More information about the Gcc-bugs mailing list