Skip to content
  • Jakob Stoklund Olesen's avatar
    Reapply r139247: Cache intermediate results during traceSiblingValue. · 278bf025
    Jakob Stoklund Olesen authored
    In some cases such as interpreters using indirectbr, the CFG can be very
    complicated, and live range splitting may be forced to insert a large
    number of phi-defs.  When that happens, traceSiblingValue can spend a
    lot of time zipping around in the CFG looking for defs and reloads.
    
    This patch causes more information to be cached in SibValues, and the
    cached values are used to terminate searches early.  This speeds up
    spilling by 20x in one interpreter test case.  For more typical code,
    this is just a 10% speedup of spilling.
    
    The previous version had bugs that caused miscompilations. They have
    been fixed.
    
    llvm-svn: 139378
    278bf025
Loading