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

Martin Sebor <msebor at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2018-05-23
     Ever confirmed|0                           |1

--- Comment #2 from Martin Sebor <msebor at gcc dot gnu.org> ---
Confirmed with a powerpc64le-linux cross-compiler.  Recent test results
reported for no other targets doesn't show the failures.

With the powerpc64le-linux cross the warning is issued at a different stage of
expansion of the built-in than on other targets, and with the strncmp() bound
represented by a different tree node: during expand_call() vs.
expand_builtin_strncmp(), respectively, and  with MIN_EXPR (NOP_EXPR (sizetype,
SSA_NAME (n_6)), 3) and SSA_NAME, respectively.

The bound is passed to the get_size_range() function to try to determine its
range.  For SSA_NAME arguments the function uses get_range_info() to determine
the range, and for all others it simply uses the range of the type of the
expression.  So powerpc64le-linux ends up with the full range of the bound's
type (i.e., [0, SIZE_MAX]), while on other targets it extracts the range [0,
3].  The wider range is what triggers the warning (as expected).

Reply via email to