Skip to content
Snippets Groups Projects
  1. Dec 19, 2012
  2. Nov 29, 2011
  3. Nov 28, 2011
  4. Oct 05, 2011
  5. Sep 01, 2011
  6. Jul 19, 2011
    • Douglas Gregor's avatar
      Revamp the SourceManager to separate the representation of parsed · f62d43d2
      Douglas Gregor authored
      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.
      
      
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135484 91177308-0d34-0410-b5e6-96231b3b80d8
      f62d43d2
Loading