Skip to content
  • Jay Foad's avatar
    Change how PHINodes store their operands. · e03c05c3
    Jay Foad authored
    Change PHINodes to store simple pointers to their incoming basic blocks,
    instead of full-blown Uses.
    
    Note that this loses an optimization in SplitCriticalEdge(), because we
    can no longer walk the use list of a BasicBlock to find phi nodes. See
    the comment I removed starting "However, the foreach loop is slow for
    blocks with lots of predecessors".
    
    Extend replaceAllUsesWith() on a BasicBlock to also update any phi
    nodes in the block's successors. This mimics what would have happened
    when PHINodes were proper Users of their incoming blocks. (Note that
    this only works if OldBB->replaceAllUsesWith(NewBB) is called when
    OldBB still has a terminator instruction, so it still has some
    successors.)
    
    llvm-svn: 133435
    e03c05c3
Loading