Skip to content
  1. Feb 05, 2013
    • Owen Anderson's avatar
      When the target-independent DAGCombiner inferred a higher alignment for a load, · a47fdbb0
      Owen Anderson authored
      it would replace the load with one with the higher alignment.  However, it did
      not place the new load in the worklist, which prevented later DAG combines in
      the same phase (for example, target-specific combines) from ever seeing it.
      
      This patch corrects that oversight, and updates some tests whose output changed
      due to slightly different DAGCombine outputs.
      
      llvm-svn: 174343
      a47fdbb0
    • Manman Ren's avatar
      [Stack Alignment] emit warning instead of a hard error · 86b1d868
      Manman Ren authored
      Per discussion in rdar://13127907, we should emit a hard error only if
      people write code where the requested alignment is larger than achievable
      and assumes the low bits are zeros. A warning should be good enough when
      we are not sure if the source code assumes the low bits are zeros.
      
      rdar://13127907
      
      llvm-svn: 174336
      86b1d868
  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
  12. Jan 22, 2013
    • Tim Northover's avatar
      Make APFloat constructor require explicit semantics. · 29178a34
      Tim Northover authored
      Previously we tried to infer it from the bit width size, with an added
      IsIEEE argument for the PPC/IEEE 128-bit case, which had a default
      value. This default value allowed bugs to creep in, where it was
      inappropriate.
      
      llvm-svn: 173138
      29178a34
Loading