Skip to content
  1. Jan 29, 2013
    • Hal Finkel's avatar
      Unroll again after running BBVectorize · bf4db4fe
      Hal Finkel authored
      Because BBVectorize may significantly shorten a loop body, unroll
      again after vectorization. This is especially important when using
      runtime or partial unrolling.
      
      llvm-svn: 173730
      bf4db4fe
  2. Jan 28, 2013
  3. Jan 27, 2013
    • Hal Finkel's avatar
      BBVectorize: Better use of TTI->getShuffleCost · 293a41d1
      Hal Finkel authored
      When flipping the pair of subvectors that form a vector, if the
      vector length is 2, we can use the SK_Reverse shuffle kind to get
      more-accurate cost information. Also we can use the SK_ExtractSubvector
      shuffle kind to get accurate subvector extraction costs.
      
      The current cost model implementations don't yet seem complex enough
      for this to make a difference (thus, there are no test cases with this
      commit), but it should help in future.
      
      Depending on how the various targets optimize and combine shuffles in
      practice, we might be able to get more-accurate costs by combining the
      costs of multiple shuffle kinds. For example, the cost of flipping the
      subvector pairs could be modeled as two extractions and two subvector
      insertions. These changes, however, should probably be motivated
      by specific test cases.
      
      llvm-svn: 173621
      293a41d1
    • Chandler Carruth's avatar
      Re-revert r173342, without losing the compile time improvements, flat · 329b590e
      Chandler Carruth authored
      out bug fixes, or functionality preserving refactorings.
      
      llvm-svn: 173610
      329b590e
    • Michael Gottesman's avatar
      Renamed function IsPotentialUse to IsPotentialRetainableObjPtr. · 5300cdd8
      Michael Gottesman authored
      This name change does the following:
      
      1. Causes the function name to use proper ARC terminology.
      2. Makes it clear what the function truly does.
      
      llvm-svn: 173609
      5300cdd8
    • Bill Wendling's avatar
      Use the AttributeSet instead of AttributeWithIndex. · 3575c8c6
      Bill Wendling authored
      In the future, AttributeWithIndex won't be used anymore. Besides, it exposes the
      internals of the AttributeSet to outside users, which isn't goodness.
      
      llvm-svn: 173602
      3575c8c6
    • Bill Wendling's avatar
      Use the AttributeSet instead of AttributeWithIndex. · 37a52df9
      Bill Wendling authored
      In the future, AttributeWithIndex won't be used anymore. Besides, it exposes the
      internals of the AttributeSet to outside users, which isn't goodness.
      
      llvm-svn: 173601
      37a52df9
    • Bill Wendling's avatar
      Use the AttributeSet instead of AttributeWithIndex. · 6eaab61b
      Bill Wendling authored
      In the future, AttributeWithIndex won't be used anymore. Besides, it exposes the
      internals of the AttributeSet to outside users, which isn't goodness.
      
      llvm-svn: 173600
      6eaab61b
  4. Jan 26, 2013
  5. Jan 25, 2013
  6. Jan 24, 2013
    • Michael Gottesman's avatar
      Added comment to ObjCARC elaborating what is meant by the term 'Provenance' in... · 12780c2d
      Michael Gottesman authored
      Added comment to ObjCARC elaborating what is meant by the term 'Provenance' in 'Provenance Analysis'.
      
      llvm-svn: 173374
      12780c2d
    • Benjamin Kramer's avatar
      Reapply chandlerc's r173342 now that the miscompile it was triggering is fixed. · 1c4e323f
      Benjamin Kramer authored
      Original commit message:
      Plug TTI into the speculation logic, giving it a real cost interface
      that can be specialized by targets.
      
      The goal here is not to be more aggressive, but to just be more accurate
      with very obvious cases. There are instructions which are known to be
      truly free and which were not being modeled as such in this code -- see
      the regression test which is distilled from an inner loop of zlib.
      
      Everywhere the TTI cost model is insufficiently conservative I've added
      explicit checks with FIXME comments to go add proper modelling of these
      cost factors.
      
      If this causes regressions, the likely solution is to make TTI even more
      conservative in its cost estimates, but test cases will help here.
      
      llvm-svn: 173357
      1c4e323f
    • Chandler Carruth's avatar
      Revert r173342 temporarily. It appears to cause a very late miscompile · 321c6a7c
      Chandler Carruth authored
      of stage2 in a bootstrap. Still investigating....
      
      llvm-svn: 173343
      321c6a7c
    • Chandler Carruth's avatar
      Plug TTI into the speculation logic, giving it a real cost interface · 5f451930
      Chandler Carruth authored
      that can be specialized by targets.
      
      The goal here is not to be more aggressive, but to just be more accurate
      with very obvious cases. There are instructions which are known to be
      truly free and which were not being modeled as such in this code -- see
      the regression test which is distilled from an inner loop of zlib.
      
      Everywhere the TTI cost model is insufficiently conservative I've added
      explicit checks with FIXME comments to go add proper modelling of these
      cost factors.
      
      If this causes regressions, the likely solution is to make TTI even more
      conservative in its cost estimates, but test cases will help here.
      
      llvm-svn: 173342
      5f451930
    • Chandler Carruth's avatar
      Address a large chunk of this FIXME by accumulating the cost for · 01bffaad
      Chandler Carruth authored
      unfolded constant expressions rather than checking each one
      independently.
      
      llvm-svn: 173341
      01bffaad
    • Chandler Carruth's avatar
      Switch the constant expression speculation cost evaluation away from · 8a21005c
      Chandler Carruth authored
      a cost fuction that seems both a bit ad-hoc and also poorly suited to
      evaluating constant expressions.
      
      Notably, it is missing any support for trivial expressions such as
      'inttoptr'. I could fix this routine, but it isn't clear to me all of
      the constraints its other users are operating under.
      
      The core protection that seems relevant here is avoiding the formation
      of a select instruction wich a further chain of select operations in
      a constant expression operand. Just explicitly encode that constraint.
      
      Also, update the comments and organization here to make it clear where
      this needs to go -- this should be driven off of real cost measurements
      which take into account the number of constants expressions and the
      depth of the constant expression tree.
      
      llvm-svn: 173340
      8a21005c
    • Chandler Carruth's avatar
      Rephrase the speculating scan of the conditional BB to be phrased in · 7481ca8f
      Chandler Carruth authored
      terms of cost rather than hoisting a single instruction.
      
      This does *not* change the cost model! We still set the cost threshold
      at 1 here, it's just that we track it by accumulating cost rather than
      by storing an instruction.
      
      The primary advantage is that we no longer leave no-op intrinsics in the
      basic block. For example, this will now move both debug info intrinsics
      and a single instruction, instead of only moving the instruction and
      leaving a basic block with nothing bug debug info intrinsics in it, and
      those intrinsics now no longer ordered correctly with the hoisted value.
      
      Instead, we now splice the entire conditional basic block's instruction
      sequence.
      
      This also places the code for checking the safety of hoisting next to
      the code computing the cost.
      
      Currently, the only observable side-effect of this change is that debug
      info intrinsics are no longer abandoned. I'm not sure how to craft
      a test case for this, and my real goal was the refactoring, but I'll
      talk to Dave or Eric about how to add a test case for this.
      
      llvm-svn: 173339
      7481ca8f
    • Kostya Serebryany's avatar
      [asan] fix 32-bit builds · e35d59a8
      Kostya Serebryany authored
      llvm-svn: 173338
      e35d59a8
Loading