Skip to content
  1. Jun 29, 2012
  2. Jun 28, 2012
  3. Jun 27, 2012
    • Duncan Sands's avatar
      Some reassociate optimizations create new instructions, which they insert just · 514db117
      Duncan Sands authored
      before the expression root.  Any existing operators that are changed to use one
      of them needs to be moved between it and the expression root, and recursively
      for the operators using that one.  When I rewrote RewriteExprTree I accidentally
      inverted the logic, resulting in the compacting going down from operators to
      operands rather than up from operands to the operators using them, oops.  Fix
      this, resolving PR12963.
      
      llvm-svn: 159265
      514db117
  4. Jun 26, 2012
  5. Jun 25, 2012
  6. Jun 24, 2012
  7. Jun 23, 2012
  8. Jun 21, 2012
    • Nuno Lopes's avatar
      port the BoundsChecking patch to the new MemoryBuiltin API (i.e., remove most... · 0e967e01
      Nuno Lopes authored
      port the BoundsChecking patch to the new MemoryBuiltin API (i.e., remove most of the code from here).
      Remove the alloc_size.ll test until we settle on a metadata format that makes everyone happy..
      
      llvm-svn: 158920
      0e967e01
    • Nuno Lopes's avatar
      refactor the MemoryBuiltin analysis: · 55fff834
      Nuno Lopes authored
       - provide more extensive set of functions to detect library allocation functions (e.g., malloc, calloc, strdup, etc)
       - provide an API to compute the size and offset of an object pointed by
      
      Move a few clients (GVN, AA, instcombine, ...) to the new API.
      This implementation is a lot more aggressive than each of the custom implementations being replaced.
      
      Patch reviewed by Nick Lewycky and Chandler Carruth, thanks.
      
      llvm-svn: 158919
      55fff834
    • Nadav Rotem's avatar
      Add a number of threshold arguments to the SRA pass. · 4e9012c2
      Nadav Rotem authored
      A patch by Tom Stellard with minor changes.
      
      llvm-svn: 158918
      4e9012c2
  9. Jun 17, 2012
  10. Jun 16, 2012
  11. Jun 15, 2012
  12. Jun 14, 2012
  13. Jun 13, 2012
  14. Jun 12, 2012
    • Duncan Sands's avatar
      72aea01b
    • Duncan Sands's avatar
      Use std::map rather than SmallMap because SmallMap assumes that the value has · 67cd5919
      Duncan Sands authored
      POD type, causing memory corruption when mapping to APInts with bitwidth > 64.
      Merge another crash testcase into crash.ll while there.
      
      llvm-svn: 158369
      67cd5919
    • Duncan Sands's avatar
      Now that Reassociate's LinearizeExprTree can look through arbitrary expression · d7aeefeb
      Duncan Sands authored
      topologies, it is quite possible for a leaf node to have huge multiplicity, for
      example: x0 = x*x, x1 = x0*x0, x2 = x1*x1, ... rapidly gives a value which is x
      raised to a vast power (the multiplicity, or weight, of x).  This patch fixes
      the computation of weights by correctly computing them no matter how big they
      are, rather than just overflowing and getting a wrong value.  It turns out that
      the weight for a value never needs more bits to represent than the value itself,
      so it is enough to represent weights as APInts of the same bitwidth and do the
      right overflow-avoiding dance steps when computing weights.  As a side-effect it
      reduces the number of multiplies needed in some cases of large powers.  While
      there, in view of external uses (eg by the vectorizer) I made LinearizeExprTree
      static, pushing the rank computation out into users.  This is progress towards
      fixing PR13021.
      
      llvm-svn: 158358
      d7aeefeb
  15. Jun 08, 2012
    • Duncan Sands's avatar
      Reapply commit 158073 with a fix (the testcase was already committed). The · 3293f460
      Duncan Sands authored
      problem was that by moving instructions around inside the function, the pass
      could accidentally move the iterator being used to advance over the function
      too.  Fix this by only processing the instruction equal to the iterator, and
      leaving processing of instructions that might not be equal to the iterator
      to later (later = after traversing the basic block; it could also wait until
      after traversing the entire function, but this might make the sets quite big).
      Original commit message:
      
      Grab-bag of reassociate tweaks.  Unify handling of dead instructions and
      instructions to reoptimize.  Exploit this to more systematically eliminate
      dead instructions (this isn't very useful in practice but is convenient for
      analysing some testcase I am working on).  No need for WeakVH any more: use
      an AssertingVH instead.
      
      llvm-svn: 158226
      3293f460
    • Nuno Lopes's avatar
      BoundsChecking: add support for ConstantPointerNull. fixes a bunch of... · 4b68c1da
      Nuno Lopes authored
      BoundsChecking: add support for ConstantPointerNull. fixes a bunch of instrumentation failures in loops with reallocs
      
      llvm-svn: 158210
      4b68c1da
    • Duncan Sands's avatar
      Revert commit 158073 while waiting for a fix. The issue is that reassociate · 9a5cf922
      Duncan Sands authored
      can move instructions within the instruction list.  If the instruction just
      happens to be the one the basic block iterator is pointing to, and it is
      moved to a different basic block, then we get into an infinite loop due to
      the iterator running off the end of the basic block (for some reason this
      doesn't fire any assertions).  Original commit message:
      
      Grab-bag of reassociate tweaks.  Unify handling of dead instructions and
      instructions to reoptimize.  Exploit this to more systematically eliminate
      dead instructions (this isn't very useful in practice but is convenient for
      analysing some testcase I am working on).  No need for WeakVH any more: use
      an AssertingVH instead.
      
      llvm-svn: 158199
      9a5cf922
  16. Jun 06, 2012
  17. Jun 05, 2012
  18. Jun 02, 2012
  19. Jun 01, 2012
Loading