summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorOliver Stannard <oliver.stannard@arm.com>2017-10-03 12:45:18 +0000
committerOliver Stannard <oliver.stannard@arm.com>2017-10-03 12:45:18 +0000
commit68aa7de5172002935b14549aedeb7310b0b715e5 (patch)
tree28656d36662d5e8b977fccbca046ef024d5c67f3 /llvm/lib
parentcf99d069c34beb3343747cdbd6dd82a244ddd2e0 (diff)
downloadbcm5719-llvm-68aa7de5172002935b14549aedeb7310b0b715e5.tar.gz
bcm5719-llvm-68aa7de5172002935b14549aedeb7310b0b715e5.zip
[ARM, Asm] Fix ubsan failure caused by out-of-range enum value
In this code, we use ~0U as a sentinel value for any operand class that doesn't have a user-friendly error message, but this value isn't in range of the MatchClassKind enum, so we need to ensure it does not get passed to isSubclass. llvm-svn: 314793
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
index c949d8954d5..2ea3096b271 100644
--- a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
+++ b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
@@ -10211,8 +10211,8 @@ ARMAsmParser::FilterNearMisses(SmallVectorImpl<NearMissInfo> &NearMissesIn,
if (std::any_of(PrevReports.first, PrevReports.second,
[DupCheckMatchClass](
const std::pair<unsigned, unsigned> Pair) {
- if (DupCheckMatchClass == ~0U)
- return Pair.second == ~0U;
+ if (DupCheckMatchClass == ~0U || Pair.second == ~0U)
+ return Pair.second == DupCheckMatchClass;
else
return isSubclass((MatchClassKind)DupCheckMatchClass,
(MatchClassKind)Pair.second);
OpenPOWER on IntegriCloud