From a22fcf205ad22a13c646649f2701afe6feafc523 Mon Sep 17 00:00:00 2001 From: Oliver Stannard Date: Tue, 3 Oct 2017 12:45:18 +0000 Subject: [PATCH] [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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314793 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/AsmParser/ARMAsmParser.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/lib/Target/ARM/AsmParser/ARMAsmParser.cpp index c949d8954d5..2ea3096b271 100644 --- a/lib/Target/ARM/AsmParser/ARMAsmParser.cpp +++ b/lib/Target/ARM/AsmParser/ARMAsmParser.cpp @@ -10211,8 +10211,8 @@ ARMAsmParser::FilterNearMisses(SmallVectorImpl &NearMissesIn, if (std::any_of(PrevReports.first, PrevReports.second, [DupCheckMatchClass]( const std::pair 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); -- 2.50.1