[llvm] r228205 - AsmParser: Simplify MDUnsignedField
Duncan P. N. Exon Smith
dexonsmith at apple.com
Wed Feb 4 13:57:53 PST 2015
Author: dexonsmith
Date: Wed Feb 4 15:57:52 2015
New Revision: 228205
URL: http://llvm.org/viewvc/llvm-project?rev=228205&view=rev
Log:
AsmParser: Simplify MDUnsignedField
We only need `uint64_t` for storage.
Modified:
llvm/trunk/lib/AsmParser/LLParser.cpp
llvm/trunk/lib/AsmParser/LLParser.h
Modified: llvm/trunk/lib/AsmParser/LLParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/LLParser.cpp?rev=228205&r1=228204&r2=228205&view=diff
==============================================================================
--- llvm/trunk/lib/AsmParser/LLParser.cpp (original)
+++ llvm/trunk/lib/AsmParser/LLParser.cpp Wed Feb 4 15:57:52 2015
@@ -2924,23 +2924,23 @@ bool LLParser::ParseMDNodeTail(MDNode *&
}
bool LLParser::ParseMDField(LocTy Loc, StringRef Name,
- MDUnsignedField<uint32_t> &Result) {
+ MDUnsignedField &Result) {
if (Lex.getKind() != lltok::APSInt || Lex.getAPSIntVal().isSigned())
return TokError("expected unsigned integer");
- uint64_t Val64 = Lex.getAPSIntVal().getLimitedValue(Result.Max + 1ull);
- if (Val64 > Result.Max)
+ auto &U = Lex.getAPSIntVal();
+ if (U.ugt(Result.Max))
return TokError("value for '" + Name + "' too large, limit is " +
Twine(Result.Max));
- Result.assign(Val64);
+ Result.assign(U.getZExtValue());
+ assert(Result.Val <= Result.Max && "Expected value in range");
Lex.Lex();
return false;
}
bool LLParser::ParseMDField(LocTy Loc, StringRef Name, DwarfTagField &Result) {
if (Lex.getKind() == lltok::APSInt)
- return ParseMDField(Loc, Name,
- static_cast<MDUnsignedField<uint32_t> &>(Result));
+ return ParseMDField(Loc, Name, static_cast<MDUnsignedField &>(Result));
if (Result.Seen)
return Error(Loc,
@@ -3063,8 +3063,8 @@ bool LLParser::ParseSpecializedMDNode(MD
/// ::= !MDLocation(line: 43, column: 8, scope: !5, inlinedAt: !6)
bool LLParser::ParseMDLocation(MDNode *&Result, bool IsDistinct) {
#define VISIT_MD_FIELDS(OPTIONAL, REQUIRED) \
- OPTIONAL(line, MDUnsignedField<uint32_t>, (0, ~0u >> 8)); \
- OPTIONAL(column, MDUnsignedField<uint32_t>, (0, ~0u >> 16)); \
+ OPTIONAL(line, MDUnsignedField, (0, ~0u >> 8)); \
+ OPTIONAL(column, MDUnsignedField, (0, ~0u >> 16)); \
REQUIRED(scope, MDField, ); \
OPTIONAL(inlinedAt, MDField, );
PARSE_MD_FIELDS();
Modified: llvm/trunk/lib/AsmParser/LLParser.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/LLParser.h?rev=228205&r1=228204&r2=228205&view=diff
==============================================================================
--- llvm/trunk/lib/AsmParser/LLParser.h (original)
+++ llvm/trunk/lib/AsmParser/LLParser.h Wed Feb 4 15:57:52 2015
@@ -94,16 +94,14 @@ namespace llvm {
explicit MDFieldImpl(FieldTy Default)
: Val(std::move(Default)), Seen(false) {}
};
- template <class NumTy> struct MDUnsignedField : public MDFieldImpl<NumTy> {
- typedef typename MDUnsignedField::ImplTy ImplTy;
- NumTy Max;
+ struct MDUnsignedField : public MDFieldImpl<uint64_t> {
+ uint64_t Max;
- MDUnsignedField(NumTy Default = 0,
- NumTy Max = std::numeric_limits<NumTy>::max())
+ MDUnsignedField(uint64_t Default = 0, uint64_t Max = UINT64_MAX)
: ImplTy(Default), Max(Max) {}
};
- struct DwarfTagField : public MDUnsignedField<uint32_t> {
- DwarfTagField() : MDUnsignedField<uint32_t>(0, ~0u >> 16) {}
+ struct DwarfTagField : public MDUnsignedField {
+ DwarfTagField() : MDUnsignedField(0, ~0u >> 16) {}
};
struct MDField : public MDFieldImpl<Metadata *> {
MDField() : ImplTy(nullptr) {}
@@ -428,8 +426,7 @@ namespace llvm {
bool ParseMDNodeVector(SmallVectorImpl<Metadata *> &MDs);
bool ParseInstructionMetadata(Instruction *Inst, PerFunctionState *PFS);
- bool ParseMDField(LocTy Loc, StringRef Name,
- MDUnsignedField<uint32_t> &Result);
+ bool ParseMDField(LocTy Loc, StringRef Name, MDUnsignedField &Result);
bool ParseMDField(LocTy Loc, StringRef Name, DwarfTagField &Result);
bool ParseMDField(LocTy Loc, StringRef Name, MDField &Result);
bool ParseMDField(LocTy Loc, StringRef Name, MDStringField &Result);
More information about the llvm-commits
mailing list