brucem created this revision. brucem added reviewers: ribrdb, clayborg. brucem added a subscriber: lldb-commits.
This was int64_t, but all usages of it came from code that was passing in unsigned values. The usages of the array size, except for one, were also treating it as an unsigned value. The usage that treated it as signed was to try to figure out if it was a complete type or not, but the callers creating the array didn't seem to be aware of using -1 as an indicator for an incomplete array. http://reviews.llvm.org/D12872 Files: include/lldb/Symbol/GoASTContext.h source/Symbol/GoASTContext.cpp Index: source/Symbol/GoASTContext.cpp =================================================================== --- source/Symbol/GoASTContext.cpp +++ source/Symbol/GoASTContext.cpp @@ -140,20 +140,20 @@ class GoArray : public GoElem { public: - GoArray(const ConstString &name, int64_t length, const CompilerType &elem) + GoArray(const ConstString &name, uint64_t length, const CompilerType &elem) : GoElem(KIND_ARRAY, name, elem) , m_length(length) { } - int64_t + uint64_t GetLength() const { return m_length; } private: - int64_t m_length; + uint64_t m_length; GoArray(const GoArray &) = delete; const GoArray &operator=(const GoArray &) = delete; }; @@ -311,14 +311,7 @@ GoArray *array = static_cast<GoType *>(type)->GetArray(); if (array) { - if (array->GetLength() == -1) - { - if (is_incomplete) - { - *is_incomplete = true; - } - } - else if (size) + if (size) { *size = array->GetLength(); } @@ -1297,7 +1290,7 @@ } CompilerType -GoASTContext::CreateArrayType(const ConstString &name, const CompilerType &element_type, int64_t length) +GoASTContext::CreateArrayType(const ConstString &name, const CompilerType &element_type, uint64_t length) { GoType *type = new GoArray(name, length, element_type); (*m_types)[name].reset(type); Index: include/lldb/Symbol/GoASTContext.h =================================================================== --- include/lldb/Symbol/GoASTContext.h +++ include/lldb/Symbol/GoASTContext.h @@ -70,7 +70,7 @@ // Creating Types //---------------------------------------------------------------------- - CompilerType CreateArrayType(const ConstString &name, const CompilerType &element_type, int64_t length); + CompilerType CreateArrayType(const ConstString &name, const CompilerType &element_type, uint64_t length); CompilerType CreateBaseType(int go_kind, const ConstString &type_name_const_str, uint64_t byte_size);
Index: source/Symbol/GoASTContext.cpp =================================================================== --- source/Symbol/GoASTContext.cpp +++ source/Symbol/GoASTContext.cpp @@ -140,20 +140,20 @@ class GoArray : public GoElem { public: - GoArray(const ConstString &name, int64_t length, const CompilerType &elem) + GoArray(const ConstString &name, uint64_t length, const CompilerType &elem) : GoElem(KIND_ARRAY, name, elem) , m_length(length) { } - int64_t + uint64_t GetLength() const { return m_length; } private: - int64_t m_length; + uint64_t m_length; GoArray(const GoArray &) = delete; const GoArray &operator=(const GoArray &) = delete; }; @@ -311,14 +311,7 @@ GoArray *array = static_cast<GoType *>(type)->GetArray(); if (array) { - if (array->GetLength() == -1) - { - if (is_incomplete) - { - *is_incomplete = true; - } - } - else if (size) + if (size) { *size = array->GetLength(); } @@ -1297,7 +1290,7 @@ } CompilerType -GoASTContext::CreateArrayType(const ConstString &name, const CompilerType &element_type, int64_t length) +GoASTContext::CreateArrayType(const ConstString &name, const CompilerType &element_type, uint64_t length) { GoType *type = new GoArray(name, length, element_type); (*m_types)[name].reset(type); Index: include/lldb/Symbol/GoASTContext.h =================================================================== --- include/lldb/Symbol/GoASTContext.h +++ include/lldb/Symbol/GoASTContext.h @@ -70,7 +70,7 @@ // Creating Types //---------------------------------------------------------------------- - CompilerType CreateArrayType(const ConstString &name, const CompilerType &element_type, int64_t length); + CompilerType CreateArrayType(const ConstString &name, const CompilerType &element_type, uint64_t length); CompilerType CreateBaseType(int go_kind, const ConstString &type_name_const_str, uint64_t byte_size);
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits