diff options
| author | Peter Szecsi <szepet95@gmail.com> | 2017-09-12 09:40:13 +0000 |
|---|---|---|
| committer | Peter Szecsi <szepet95@gmail.com> | 2017-09-12 09:40:13 +0000 |
| commit | 2087113f6c844c9a7101eff08091225be6532908 (patch) | |
| tree | 20c114297f166618b47779c66df8927890e12a97 /clang-tools-extra/clang-tidy/misc | |
| parent | 38029d3c890747b019594eb4c43b4fb739bdc93e (diff) | |
| download | bcm5719-llvm-2087113f6c844c9a7101eff08091225be6532908.tar.gz bcm5719-llvm-2087113f6c844c9a7101eff08091225be6532908.zip | |
[clang-tidy] SuspiciousEnumUsageCheck bugfix
iThere is a reported bug on the checker not handling the some APSInt values
correctly: https://bugs.llvm.org/show_bug.cgi?id=34400
This patch aims to fix it.
Differential Revision: https://reviews.llvm.org/D37572
llvm-svn: 313016
Diffstat (limited to 'clang-tools-extra/clang-tidy/misc')
| -rw-r--r-- | clang-tools-extra/clang-tidy/misc/SuspiciousEnumUsageCheck.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/clang-tools-extra/clang-tidy/misc/SuspiciousEnumUsageCheck.cpp b/clang-tools-extra/clang-tidy/misc/SuspiciousEnumUsageCheck.cpp index 501e2b24ea1..416a418a44f 100644 --- a/clang-tools-extra/clang-tidy/misc/SuspiciousEnumUsageCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/SuspiciousEnumUsageCheck.cpp @@ -42,7 +42,8 @@ struct ValueRange { const auto MinMaxVal = std::minmax_element( EnumDec->enumerator_begin(), EnumDec->enumerator_end(), [](const EnumConstantDecl *E1, const EnumConstantDecl *E2) { - return E1->getInitVal() < E2->getInitVal(); + return llvm::APSInt::compareValues(E1->getInitVal(), + E2->getInitVal()) < 0; }); MinVal = MinMaxVal.first->getInitVal(); MaxVal = MinMaxVal.second->getInitVal(); @@ -57,7 +58,8 @@ static int enumLength(const EnumDecl *EnumDec) { static bool hasDisjointValueRange(const EnumDecl *Enum1, const EnumDecl *Enum2) { ValueRange Range1(Enum1), Range2(Enum2); - return (Range1.MaxVal < Range2.MinVal) || (Range2.MaxVal < Range1.MinVal); + return llvm::APSInt::compareValues(Range1.MaxVal, Range2.MinVal) < 0 || + llvm::APSInt::compareValues(Range2.MaxVal, Range1.MinVal) < 0; } static bool isNonPowerOf2NorNullLiteral(const EnumConstantDecl *EnumConst) { |

