Make isValidMCLOHType take unsigned instead of enum to avoid loading invalid enum values

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216797 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Alexey Samsonov 2014-08-29 22:34:28 +00:00
parent e306159429
commit c5198dc17a
2 changed files with 3 additions and 4 deletions

View File

@ -45,7 +45,7 @@ static inline StringRef MCLOHDirectiveName() {
return StringRef(".loh");
}
static inline bool isValidMCLOHType(MCLOHType Kind) {
static inline bool isValidMCLOHType(unsigned Kind) {
return Kind >= MCLOH_AdrpAdrp && Kind <= MCLOH_AdrpLdrGot;
}

View File

@ -3985,10 +3985,9 @@ bool AArch64AsmParser::parseDirectiveLOH(StringRef IDVal, SMLoc Loc) {
// We successfully get a numeric value for the identifier.
// Check if it is valid.
int64_t Id = getParser().getTok().getIntVal();
Kind = (MCLOHType)Id;
// Check that Id does not overflow MCLOHType.
if (!isValidMCLOHType(Kind) || Id != Kind)
if (Id <= -1U && !isValidMCLOHType(Id))
return TokError("invalid numeric identifier in directive");
Kind = (MCLOHType)Id;
} else {
StringRef Name = getTok().getIdentifier();
// We successfully parse an identifier.