Skip to content
Snippets Groups Projects
  1. Jan 17, 2012
  2. Jan 16, 2012
  3. Jan 15, 2012
    • Douglas Gregor's avatar
      Now that deserializing a definition of a C++ class/Objective-C · 3a5ae564
      Douglas Gregor authored
      class/Objective-C protocol suffices get all of the redeclarations of
      that declaration wired to the definition, we no longer need to record
      the identity of the definition in every declaration. Instead, just
      record a bit to indicate whether a particular declaration is the
      definition.
      
      llvm-svn: 148224
      3a5ae564
    • Douglas Gregor's avatar
      When deserializing the definition of a C++ class/ObjC class/ObjC · c03c52ea
      Douglas Gregor authored
      protocol, record the definition pointer in the canonical declaration
      for that entity, and then propagate that definition pointer from the
      canonical declaration to all other deserialized declarations. This
      approach works well even when deserializing declarations that didn't
      know about the original definition, which can occur with modules.
      
      A nice bonus from this definition-deserialization approach is that we
      no longer need update records when a definition is added, because the
      redeclaration chains ensure that the if any declaration is loaded, the
      definition will also get loaded.
      
      llvm-svn: 148223
      c03c52ea
    • Douglas Gregor's avatar
      Completely re-implement (de-)serialization of redeclaration · 358cd441
      Douglas Gregor authored
      chains, again. The prior implementation was very linked-list oriented, and
      the list-splicing logic was both fairly convoluted (when loading from
      multiple modules) and failed to preserve a reasonable ordering for the
      redeclaration chains.
      
      This new implementation uses a simpler strategy, where we store the
      ordered redeclaration chains in an array-like structure (indexed based
      on the first declaration), and use that ordering to add individual
      deserialized declarations to the end of the existing chain. That way,
      the chain mimics the ordering from its modules, and a bug somewhere is
      far less likely to result in a broken linked list.
      
      llvm-svn: 148222
      358cd441
    • Benjamin Kramer's avatar
      Tweak markup. · 83369b33
      Benjamin Kramer authored
      llvm-svn: 148221
      83369b33
    • Anton Yartsev's avatar
    • Benjamin Kramer's avatar
      Fix ALL the markup. · eaa262b5
      Benjamin Kramer authored
      llvm-svn: 148219
      eaa262b5
    • Chandler Carruth's avatar
      Two variables had been added for an assert, but their values were · 5b15a9be
      Chandler Carruth authored
      re-computed rather than the variables be re-used just after the assert.
      Just use the variables since we have them already. Fixes an unused
      variable warning.
      
      Also fix an 80-column violation.
      
      llvm-svn: 148212
      5b15a9be
    • Richard Smith's avatar
      decltype(e) is type-dependent if e is instantiation-dependent. Scary but true. · bd153094
      Richard Smith authored
      Don't consider decltype(e) for an instantiation-dependent, but not
      type-dependent, e to be non-type-dependent but canonical(!).
      
      llvm-svn: 148210
      bd153094
    • Richard Smith's avatar
      Pedantic diagnostic correction: in C++, we have integral constant expressions, · 2ec4061e
      Richard Smith authored
      not integer constant expressions. In passing, fix the 'folding is an extension'
      diagnostic to not claim we're accepting the code, since that's not true in
      -pedantic-errors mode, and add this diagnostic to -Wgnu.
      
      llvm-svn: 148209
      2ec4061e
    • Richard Smith's avatar
      constexpr: casts to void* are allowed in constant expressions, don't set the · b19ac0d6
      Richard Smith authored
      designator invalid. (Since we can't read the value of such a pointer, this only
      affects the quality of diagnostics.)
      
      llvm-svn: 148208
      b19ac0d6
    • Eli Friedman's avatar
      Change linkage computation so it doesn't depend on FunctionDecl::isExternC or... · 839192fd
      Eli Friedman authored
      Change linkage computation so it doesn't depend on FunctionDecl::isExternC or VarDecl::isExternC, and instead queries what it actually cares about: whether the given declaration is inside an extern "C" context.  Fundamentally, figuring out whether a function/variable uses C linkage requires knowing the linkage, and the logic in FunctionDecl::isExternC and VarDecl::isExternC was getting it wrong.  Given that, fix FunctionDecl::isExternC and VarDecl::isExternC to use much simpler implementations that depend on the fixed linkage computation.
      
      Fixes a regression to test/SemaCXX/linkage.cpp caused by a new warning exposing the fact that the internal state was wrong.
      
      llvm-svn: 148207
      839192fd
  4. Jan 14, 2012
Loading