Skip to content
  • Jakob Stoklund Olesen's avatar
    Add an interface for SplitKit complement spill modes. · eecb2fb1
    Jakob Stoklund Olesen authored
    SplitKit always computes a complement live range to cover the places
    where the original live range was live, but no explicit region has been
    allocated.
    
    Currently, the complement live range is created to be as small as
    possible - it never overlaps any of the regions.  This minimizes
    register pressure, but if the complement is going to be spilled anyway,
    that is not very important.  The spiller will eliminate redundant
    spills, and hoist others by making the spill slot live range overlap
    some of the regions created by splitting.  Stack slots are cheap.
    
    This patch adds the interface to enable spill modes in SplitKit.  In
    spill mode, SplitKit will assume that the complement is going to spill,
    so it will allow it to overlap regions in order to avoid back-copies.
    By doing some of the spiller's work early, the complement live range
    becomes simpler.  In some cases, it can become much simpler because no
    extra PHI-defs are required.  This will speed up both splitting and
    spilling.
    
    This is only the interface to enable spill modes, no implementation yet.
    
    llvm-svn: 139500
    eecb2fb1
Loading