We see more and more code like this, in this case e2fsprogs blkid: char c; c=getopt(...) getopt returns an int, and so does getc. But gcc stores the thing in something that cant hold the return type. It should warn with an obvious message, or even error out.
just checked, gcc4 accepts it (blkid.c) as well.
What you want is a better -Wconversion, "warn for any implicit conversion that may change a value"; see bug 9072 (and also bug 6614). Bug 9072 effectively tracks the need for a better -Wconversion while bug 6614 deals with the particularly unintuitive parts of the present -Wconversion. Such warnings would not however be appropriate to be on by default or to be included in -Wall or -Wextra; they'd remain a separate -Wconversion flag. *** This bug has been marked as a duplicate of 9072 ***