]> granicus.if.org Git - clang/commit
Introduce a global bit-offset continuous range map into the ASTReader,
authorDouglas Gregor <dgregor@apple.com>
Fri, 22 Jul 2011 06:10:01 +0000 (06:10 +0000)
committerDouglas Gregor <dgregor@apple.com>
Fri, 22 Jul 2011 06:10:01 +0000 (06:10 +0000)
commit8f1231b70c2b1f6fe0cee097b447487b26810301
tree18e36240e11f0e411f52ec0d7c4696d5f055470e
parent4947e25dd9f7ac1f2176d63262563ba3e96538fe
Introduce a global bit-offset continuous range map into the ASTReader,
so that we have one, simple way to map from global bit offsets to
local bit offsets. Eliminates a number of loops over the chain, and
generalizes for more interesting bit remappings.

Also, as an amusing oddity, we were computing global bit offsets
*backwards* for preprocessed entities (e.g., the directly included PCH
file in the chain would start at offset zero, rather than the original
PCH that occurs first in translation unit). Even more amusingly, it
made precompiled preambles work, because we were forgetting to adjust
the local bit offset to a global bit offset when storing preprocessed
entity offsets in the ASTUnit. Two wrongs made a right, and now
they're both right.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135750 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Serialization/ASTReader.h
lib/Serialization/ASTReader.cpp
lib/Serialization/ASTReaderDecl.cpp
lib/Serialization/ASTWriter.cpp