Skip to content
Snippets Groups Projects
  1. Mar 19, 2010
    • Douglas Gregor's avatar
      Robustify PreprocessingRecord slightly, by only creating macro · 1b058e89
      Douglas Gregor authored
      instantiations when we have the corresponding macro definition and by
      removing macro definition information from our table when the macro is
      undefined. 
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99004 91177308-0d34-0410-b5e6-96231b3b80d8
      1b058e89
    • Douglas Gregor's avatar
      Implement serialization and lazy deserialization of the preprocessing · 6a5a23f8
      Douglas Gregor authored
      record (which includes all macro instantiations and definitions). As
      with all lay deserialization, this introduces a new external source
      (here, an external preprocessing record source) that loads all of the
      preprocessed entities prior to iterating over the entities.
      
      The preprocessing record is an optional part of the precompiled header
      that is disabled by default (enabled with
      -detailed-preprocessing-record). When the preprocessor given to the
      PCH writer has a preprocessing record, that record is written into the
      PCH file. When the PCH reader is given a PCH file that contains a
      preprocessing record, it will be lazily loaded (which, effectively,
      implicitly adds -detailed-preprocessing-record). This is the first
      case where we have sections of the precompiled header that are
      added/removed based on a compilation flag, which is
      unfortunate. However, this data consumes ~550k in the PCH file for
      Cocoa.h (out of ~9.9MB), and there is a non-trivial cost to gathering
      this detailed preprocessing information, so it's too expensive to turn
      on by default. In the future, we should investigate a better encoding
      of this information.
      
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99002 91177308-0d34-0410-b5e6-96231b3b80d8
      6a5a23f8
    • Douglas Gregor's avatar
      Fix a longstanding (but previously unknown) bug in the lazy · 5de65721
      Douglas Gregor authored
      deserialization of precompiled headers, where the deserialization of
      the source location entry for a buffer (e.g., macro instantiation
      scratch space) would overwrite a one-element FileID cache in the
      source manager. When tickled at the wrong time, we would return the
      wrong decomposed source location and eventually cause c-index-test to
      crash.
      
      Found by dumb luck. It's amazing this hasn't shown up before.
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98940 91177308-0d34-0410-b5e6-96231b3b80d8
      5de65721
  2. Mar 08, 2010
  3. Feb 14, 2010
  4. Jan 25, 2010
  5. Jan 22, 2010
    • Douglas Gregor's avatar
      Teach CIndex's cursor visitor to restrict its traversal to a specific · 33e9abd2
      Douglas Gregor authored
      region of interest (if provided). Implement clang_getCursor() in terms
      of this traversal rather than using the Index library; the unified
      cursor visitor is more complete, and will be The Way Forward.
      
      Minor other tweaks needed to make this work:
        - Extend Preprocessor::getLocForEndOfToken() to accept an offset
        from the end, making it easy to move to the last character in the
        token (rather than just past the end of the token).
        - In Lexer::MeasureTokenLength(), the length of whitespace is zero.
      
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94200 91177308-0d34-0410-b5e6-96231b3b80d8
      33e9abd2
  6. Jan 20, 2010
  7. Jan 19, 2010
  8. Jan 16, 2010
  9. Jan 07, 2010
  10. Dec 15, 2009
  11. Dec 14, 2009
  12. Nov 17, 2009
Loading