Skip to content
  1. Mar 19, 2011
  2. Mar 18, 2011
    • Jim Grosbach's avatar
      Beginnings of MC-JIT code generation. · 7b162490
      Jim Grosbach authored
      Proof-of-concept code that code-gens a module to an in-memory MachO object.
      This will be hooked up to a run-time dynamic linker library (see: llvm-rtdyld
      for similarly conceptual work for that part) which will take the compiled
      object and link it together with the rest of the system, providing back to the
      JIT a table of available symbols which will be used to respond to the
      getPointerTo*() queries.
      
      llvm-svn: 127916
      7b162490
    • Jakob Stoklund Olesen's avatar
      Extend live debug values down the dominator tree by following copies. · 816f5f4c
      Jakob Stoklund Olesen authored
      The llvm.dbg.value intrinsic refers to SSA values, not virtual registers, so we
      should be able to extend the range of a value by tracking that value through
      register copies. This greatly improves the debug value tracking for function
      arguments that for some reason are copied to a second virtual register at the
      end of the entry block.
      
      We only extend the debug value range where its register is killed. All original
      llvm.dbg.value locations are still respected.
      
      Copies from physical registers are ignored. That should not be a problem since
      the entry block already adds DBG_VALUE instructions for the virtual registers
      holding the function arguments.
      
      llvm-svn: 127912
      816f5f4c
    • Jakob Stoklund Olesen's avatar
      Hoist spills when the same value is known to be in less loopy sibling registers. · 27320cb8
      Jakob Stoklund Olesen authored
      Stack slot real estate is virtually free compared to registers, so it is
      advantageous to spill earlier even though the same value is now kept in both a
      register and a stack slot.
      
      Also eliminate redundant spills by extending the stack slot live range
      underneath reloaded registers.
      
      This can trigger a dead code elimination, removing copies and even reloads that
      were only feeding spills.
      
      llvm-svn: 127868
      27320cb8
    • Jakob Stoklund Olesen's avatar
      Accept instructions that read undefined values. · fdc09941
      Jakob Stoklund Olesen authored
      This is not supposed to happen, but I have seen the x86 rematter getting
      confused when rematerializing partial redefs.
      
      llvm-svn: 127857
      fdc09941
    • Jakob Stoklund Olesen's avatar
      Be more accurate about the slot index reading a register when dealing with defs · c099dde9
      Jakob Stoklund Olesen authored
      and early clobbers.
      
      Assert when trying to find an undefined value.
      
      llvm-svn: 127856
      c099dde9
  3. Mar 17, 2011
  4. Mar 16, 2011
  5. Mar 15, 2011
  6. Mar 14, 2011
  7. Mar 13, 2011
  8. Mar 12, 2011
    • Duncan Sands's avatar
      Speculatively revert commit 127478 (jsjodin) in an attempt to fix the · b847bf54
      Duncan Sands authored
      llvm-gcc-i386-linux-selfhost and llvm-x86_64-linux-checks buildbots.
      The original log entry:
      Remove optimization emitting a reference insted of label difference, since
      it can create more relocations. Removed isBaseAddressKnownZero method,
      because it is no longer used.
      
      llvm-svn: 127540
      b847bf54
    • Jakob Stoklund Olesen's avatar
      Include snippets in the live stack interval. · e77005ef
      Jakob Stoklund Olesen authored
      llvm-svn: 127530
      e77005ef
    • Jakob Stoklund Olesen's avatar
      Spill multiple registers at once. · a86595e0
      Jakob Stoklund Olesen authored
      Live range splitting can create a number of small live ranges containing only a
      single real use. Spill these small live ranges along with the large range they
      are connected to with copies. This enables memory operand folding and maximizes
      the spill to fill distance.
      
      Work in progress with known bugs.
      
      llvm-svn: 127529
      a86595e0
    • Jakob Stoklund Olesen's avatar
      That's it, I am declaring this a failure of the C++03 STL. · dae1dc1f
      Jakob Stoklund Olesen authored
      There are too many compatibility problems with using mixed types in
      std::upper_bound, and I don't want to spend 110 lines of boilerplate setting up
      a call to a 10-line function. Binary search is not /that/ hard to implement
      correctly.
      
      I tried terminating the binary search with a linear search, but that actually
      made the algorithm slower against my expectation. Most live intervals have less
      than 4 segments. The early test against endIndex() does pay, and this version is
      25% faster than plain std::upper_bound().
      
      llvm-svn: 127522
      dae1dc1f
  9. Mar 11, 2011
Loading