Skip to content
  • benl's avatar
    Add iterative coalescing to graph coloring allocator · 12d0b388
    benl authored
    Iterative coalescing interleaves conservative coalesing with the regular
    simplify/scan passes. This increases the chance that nodes will be coalesced
    as they will have a lower degree than at the beginning of simplify. The end
    result is that more register to register moves will be eliminated in the
    output code, though the iterative nature of the algorithm makes it slower
    compared to non-iterative coloring.
    
    Use -fregs-iterative  for graph coloring allocation with iterative coalescing
        -fregs-graph      for non-iterative coalescing.
    
    The plan is for iterative coalescing to be enabled with -O2 and have a 
    quicker, non-iterative algorithm otherwise. The time/benefit tradeoff
    between iterative and not is still being tuned - optimal graph coloring
    is NP-hard, afterall..
    12d0b388