Skip to content
  • benl's avatar
    Do conservative coalescing in register allocator · a7f409e8
    benl authored
    Avoid coalescing nodes in the register conflict graph if the
    new node will not be trivially colorable. Also remove the
    front end aggressive coalescing pass.
      
    For typical Haskell code the graph coloring allocator now does
    about as well as the linear allocator.
      
    For code with a large amount of register pressure it does much
    better, but takes longer.
      
    For SHA1.lhs from darcs on x86
       
              spills    reloads    reg-reg-moves
              inserted   inserted  left in code   compile-time
      linear    1068      1311        229            7.69(s)
      graph      387       902        340           16.12(s)
    a7f409e8