[cfe-commits] [patch] Don't report signness compare when it can't be reached

Eitan Adler lists at eitanadler.com
Sat Mar 10 21:01:32 PST 2012


ping

On Mon, Jan 16, 2012 at 1:23 AM, Eitan Adler <lists at eitanadler.com> wrote:
> This patch fixes a false positive of -Wsign-compare when you have code
> that evaluates to
>
> unsigned int a;
> if (0 && -1 > a)
>
> This was found in real life code in a check that looks like
> if ((sizeof(off_t) > sizeof(size_t)) && sb.st_size > SIZE_MAX)
>
> On an amd64 system the latter is always false (and generates the
> warning) but on an i386 system it is possible to hit the code.
>
> Thank you to chandlerc for encouraging me to try fixing this one myself.
>
> Index: SemaChecking.cpp
> ===================================================================
> --- SemaChecking.cpp    (revision 148228)
> +++ SemaChecking.cpp    (working copy)
> @@ -3567,9 +3567,9 @@
>       return;
>   }
>
> -  S.Diag(E->getOperatorLoc(), diag::warn_mixed_sign_comparison)
> +  S.DiagRuntimeBehavior(E->getOperatorLoc(), E,
> S.PDiag(diag::warn_mixed_sign_comparison)
>     << LHS->getType() << RHS->getType()
> -    << LHS->getSourceRange() << RHS->getSourceRange();
> +    << LHS->getSourceRange() << RHS->getSourceRange());
>  }
>
>  /// Analyzes an attempt to assign the given value to a bitfield.
>
>
> --
> Eitan Adler



-- 
Eitan Adler




More information about the cfe-commits mailing list