[PATCH] D66397: [Diagnostics] Improve -Wxor-used-as-pow
Dávid Bolvanský via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Sep 4 14:30:42 PDT 2019
xbolva00 marked an inline comment as done.
xbolva00 added inline comments.
================
Comment at: lib/Sema/SemaExpr.cpp:11067
+
+ // Do not diagnose 2 ^ 64, but allow special case (2 ^ 64) - 1.
+ if (SubLHS && SubRHS && (LeftSideValue != 2 || RightSideValue != 64))
----------------
xbolva00 wrote:
> aaron.ballman wrote:
> > aaron.ballman wrote:
> > > This comment explains what the code does, but not why it does it. Given that we're adding special cases, I think more comments here explaining why this is valuable would be appreciated.
> > Thank you, the comments helped! But they also raised another question for me. What's special about 2^64? Why not (2^16) - 1 or other common power-of-two values? I would have expected 8, 16, 32, and 64 to be handled similarly.
> We generally suggest 1LL << C. But here we cant say 1LL << 64.
>
> (2^16)-1 is diagnosed normally since we go here from “visit xor” code.
> ^^^^
>
> This (2^64)-1 handling was suggested by jfb.
>
> I see no motivation cases to diagnose 2^65, 2^100, ...
>
>
>
>
I think the suggestion for (2^32)-1:
(1LL<32)-1 is good, or should we make things more complicated and suggest Int max macro?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D66397/new/
https://reviews.llvm.org/D66397
More information about the cfe-commits
mailing list