{"shas":[["f62d43d2afe1960755a1b5813cae1e5983bcac1b","20237f4b434bdcccb3b4c7b8643e049a656bb565@apple.com","Revamp the SourceManager to separate the representation of parsed\nsource locations from source locations loaded from an AST/PCH file.\n\nPreviously, loading an AST/PCH file involved carefully pre-allocating\nspace at the beginning of the source manager for the source locations\nand FileIDs that correspond to the prefix, and then appending the\nsource locations/FileIDs used for parsing the remaining translation\nunit. This design forced us into loading PCH files early, as a prefix,\nwhic has become a rather significant limitation.\n\nThis patch splits the SourceManager space into two parts: for source\nlocation \"addresses\", the lower values (growing upward) are used to\ndescribe parsed code, while upper values (growing downward) are used\nfor source locations loaded from AST/PCH files. Similarly, positive\nFileIDs are used to describe parsed code while negative FileIDs are\nused to file/macro locations loaded from AST/PCH files. As a result,\nwe can load PCH/AST files even during parsing, making various\nimprovemnts in the future possible, e.g., teaching #include <foo.h> to\nlook for and load <foo.h.gch> if it happens to be already available.\n\nThis patch was originally written by Sebastian Redl, then brought\nforward to the modern age by Jonathan Turner, and finally\npolished/finished by me to be committed.\n\n\n\n\ngit-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135484 91177308-0d34-0410-b5e6-96231b3b80d8","Douglas Gregor"]],"ref":"refs/heads/master","size":1,"head":"f62d43d2afe1960755a1b5813cae1e5983bcac1b","push_id":37030068}