On Thu, Jul 14, 2011 at 4:01 PM, Richard Trieu <[email protected]> wrote:
> On Thu, Jul 14, 2011 at 3:53 PM, Chandler Carruth <[email protected]>wrote: > >> On Thu, Jul 14, 2011 at 3:35 PM, Richard Trieu <[email protected]> wrote: >> >>> Currently, -Wsign-compare will warn if conditional operands differ in >>> signedness. This patch will move this warning to -Wmixed-sign-conditional >> >> >> Why not -Wsign-conversion ? Just wondering why we need a separate flag >> here. >> > -Wsign-conversion has a separate warning that will override this one. > Essentially, the conditional statement can have only have one type, so if > the operands are of different signs, one will be forced to convert, which > throws the warning. Here's an example: > > void f(unsigned int u, int i) { > (void) (true ? u : i); > } > > clang -Wsign-conversion > warning: operand of ? changes signedness: 'int' to 'unsigned int' > [-Wsign-conversion] > (void) (true ? u : i); > ~ ^ > Ah, cool > clang -Wmixed-sign-conditional > warning: operands of ? are integers of different signs: > 'unsigned int' and 'int' [-Wmixed-sign-conditional] > (void) (true ? u : i); > ^ ~ ~ > So what's the motivation for being able to get *just* these warnings out? The only bug I'm aware of was specific to -Wsign-compare warning on this construct in a compile that didn't use -Wsign-conversion, and so expected the code to compile without warnings. If -Wsign-conversion already catches this, it would seem to me that that's sufficient?
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
