summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/DIBuilder.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-07-19 16:10:42 +0000
committerDouglas Gregor <dgregor@apple.com>2011-07-19 16:10:42 +0000
commit925296b4c2cbb358c34323dfcffbea6d59eb9c1e (patch)
tree28ca61a9d6ea5b2b2bb8d96881618bc53182573f /llvm/lib/Analysis/DIBuilder.cpp
parentca3fc3883954b0c4468db7f72ec57713dc119bc5 (diff)
downloadbcm5719-llvm-925296b4c2cbb358c34323dfcffbea6d59eb9c1e.tar.gz
bcm5719-llvm-925296b4c2cbb358c34323dfcffbea6d59eb9c1e.zip
Revamp the SourceManager to separate the representation of parsed
source locations from source locations loaded from an AST/PCH file. Previously, loading an AST/PCH file involved carefully pre-allocating space at the beginning of the source manager for the source locations and FileIDs that correspond to the prefix, and then appending the source locations/FileIDs used for parsing the remaining translation unit. This design forced us into loading PCH files early, as a prefix, whic has become a rather significant limitation. This patch splits the SourceManager space into two parts: for source location "addresses", the lower values (growing upward) are used to describe parsed code, while upper values (growing downward) are used for source locations loaded from AST/PCH files. Similarly, positive FileIDs are used to describe parsed code while negative FileIDs are used to file/macro locations loaded from AST/PCH files. As a result, we can load PCH/AST files even during parsing, making various improvemnts in the future possible, e.g., teaching #include <foo.h> to look for and load <foo.h.gch> if it happens to be already available. This patch was originally written by Sebastian Redl, then brought forward to the modern age by Jonathan Turner, and finally polished/finished by me to be committed. llvm-svn: 135484
Diffstat (limited to 'llvm/lib/Analysis/DIBuilder.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud