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).