From 7596fd077491e4c3f558798ee5f0f1fcd35fb14b Mon Sep 17 00:00:00 2001 From: Reid Spencer Date: Wed, 3 Jan 2007 23:45:17 +0000 Subject: [PATCH] Implement many new type features including upreferences, proper retention of structure contents, counts of packed and array types, etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32847 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/llvm-upgrade/ParserInternals.h | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/tools/llvm-upgrade/ParserInternals.h b/tools/llvm-upgrade/ParserInternals.h index 9de3588f8c8..4add8fb4479 100644 --- a/tools/llvm-upgrade/ParserInternals.h +++ b/tools/llvm-upgrade/ParserInternals.h @@ -50,7 +50,7 @@ int yyerror(const char *ErrorMsg) ; enum Types { BoolTy, SByteTy, UByteTy, ShortTy, UShortTy, IntTy, UIntTy, LongTy, ULongTy, FloatTy, DoubleTy, PointerTy, PackedTy, ArrayTy, StructTy, PackedStructTy, - OpaqueTy, VoidTy, LabelTy, FunctionTy, UnresolvedTy, NumericTy + OpaqueTy, VoidTy, LabelTy, FunctionTy, UnresolvedTy, UpRefTy }; /// This type is used to keep track of the signedness of values. Instead @@ -152,7 +152,7 @@ struct TypeInfo { } bool isUnresolved() const { return oldTy == UnresolvedTy; } - bool isNumeric() const { return oldTy == NumericTy; } + bool isUpReference() const { return oldTy == UpRefTy; } bool isVoid() const { return oldTy == VoidTy; } bool isBool() const { return oldTy == BoolTy; } bool isSigned() const { @@ -233,6 +233,17 @@ struct TypeInfo { return 0; } + unsigned getNumStructElements() const { + return (elements ? elements->size() : 0); + } + + TypeInfo* getElement(unsigned idx) { + if (elements) + if (idx < elements->size()) + return (*elements)[idx]; + return 0; + } + private: std::string* newTy; Types oldTy; @@ -246,11 +257,11 @@ private: struct ConstInfo { std::string *cnst; TypeInfo *type; - void destroy() { delete cnst; delete type; } + void destroy() { delete cnst; } }; typedef std::vector ValueList; -inline void ValueInfo::destroy() { delete val; delete type; } +inline void ValueInfo::destroy() { delete val; } #endif -- 2.34.1