Skip to content
  • Jakob Stoklund Olesen's avatar
    Keep track of which stage produced a live range, and bypass earlier stages when revisiting. · 5f9f081d
    Jakob Stoklund Olesen authored
    This effectively disables the 'turbo' functionality of the greedy register
    allocator where all new live ranges created by splitting would be reconsidered
    as if they were originals.
    
    There are two reasons for doing this, 1. It guarantees that the algorithm
    terminates. Early versions were prone to infinite looping in certain corner
    cases. 2. It is a 2x speedup. We can skip a lot of unnecessary interference
    checks that won't lead to good splitting anyway.
    
    The problem is that region splitting only gets one shot, so it should probably
    be changed to target multiple physical registers at once.
    
    Local live range splitting is still 'turbo' enabled. It only accounts for a
    small fraction of compile time, so it is probably not necessary to do anything
    about that.
    
    llvm-svn: 126781
    5f9f081d
Loading