Skip to content
  1. Jan 17, 2012
  2. Jan 16, 2012
  3. Jan 15, 2012
    • Nadav Rotem's avatar
      [AVX] Optimize x86 VSELECT instructions using SimplifyDemandedBits. · 57935243
      Nadav Rotem authored
      We know that the blend instructions only use the MSB, so if the mask is
      sign-extended then we can convert it into a SHL instruction. This is a
      common pattern because the type-legalizer sign-extends the i1 type which
      is used by the LLVM-IR for the condition.
      
      Added a new optimization in SimplifyDemandedBits for SIGN_EXTEND_INREG -> SHL.
      
      llvm-svn: 148225
      57935243
    • 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
Loading