Skip to content
Snippets Groups Projects
  1. Sep 01, 2015
  2. Aug 27, 2015
  3. Aug 25, 2015
  4. Aug 22, 2015
  5. Aug 09, 2015
  6. Aug 07, 2015
  7. Jul 27, 2015
    • Richard Smith's avatar
      [modules] Add an assert for redeclarations that we never added to their redecl · cca92270
      Richard Smith authored
      chain and fix the cases where it fires.
      
       * Handle the __va_list_tag as a predefined decl. Previously we failed to merge
         sometimes it because it's not visible to name lookup. (In passing, remove
         redundant __va_list_tag typedefs that we were creating for some ABIs. These
         didn't affect the mangling or representation of the type.)
      
       * For Decls derived from Redeclarable that are not in fact redeclarable
         (implicit params, function params, ObjC type parameters), remove them from
         the list of expected redeclarable decls.
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243259 91177308-0d34-0410-b5e6-96231b3b80d8
      cca92270
  8. Jul 22, 2015
  9. Jul 21, 2015
  10. Jul 07, 2015
    • Douglas Gregor's avatar
      Parsing, semantic analysis, and AST for Objective-C type parameters. · 5df68d34
      Douglas Gregor authored
      Produce type parameter declarations for Objective-C type parameters,
      and attach lists of type parameters to Objective-C classes,
      categories, forward declarations, and extensions as
      appropriate. Perform semantic analysis of type bounds for type
      parameters, both in isolation and across classes/categories/extensions
      to ensure consistency.
      
      Also handle (de-)serialization of Objective-C type parameter lists,
      along with sundry other things one must do to add a new declaration to
      Clang.
      
      Note that Objective-C type parameters are typedef name declarations,
      like typedefs and C++11 type aliases, in support of type erasure.
      
      Part of rdar://problem/6294649.
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241541 91177308-0d34-0410-b5e6-96231b3b80d8
      5df68d34
  11. Jul 02, 2015
  12. Jul 01, 2015
  13. Jun 23, 2015
  14. Jun 22, 2015
  15. Jun 18, 2015
  16. Jun 10, 2015
  17. May 18, 2015
  18. May 14, 2015
  19. Apr 21, 2015
  20. Apr 10, 2015
  21. Mar 24, 2015
    • Richard Smith's avatar
      [modules] Deserialize CXXCtorInitializer list for a constructor lazily. · 31766913
      Richard Smith authored
      Previously we'd deserialize the list of mem-initializers for a constructor when
      we deserialized the declaration of the constructor. That could trigger a
      significant amount of unnecessary work (pulling in all base classes
      recursively, for a start) and was causing problems for the modules buildbot due
      to cyclic deserializations. We now deserialize these on demand.
      
      This creates a certain amount of duplication with the handling of
      CXXBaseSpecifiers; I'll look into reducing that next.
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233052 91177308-0d34-0410-b5e6-96231b3b80d8
      31766913
  22. Mar 18, 2015
  23. Mar 07, 2015
  24. Mar 06, 2015
    • Richard Smith's avatar
      [modules] Rework merging of redeclaration chains on module import. · cc533bed
      Richard Smith authored
      We used to save out and eagerly load a (potentially huge) table of merged
      formerly-canonical declarations when we loaded each module. This was extremely
      inefficient in the presence of large amounts of merging, and didn't actually
      save any merging lookup work, because we still needed to perform name lookup to
      check that our merged declaration lists were complete. This also resulted in a
      loss of laziness -- even if we only needed an early declaration of an entity, we
      would eagerly pull in all declarations that had been merged into it regardless.
      
      We now store the relevant fragments of the table within the declarations
      themselves. In detail:
      
       * The first declaration of each entity within a module stores a list of first
         declarations from imported modules that are merged into it.
       * Loading that declaration pre-loads those other entities, so that they appear
         earlier within the redeclaration chain.
       * The name lookup tables list the most recent local lookup result, if there
         is one, or all directly-imported lookup results if not.
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@231424 91177308-0d34-0410-b5e6-96231b3b80d8
      cc533bed
  25. Feb 28, 2015
    • Richard Smith's avatar
      Rework our handling of key functions. We used to track a complete list of all · a2e36d21
      Richard Smith authored
      dynamic classes in the translation unit and check whether each one's key
      function is defined when we got to the end of the TU (and when we got to the
      end of each module). This is really terrible for modules performance, since it
      causes unnecessary deserialization of every dynamic class in every compilation.
      
      We now use a much simpler (and, in a modules build, vastly more efficient)
      system: when we see an out-of-line definition of a virtual function, we check
      whether that function was in fact its class's key function. (If so, we need to
      emit the vtable.)
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@230830 91177308-0d34-0410-b5e6-96231b3b80d8
      a2e36d21
  26. Feb 13, 2015
  27. Dec 27, 2014
    • Nico Weber's avatar
      Objective-C: Serialize "more than one decl" state of ObjCMethodList. · 7d12079f
      Nico Weber authored
      This fixes PR21587, what r221933 fixed for regular programs is now also
      fixed for decls coming from PCH files.
      
      Use another bit from the count/bits uint16_t for storing the "more than one
      decl" bit.  This reduces the number of bits for the count from 14 to 13.
      The selector with the most overloads in Cocoa.h has ~55 overloads, so 13 bits
      should still be plenty.  Since this changes the meaning of a serialized bit
      pattern, also increase clang::serialization::VERSION_MAJOR.
      
      Storing the "more than one decl" state of only the first overload isn't quite
      correct, but Sema::AreMultipleMethodsInGlobalPool() currently only looks at
      the state of the first overload so it's good enough for now.
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224892 91177308-0d34-0410-b5e6-96231b3b80d8
      7d12079f
  28. Dec 05, 2014
  29. Nov 08, 2014
    • Richard Smith's avatar
      [c++1z] N4295: fold-expressions. · 4617a9df
      Richard Smith authored
      This is a new form of expression of the form:
      
        (expr op ... op expr)
      
      where one of the exprs is a parameter pack. It expands into
      
        (expr1 op (expr2onwards op ... op expr))
      
      (and likewise if the pack is on the right). The non-pack operand can be
      omitted; in that case, an empty pack gives a fallback value or an error,
      depending on the operator.
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@221573 91177308-0d34-0410-b5e6-96231b3b80d8
      4617a9df
  30. Oct 24, 2014
  31. Oct 23, 2014
    • Ben Langmuir's avatar
      Add a "signature" to AST files to verify that they haven't changed · 854931f5
      Ben Langmuir authored
      Since the order of the IDs in the AST file (e.g. DeclIDs, SelectorIDs)
      is not stable, it is not safe to load an AST file that depends on
      another AST file that has been rebuilt since the importer was built,
      even if "nothing changed". We previously used size and modtime to check
      this, but I've seen cases where a module rebuilt quickly enough to foil
      this check and caused very hard to debug build errors.
      
      To save cycles when we're loading the AST, we just generate a random
      nonce value and check that it hasn't changed when we load an imported
      module, rather than actually hash the whole file.
      
      This is slightly complicated by the fact that we need to verify the
      signature inside addModule, since we might otherwise consider that a
      mdoule is "OutOfDate" when really it is the importer that is out of
      date. I didn't see any regressions in module load time after this
      change.
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220493 91177308-0d34-0410-b5e6-96231b3b80d8
      854931f5
    • Richard Smith's avatar
      [modules] Add support for 'textual header' directives. · 180484ac
      Richard Smith authored
      This allows a module to specify that it logically contains a file, but that
      said file is non-modular and intended for textual inclusion. This allows
      layering checks to work properly in the presence of such files.
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220448 91177308-0d34-0410-b5e6-96231b3b80d8
      180484ac
  32. Oct 09, 2014
  33. Oct 08, 2014
Loading