Skip to content
  1. Jan 10, 2011
  2. Jan 07, 2011
  3. Dec 18, 2010
    • Bill Wendling's avatar
      During local stack slot allocation, the materializeFrameBaseRegister function · 3fff1fd4
      Bill Wendling authored
      may be called. If the entry block is empty, the insertion point iterator will be
      the "end()" value. Calling ->getParent() on it (among others) causes problems.
      
      Modify materializeFrameBaseRegister to take the machine basic block and insert
      the frame base register at the beginning of that block. (It's very similar to
      what the code does all ready. The only difference is that it will always insert
      at the beginning of the entry block instead of after a previous materialization
      of the frame base register. I doubt that that matters here.)
      
      <rdar://problem/8782198>
      
      llvm-svn: 122104
      3fff1fd4
  4. Aug 31, 2010
    • Jim Grosbach's avatar
      Improve virtual frame base register allocation heuristics. · 365e931f
      Jim Grosbach authored
        1. Allocate them in the entry block of the function to enable function-wide
           re-use. The instructions to create them should be re-materializable, so
           there shouldn't be additional cost compared to creating them local
           to the basic blocks where they are used.
        2. Collect all of the frame index references for the function and sort them
           by the local offset referenced. Iterate over the sorted list to
           allocate the virtual base registers. This enables creation of base
           registers optimized for positive-offset access of frame references.
           (Note: This may be appropriate to later be a target hook to do the
           sorting in a target appropriate manner. For now it's done here for
           simplicity.)
      
      llvm-svn: 112609
      365e931f
  5. Aug 24, 2010
  6. Aug 23, 2010
  7. Aug 20, 2010
  8. Aug 19, 2010
  9. Aug 18, 2010
    • Jim Grosbach's avatar
      Add hook for re-using virtual base registers for local stack slot access. · e0e9b301
      Jim Grosbach authored
      Nothing fancy, just ask the target if any currently available base reg
      is in range for the instruction under consideration and use the first one
      that is. Placeholder ARM implementation simply returns false for now.
      
      ongoing saga of rdar://8277890
      
      llvm-svn: 111374
      e0e9b301
    • Jim Grosbach's avatar
      Add materialization of virtual base registers for frame indices allocated into · 3cf08661
      Jim Grosbach authored
      the local block. Resolve references to those indices to a new base register.
      For simplification and testing purposes, a new virtual base register is
      allocated for each frame index being resolved. The result is truly horrible,
      but correct, code that's good for exercising the new code paths.
      
      Next up is adding thumb1 support, which should be very simple. Following that
      will be adding base register re-use and implementing a reasonable ARM
      heuristic for when a virtual base register should be generated at all.
      
      llvm-svn: 111315
      3cf08661
  10. Aug 17, 2010
  11. Aug 16, 2010
  12. Aug 14, 2010
    • Jim Grosbach's avatar
      Add a local stack object block allocation pass. This is still an · a030fa52
      Jim Grosbach authored
      experimental pass that allocates locals relative to one another before
      register allocation and then assigns them to actual stack slots as a block
      later in PEI. This will eventually allow targets with limited index offset
      range to allocate additional base registers (not just FP and SP) to
      more efficiently reference locals, as well as handle situations where
      locals cannot be referenced via SP or FP at all (dynamic stack realignment
      together with variable sized objects, for example). It's currently
      incomplete and almost certainly buggy. Work in progress.
      
      Disabled by default and gated via the -enable-local-stack-alloc command
      line option.
      
      rdar://8277890
      
      llvm-svn: 111059
      a030fa52
Loading