X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FAsmParser%2FParserInternals.h;h=76052fa5410199a19b451efe2471a56cffe11646;hb=7061dc50b2513731d7b346ab16183cda4a44619f;hp=b00a35281fbf02bf95210d90fd949e6f53d0adda;hpb=ef9c23f2812322ae5c5f3140bfbcf92629d7ff47;p=oota-llvm.git diff --git a/lib/AsmParser/ParserInternals.h b/lib/AsmParser/ParserInternals.h index b00a35281fb..76052fa5410 100644 --- a/lib/AsmParser/ParserInternals.h +++ b/lib/AsmParser/ParserInternals.h @@ -18,7 +18,7 @@ #include "llvm/Method.h" #include "llvm/DerivedTypes.h" #include "llvm/Assembly/Parser.h" -#include "llvm/Support/StringExtras.h" +#include "Support/StringExtras.h" class Module; @@ -130,6 +130,20 @@ struct ValID { abort(); } } + + bool operator<(const ValID &V) const { + if (Type != V.Type) return Type < V.Type; + switch (Type) { + case NumberVal: return Num < V.Num; + case ConstStringVal: + case NameVal: return strcmp(Name, V.Name) < 0; + case ConstSIntVal: return ConstPool64 < V.ConstPool64; + case ConstUIntVal: return UConstPool64 < V.UConstPool64; + case ConstFPVal: return ConstPoolFP < V.ConstPoolFP; + case ConstNullVal: return false; + default: assert(0 && "Unknown value type!"); return false; + } + } }; @@ -146,13 +160,6 @@ public: int getLineNum() const { return LineNum; } }; -struct TypePlaceHolderHelper : public OpaqueType { - TypePlaceHolderHelper(const Type *Ty) : OpaqueType() { - assert(Ty == Type::TypeTy); - } -}; - - struct InstPlaceHolderHelper : public Instruction { InstPlaceHolderHelper(const Type *Ty) : Instruction(Ty, UserOp1, "") {} @@ -167,13 +174,12 @@ struct BBPlaceHolderHelper : public BasicBlock { }; struct MethPlaceHolderHelper : public Method { - MethPlaceHolderHelper(const Type *Ty) : Method(cast(Ty)) {} + MethPlaceHolderHelper(const Type *Ty) : Method(cast(Ty), + true) {} }; -typedef PlaceholderValue TypePlaceHolder; typedef PlaceholderValue ValuePlaceHolder; typedef PlaceholderValue BBPlaceHolder; -typedef PlaceholderValue MethPlaceHolder; static inline ValID &getValIDFromPlaceHolder(const Value *Val) { const Type *Ty = Val->getType(); @@ -182,9 +188,7 @@ static inline ValID &getValIDFromPlaceHolder(const Value *Val) { Ty = cast(Ty)->getValueType(); switch (Ty->getPrimitiveID()) { - case Type::TypeTyID: return ((TypePlaceHolder*)Val)->getDef(); case Type::LabelTyID: return ((BBPlaceHolder*)Val)->getDef(); - case Type::MethodTyID: return ((MethPlaceHolder*)Val)->getDef(); default: return ((ValuePlaceHolder*)Val)->getDef(); } } @@ -196,9 +200,7 @@ static inline int getLineNumFromPlaceHolder(const Value *Val) { Ty = cast(Ty)->getValueType(); switch (Ty->getPrimitiveID()) { - case Type::TypeTyID: return ((TypePlaceHolder*)Val)->getLineNum(); case Type::LabelTyID: return ((BBPlaceHolder*)Val)->getLineNum(); - case Type::MethodTyID: return ((MethPlaceHolder*)Val)->getLineNum(); default: return ((ValuePlaceHolder*)Val)->getLineNum(); } }