On Oct 15, 2012, at 12:44 PM, Jordan Rose <[email protected]> wrote:
> On Oct 14, 2012, at 8:19 , Stephen Canon <[email protected]> wrote: > >> On Oct 12, 2012, at 12:38 PM, Richard Trieu <[email protected]> wrote: >> >>> This patch is for a new warning to Clang, called -Wlogical-not-compare. It >>> is designed to catch the case where the user is attempting to negate a >>> comparison, but only manages to negate the LHS because of missing parens. >>> For instance, warn here: >>> >>> if (!x < 5) >>> >>> The user probably meant: >>> >>> if (!(x < 5)) >>> >>> or >>> >>> if (x >= 5) >>> >>> When emitted, the warning will have a note suggesting this as a fix-it >>> (drop the not and inverting the comparison operator). >> >> If x has FP type, then !(x < 5) is not equivalent to (x >= 5); if x is NaN, >> the first is true, but the second is false. > > The fixit is on a note, so I personally think it's okay that it doesn't > perfectly match the semantics of the existing expression. I think most people > ignore NaNs when writing casual floating-point code. The compiler shouldn't be in the business of suggesting semantically incorrect transformations to the user, especially when there's a perfectly good alternative available. We don't want to find bugs in users' code only to replace them with even more subtle bugs. - Steve _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
