Skip to content
  1. May 15, 2012
  2. May 14, 2012
    • David Blaikie's avatar
      Fix use of uninitialized variable. · 81a84bd8
      David Blaikie authored
      Found by GCC's maybe-uninitialized.
      
      llvm-svn: 156780
      81a84bd8
    • Jakob Stoklund Olesen's avatar
      Don't access MO reference after invalidating operand list. · a13fd128
      Jakob Stoklund Olesen authored
      This should unbreak llvm-x86_64-linux.
      
      llvm-svn: 156778
      a13fd128
    • Jakob Stoklund Olesen's avatar
      Fix PR12821. · dc2e0cd4
      Jakob Stoklund Olesen authored
      RAFast must add an <imp-def> operand when it is rewriting a sub-register
      def that isn't a read-modify-write.
      
      llvm-svn: 156777
      dc2e0cd4
    • Chad Rosier's avatar
      Move the capture analysis from MemoryDependencyAnalysis to a more general place · a968caf8
      Chad Rosier authored
      so that it can be reused in MemCpyOptimizer.  This analysis is needed to remove
      an unnecessary memcpy when returning a struct into a local variable.
      rdar://11341081
      PR12686
      
      llvm-svn: 156776
      a968caf8
    • Brendon Cahoon's avatar
      Revert 156634 upon request until code improvement changes are made. · f6b687e5
      Brendon Cahoon authored
      llvm-svn: 156775
      f6b687e5
    • Dan Gohman's avatar
      Rename @llvm.debugger to @llvm.debugtrap. · 164fe18c
      Dan Gohman authored
      llvm-svn: 156774
      164fe18c
    • Akira Hatanaka's avatar
      Release notes for MIPS backend. · 67c09afa
      Akira Hatanaka authored
      llvm-svn: 156772
      67c09afa
    • Andrew Trick's avatar
      Remove a stale forward declaration. · 31ee64d9
      Andrew Trick authored
      llvm-svn: 156770
      31ee64d9
    • Jakob Stoklund Olesen's avatar
      Remove the expensive BitVector::operator~(). · 77e7b8ed
      Jakob Stoklund Olesen authored
      Returning a temporary BitVector is very expensive. If you must, create
      the temporary explicitly: Use BitVector(A).flip() instead of ~A.
      
      llvm-svn: 156768
      77e7b8ed
    • Jakob Stoklund Olesen's avatar
      Remove BitVector binops. · 76680e9b
      Jakob Stoklund Olesen authored
      These operators were crazy slow, calling malloc to return a temporary
      result. At the same time, they look very innocent when used in code.
      
      If you need temporary BitVectors to compute your thing, create them
      explicitly, and use the inplace logical operators. This makes the high
      cost explicit in the code.
      
      llvm-svn: 156767
      76680e9b
    • Jakob Stoklund Olesen's avatar
      Consider ad hoc aliasing when building RegUnits. · 066fba1a
      Jakob Stoklund Olesen authored
      Register units can be used to compute if two registers overlap:
      
        A overlaps B iff units(A) intersects units(B).
      
      With this change, the above holds true even on targets that use ad hoc
      aliasing (currently only ARM). This means that register units can be
      used to implement regsOverlap() more efficiently, and the register
      allocator can use the concept to model interference.
      
      When there is no ad hoc aliasing, the register units correspond to the
      maximal cliques in the register overlap graph. This is optimal, no other
      register unit assignment can have fewer units.
      
      With ad hoc aliasing, weird things are possible, and we don't try too
      hard to compute the maximal cliques. The current approach is always
      correct, and it works very well (probably optimally) as long as the ad
      hoc aliasing doesn't have cliques larger than pairs. It seems unlikely
      that any target would need more.
      
      llvm-svn: 156763
      066fba1a
    • Jakob Stoklund Olesen's avatar
      Record the ad hoc aliasing graph in CodeGenRegister. · 534848b1
      Jakob Stoklund Olesen authored
      The ad hoc aliasing specified in the 'Aliases' list in .td files is
      currently only used by computeOverlaps(). It will soon be needed to
      build accurate register units as well, so build the undirected graph in
      CodeGenRegister::buildObjectGraph() instead.
      
      Aliasing is a symmetric relationship with only one direction specified
      in the .td files. Make sure both directions are represented in
      getExplicitAliases().
      
      llvm-svn: 156762
      534848b1
    • Jakob Stoklund Olesen's avatar
      Compute topological signatures of registers. · 50ecd0ff
      Jakob Stoklund Olesen authored
      TableGen creates new register classes and sub-register indices based on
      the sub-register structure present in the register bank. So far, it has
      been doing that on a per-register basis, but that is not very efficient.
      
      This patch teaches TableGen to compute topological signatures for
      registers, and use that to reduce the amount of redundant computation.
      Registers get the same TopoSig if they have identical sub-register
      structure.
      
      TopoSigs are not currently exposed outside TableGen.
      
      llvm-svn: 156761
      50ecd0ff
Loading