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

Aldy Hernandez <aldyh at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |aldyh at gcc dot gnu.org

--- Comment #4 from Aldy Hernandez <aldyh at gcc dot gnu.org> ---
(In reply to Andrew Macleod from comment #3)

> p vr.dump(stderr)
> const size_type [1, 9223372036854775807]
> 
> I also have a breakpoint in set_range_info for this name which hasn't been
> triggered.   So either the set routine have been bypassed or perhaps
> inlining is setting this global value?
> 
> Im still trying to figure out who and where has decided that __nleft_49 is
> [2, 0x7FFFFFFFFFFFFFFF] instead of [2, 0xFFFFFFFFFFFFFFFFFFFF]

Global ranges can also be set via duplicate_ssa_name_range_info, which is used
by the inliner.

It looks like [1, 9223372036854775807] was originally calculated in evrp for
__nleft_64:

=========== BB 45 ============
Imports: _27  __s_53(D)  
Exports: _27  _34  __s_53(D)  __nleft_64  
         _34 : _27(I)  __s_53(D)(I)  
         __nleft_64 : _27(I)  _34  __s_53(D)(I)  
_27     char * [1B, -2B]
__s_53(D)       const char * [0B, -3B]
Relational : (__s_53(D) < _26)
Relational : (_27 > __s_53(D))
    <bb 45> :
    _34 = _27 - __s_53(D);
    __nleft_64 = (const size_type) _34;
    if (_34 == 1)
      goto <bb 46>; [34.00%]
    else
      goto <bb 47>; [66.00%]

_34 : long int [1, +INF]
__nleft_64 : long unsigned int [1, 9223372036854775807]
45->46  (T) _27 :       char * [1B, -2B]
45->46  (T) _34 :       long int [1, 1]
45->46  (T) __s_53(D) :         const char * [0B, -3B]
45->46  (T) __nleft_64 :        long unsigned int [1, 9223372036854775807]
45->47  (F) _27 :       char * [1B, -2B]
45->47  (F) _34 :       long int [2, +INF]
45->47  (F) __s_53(D) :         const char * [0B, -3B]
45->47  (F) __nleft_64 :        long unsigned int [1, 9223372036854775807]

This was later renamed to __nleft_40, and then copied by the IPA inliner to
__nleft_47 and ultimately to __nleft_49.

Reply via email to