• Kevin Modzelewski's avatar
    Compute intra-BB liveness information · b887bc87
    Kevin Modzelewski authored
    When emitting frame information, we pass all currently-live
    variable names.  We clear dead register names at the end of
    every basic block, but for long basic blocks we can end up
    accumulating many temporary names (one per sub expression).
    This ends up hugely increasing the LLVM compilation times since
    we will pass hundreds of arguments to many different callsites.
    
    Now, we remove dead variable names as soon as they die.  (Note:
    user-visible names are always live since they can always be seen
    by the locals() function.)  This means that we pass many fewer values
    as frame arguments.
    
    A better solution will be to have a real bytecode language which
    encodes such liveness information, instead of mostly-having it and
    then discarding it.
    b887bc87
function_analysis.h 3.49 KB