diff options
author | Richard Trieu <rtrieu@google.com> | 2019-10-19 01:47:49 +0000 |
---|---|---|
committer | Richard Trieu <rtrieu@google.com> | 2019-10-19 01:47:49 +0000 |
commit | 637af4cc37802a25564aa96c4d4eb3facbcff9b8 (patch) | |
tree | ceba66728354439c370223cb832b21ab537cfbc7 /clang/docs/ReleaseNotes.rst | |
parent | 7bbe711fb1b9057e48dec3c15b084eee7f8ff5fb (diff) | |
download | bcm5719-llvm-637af4cc37802a25564aa96c4d4eb3facbcff9b8.tar.gz bcm5719-llvm-637af4cc37802a25564aa96c4d4eb3facbcff9b8.zip |
Add -Wbitwise-conditional-parentheses to warn on mixing '|' and '&' with "?:"
Extend -Wparentheses to cover mixing bitwise-and and bitwise-or with the
conditional operator. There's two main cases seen with this:
unsigned bits1 = 0xf0 | cond ? 0x4 : 0x1;
unsigned bits2 = cond1 ? 0xf0 : 0x10 | cond2 ? 0x5 : 0x2;
// Intended order of evaluation:
unsigned bits1 = 0xf0 | (cond ? 0x4 : 0x1);
unsigned bits2 = (cond1 ? 0xf0 : 0x10) | (cond2 ? 0x5 : 0x2);
// Actual order of evaluation:
unsigned bits1 = (0xf0 | cond) ? 0x4 : 0x1;
unsigned bits2 = cond1 ? 0xf0 : ((0x10 | cond2) ? 0x5 : 0x2);
Differential Revision: https://reviews.llvm.org/D66043
llvm-svn: 375326
Diffstat (limited to 'clang/docs/ReleaseNotes.rst')
-rw-r--r-- | clang/docs/ReleaseNotes.rst | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 41dea299e6b..298d793a0de 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -61,6 +61,9 @@ Improvements to Clang's diagnostics operation and a constant. The group also has the new warning which diagnoses when a bitwise-or with a non-negative value is converted to a bool, since that bool will always be true. +- -Wbitwise-conditional-parentheses will warn on operator precedence issues + when mixing bitwise-and (&) and bitwise-or (|) operator with the + conditional operator (?:). Non-comprehensive list of changes in this release ------------------------------------------------- |