Skip to content
  1. Feb 05, 2013
  2. Feb 04, 2013
    • Benjamin Kramer's avatar
      SelectionDAG: Teach FoldConstantArithmetic how to deal with vectors. · 548ffa27
      Benjamin Kramer authored
      This required disabling a PowerPC optimization that did the following:
      input:
      x = BUILD_VECTOR <i32 16, i32 16, i32 16, i32 16>
      lowered to:
      tmp = BUILD_VECTOR <i32 8, i32 8, i32 8, i32 8>
      x = ADD tmp, tmp
      
      The add now gets folded immediately and we're back at the BUILD_VECTOR we
      started from. I don't see a way to fix this currently so I left it disabled
      for now.
      
      Fix some trivially foldable X86 tests too.
      
      llvm-svn: 174325
      548ffa27
  3. Feb 02, 2013
  4. Feb 01, 2013
  5. Jan 31, 2013
  6. Jan 29, 2013
  7. Jan 28, 2013
    • Bill Schmidt's avatar
      This patch addresses bug 15031. · 2e4ae4e1
      Bill Schmidt authored
      The common code in the post-RA scheduler to break anti-dependencies on the
      critical path contained a flaw.  In the reported case, an anti-dependency
      between the overlapping registers %X4 and %R4 exists:
      
      	%X29<def> = OR8 %X4, %X4
      	%R4<def>, %X3<def,dead,tied3> = LBZU 1, %X3<kill,tied1>
      
      The unpatched code breaks the dependency by replacing %R4 and its uses
      with %R3, the first register on the available list.  However, %R3 and
      %X3 overlap, so this creates two overlapping definitions on the same
      instruction.
      
      The fix is straightforward, preventing selection of a register that
      overlaps any other defined register on the same instruction.
      
      The test case is reduced from the bug report, and verifies that we no
      longer produce "lbzu 3, 1(3)" when breaking this anti-dependency.
      
      llvm-svn: 173706
      2e4ae4e1
    • Eric Christopher's avatar
      Fix comment. · 59cc0711
      Eric Christopher authored
      llvm-svn: 173698
      59cc0711
    • Michael Gottesman's avatar
      Extracted ObjCARC.cpp into its own library libLLVMObjCARCOpts in preparation... · 79d8d812
      Michael Gottesman authored
      Extracted ObjCARC.cpp into its own library libLLVMObjCARCOpts in preparation for refactoring the ARC Optimizer.
      
      llvm-svn: 173647
      79d8d812
  8. Jan 27, 2013
  9. Jan 25, 2013
  10. Jan 24, 2013
  11. Jan 23, 2013
    • Bill Wendling's avatar
      Add the heuristic to differentiate SSPStrong from SSPRequired. · 7c8f96a9
      Bill Wendling authored
      The requirements of the strong heuristic are:
      
      * A Protector is required for functions which contain an array, regardless of
        type or length.
      
      * A Protector is required for functions which contain a structure/union which
        contains an array, regardless of type or length.  Note, there is no limit to
        the depth of nesting.
      
      * A protector is required when the address of a local variable (i.e., stack
        based variable) is exposed. (E.g., such as through a local whose address is
        taken as part of the RHS of an assignment or a local whose address is taken as
        part of a function argument.)
      
      llvm-svn: 173231
      7c8f96a9
    • Bill Wendling's avatar
      Add the IR attribute 'sspstrong'. · d154e283
      Bill Wendling authored
      SSPStrong applies a heuristic to insert stack protectors in these situations:
      
      * A Protector is required for functions which contain an array, regardless of
        type or length.
      
      * A Protector is required for functions which contain a structure/union which
        contains an array, regardless of type or length.  Note, there is no limit to
        the depth of nesting.
      
      * A protector is required when the address of a local variable (i.e., stack
        based variable) is exposed. (E.g., such as through a local whose address is
        taken as part of the RHS of an assignment or a local whose address is taken as
        part of a function argument.)
      
      This patch implements the SSPString attribute to be equivalent to
      SSPRequired. This will change in a subsequent patch.
      
      llvm-svn: 173230
      d154e283
Loading