[PATCH] D32212: Create some helpers for generating bit masks
Zachary Turner via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 19 09:43:15 PDT 2017
We can just use a static_cast to get rid of the warning. MathExtras.h
already has such a thing to silence this exact warning:
// Replace "-Value" by "1+~Value" in the following commented code to avoid
// MSVC warning C4146
// return (A | B) & -(A | B);
return (A | B) & (1 + ~(A | B));
On Wed, Apr 19, 2017 at 9:26 AM Adrian McCarthy via Phabricator <
reviews at reviews.llvm.org> wrote:
> amccarth added inline comments.
>
>
> ================
> Comment at: llvm/trunk/include/llvm/Support/MathExtras.h:207
> + assert(N <= Bits && "Invalid bit index");
> + return -T(N != 0) & (T(-1) >> (Bits - N));
> +}
> ----------------
> Be aware that this can lead to compiler warnings, at least in MSVC, if T
> is an unsigned type:
>
> [[ https://msdn.microsoft.com/en-us/library/4kh09110.aspx | C4146:
> unary minus operator applied to unsigned type, result still unsigned ]]
>
> Depending on the specific details, this can be a level 2 or level 3
> warning. I'm surprised the tests aren't triggering it. We must disable
> this warning somewhere.
>
>
>
>
> Repository:
> rL LLVM
>
> https://reviews.llvm.org/D32212
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170419/4b1abbc8/attachment.html>
More information about the llvm-commits
mailing list