Skip to content
  • ram's avatar
    Moved tail-set merging here from IR1-OPTIMIZE-RETURN, since it wasn't being · 43bcbde3
    ram authored
    triggered reliably (and required IR1 optimization to run to completion for
    correctness.)  Now we merge tail sets whenever we convert a local call that
    delivers its value to a return (regardless of whether it is truly TR.)  This
    liberalization actually improves type inference: previously non-TR calls would
    mess up type inference.
    
    Now MERGE-TAIL-SETS must be called whenever IR1 is modified so that a local
    call is changed to be potentially tail recursive (i.e. deliver its value to a
    return.)  It seems that the only such place is in MAYBE-DELETE-EXIT in ir1opt.
    43bcbde3