]> granicus.if.org Git - clang/commit
Changed the serialization of IdentifierTable to only serialize out entries
authorTed Kremenek <kremenek@apple.com>
Sat, 10 Nov 2007 02:11:55 +0000 (02:11 +0000)
committerTed Kremenek <kremenek@apple.com>
Sat, 10 Nov 2007 02:11:55 +0000 (02:11 +0000)
commiteae5cd010e41c90da72a2f9d49cff579e6adba35
tree0841ad86cd174949e05c359db3cfb8990668c7e3
parent7a1f4dbb9c57b0109082660213f52238a65d68db
Changed the serialization of IdentifierTable to only serialize out entries
that are referenced in the ASTs. This assumes that we serialize out the
decls/stmts first, and use the pointer-tracking logic in the Serializer to
determine if an IdentifierInfo (or its string key) is ever referenced.

This is a significant space optimization for serialized ASTs.

Consider the following program:

void foo(int x,int y) {
  return x > y ? x : y+1;
}

Here are the sizes of the files for the serialized ASTs:

        Full IdentifierTable: 23676 bytes
 Only-referenced Identifiers:   304 bytes.

For this simple program, this is a 77% reduction in the file size of the
serialized ASTs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43975 91177308-0d34-0410-b5e6-96231b3b80d8
Basic/IdentifierTable.cpp