Skip to content
  • Duncan Sands's avatar
    Fix PR3117: not all nodes being legalized. The · 445071c4
    Duncan Sands authored
    essential problem was that the DAG can contain
    random unused nodes which were never analyzed.
    When remapping a value of a node being processed,
    such a node may become used and need to be analyzed;
    however due to operands being transformed during
    analysis the node may morph into a different one.
    Users of the morphing node need to be updated, and
    this wasn't happening.  While there I added a bunch
    of documentation and sanity checks, so I (or some
    other poor soul) won't have to scratch their head
    over this stuff so long trying to remember how it
    was all supposed to work next time some obscure
    problem pops up!  The extra sanity checking exposed
    a few places where invariants weren't being preserved,
    so those are fixed too.  Since some of the sanity
    checking is expensive, I added a flag to turn it
    on.  It is also turned on when building with
    ENABLE_EXPENSIVE_CHECKS=1.
    
    llvm-svn: 60797
    445071c4
Loading