• Tobias Tebbi's avatar
    Reland^4 "[turbofan] eagerly prune None types and deadness from the graph" · 1cee0e01
    Tobias Tebbi authored
    This fixes https://bugs.chromium.org/p/chromium/issues/detail?id=773954.
    The issue was that in the EffectControlLinearizer, the effect input of an
    {Unreachable} node was not updated, leaving a {Checkpoint} behind.
    
    This is a reland of 4cf47645
    Original change's description:
    > Reland^3 "[turbofan] eagerly prune None types and deadness from the graph"
    > 
    > This fixes the issues 
    > https://bugs.chromium.org/p/chromium/issues/detail?id=772873 
    > and https://bugs.chromium.org/p/chromium/issues/detail?id=772872.
    > 
    > One problem was that mutating an effect node into Unreachable confused 
    > the LoadElimination sidetables, so I just always create a new node now.
    > 
    > The other problem was that UpdateBlockControl() was executed after 
    > UpdateEffectPhi() in the lazy case. This reverted the update to the Merge input.
    > So now I make sure that UpdateEffectPhi() is always executed last.
    > 
    > This is a reland of 6ddb5e7d
    > Original change's description:
    > > Reland^2 "[turbofan] eagerly prune None types and deadness from the graph"
    > > 
    > > Now, the EffectControlLinearizer connects all occurrences of Unreachable to the 
    > > graph end. This fixes issues with later phases running DeadCodeElimination and
    > > introducing new DeadValue nodes when processing uses of Unreachable.
    > > 
    > > This is a reland of 3c4bc27f
    > > Original change's description:
    > > > Reland "[turbofan] eagerly prune None types and deadness from the graph"
    > > > 
    > > > This is a reland of e1cdda25
    > > > Original change's description:
    > > > > [turbofan] eagerly prune None types and deadness from the graph
    > > > > 
    > > > > In addition to using the {Dead} node to prune dead control nodes and nodes that 
    > > > > depend on them, we introduce a {DeadValue} node representing an impossible value 
    > > > > that can occur at any position in the graph. The extended {DeadCodeElimination}
    > > > > prunes {DeadValue} and its uses, inserting a crashing {Unreachable} node into
    > > > > the effect chain when possible. The remaining uses of {DeadValue} are handled
    > > > > in {EffectControlLinearizer}, where we always have access to the effect chain.
    > > > > In addition to explicitly introduced {DeadValue} nodes, we consider any value use
    > > > > of a node with type {None} as dead.
    > > > > 
    > > > > Bug: chromium:741225
    > > > > Change-Id: Icc4b636d1d018c452ba1a2fa7cd3e00e522f1655
    > > > > Reviewed-on: https://chromium-review.googlesource.com/641250
    > > > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
    > > > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
    > > > > Cr-Commit-Position: refs/heads/master@{#48208}
    > > > 
    > > > Bug: chromium:741225
    > > > Change-Id: I21316913dae02864f7a6d7c9269405a79f054138
    > > > Reviewed-on: https://chromium-review.googlesource.com/692034
    > > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
    > > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
    > > > Cr-Commit-Position: refs/heads/master@{#48232}
    > > 
    > > Bug: chromium:741225
    > > Change-Id: I5702ec34856c075717162153adc765774453c45f
    > > Reviewed-on: https://chromium-review.googlesource.com/702264
    > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
    > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
    > > Cr-Commit-Position: refs/heads/master@{#48366}
    > 
    > Bug: chromium:741225
    > Change-Id: I4054a694d2521c2e1f0c4a3ad0f3cf100b5c536f
    > Reviewed-on: https://chromium-review.googlesource.com/709214
    > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
    > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#48469}
    
    Bug: chromium:741225
    Change-Id: Id9d4f3a3ae36cb3e38f80edcdba88efa7922ca24
    Reviewed-on: https://chromium-review.googlesource.com/715716Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
    Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
    Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#48660}
    1cee0e01
instruction-selector.h 18.9 KB