But why in previous gcc versions the warning didn't appears. And strspn() is a common function in string.h. I don't understand why the call to strspn() with correct arguments emits a warning.
Because it's most certainly a bug. #include <string.h> #include <stdio.h> #include <stdlib.h> int main() { size_t x; x = strspn("hello","h"); printf("%zd\n", x); return 0; } warns too at -O, -O1, -O2, -O3 with -Wconversion. And the value is correctly used and so on.