[Bug tree-optimization/107038] [13 Regression] Bogus -Wstringop-overflow= since r13-2789-gb40b3035879cf695
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Sep 26 16:16:37 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107038
--- Comment #3 from Martin Sebor <msebor at gcc dot gnu.org> ---
Just a quick note from what I see in GDB. The warning is issued by the 2nd run
of the waccess pass (-fdump-tree-waccess2) for the following statement in bb 22
in pread():
iftmp.21_88 = __pread_alias (_50, _82, _81, _79);
_81's range reported by range_query::range_of_expr (vr, exp, stmt) is [58,
ULONG_MAX], matching the range in the warning.
A partial output of debug_ranger() for the function is below. I must be
reading it wrong because I don't see what the range above is derived from.
=========== BB 19 ============
Imports: recvd_78 _83
Exports: _51 recvd_78 recvd.17_80 _83 _94 _116 _125
_83 [irange] UNDEFINED
<bb 19> [local count: 169058114]:
if (_83 == 18446744073709551615)
goto <bb 22>; [34.00%]
else
goto <bb 20>; [66.00%]
19->22 (T) _83 : [irange] UNDEFINED
19->20 (F) _83 : [irange] UNDEFINED
=========== BB 20 ============
Imports: _81 _83
Exports: _81 _83 _85 _86 _87
_85 : _81(I) _83(I)
_86 : _81(I) _83(I) _85
_87 : _81(I) _83(I) _85 _86
_81 [irange] long unsigned int VARYING
_83 [irange] long unsigned int VARYING
<bb 20> [local count: 280636469]:
_85 = _81 <= _83;
_86 = (int) _85;
_87 = __builtin_constant_p (_86);
if (_87 != 0)
goto <bb 21>; [50.00%]
else
goto <bb 24>; [50.00%]
_86 : [irange] int [0, 1] NONZERO 0x1
_87 : [irange] int [0, 0] NONZERO 0x0
20->21 (T) _81 : [irange] UNDEFINED
20->21 (T) _83 : [irange] UNDEFINED
20->21 (T) _85 : [irange] UNDEFINED
20->21 (T) _86 : [irange] UNDEFINED
20->21 (T) _87 : [irange] UNDEFINED
20->24 (F) _86 : [irange] int [0, 1] NONZERO 0x1
20->24 (F) _87 : [irange] int [0, 0] NONZERO 0x0
=========== BB 21 ============
Imports: recvd_78 _81 _83
Exports: _51 recvd_78 recvd.17_80 _81 _83 _94 _116 _125
_81 [irange] UNDEFINED
_83 [irange] UNDEFINED
<bb 21> [local count: 140318235]:
if (_81 <= _83)
goto <bb 22>; [50.00%]
else
goto <bb 23>; [50.00%]
21->22 (T) _81 : [irange] UNDEFINED
21->22 (T) _83 : [irange] UNDEFINED
21->23 (F) _81 : [irange] UNDEFINED
21->23 (F) _83 : [irange] UNDEFINED
=========== BB 22 ============
<bb 22> [local count: 127638877]:
iftmp.21_88 = __pread_alias (_50, _82, _81, _79);
goto <bb 25>; [100.00%]
More information about the Gcc-bugs
mailing list