Skip to content

Commit

Permalink
Use uint64_t for GoArray size.
Browse files Browse the repository at this point in the history
Summary:
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.

Reviewers: ribrdb, clayborg

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D12872

llvm-svn: 247662
  • Loading branch information
waywardmonkeys committed Sep 15, 2015
1 parent 43ee367 commit 500737e
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 13 deletions.
2 changes: 1 addition & 1 deletion lldb/include/lldb/Symbol/GoASTContext.h
Expand Up @@ -70,7 +70,7 @@ class GoASTContext : public TypeSystem
// 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);

Expand Down
17 changes: 5 additions & 12 deletions lldb/source/Symbol/GoASTContext.cpp
Expand Up @@ -140,20 +140,20 @@ class GoElem : public GoType
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;
};
Expand Down Expand Up @@ -311,14 +311,7 @@ GoASTContext::IsArrayType(void *type, CompilerType *element_type, uint64_t *size
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();
}
Expand Down Expand Up @@ -1297,7 +1290,7 @@ GoASTContext::DumpTypeDescription(void *type, Stream *s)
}

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);
Expand Down

0 comments on commit 500737e

Please sign in to comment.