diff options
author | Oliver Stannard <oliver.stannard@arm.com> | 2017-10-03 12:45:18 +0000 |
---|---|---|
committer | Oliver Stannard <oliver.stannard@arm.com> | 2017-10-03 12:45:18 +0000 |
commit | 68aa7de5172002935b14549aedeb7310b0b715e5 (patch) | |
tree | 28656d36662d5e8b977fccbca046ef024d5c67f3 /llvm/lib | |
parent | cf99d069c34beb3343747cdbd6dd82a244ddd2e0 (diff) | |
download | bcm5719-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.cpp | 4 |
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); |