95d96cf06d
Dead Store Elimination (DSE) propagates "dead store" state backwards across basic blocks to predecessors. If place is defined in a loop (either its instance or index are defined in a loop), propagating "dead store" state across backedge of the loop is incorrect, as each loop iteration effectively has its own place. This bug is fixed by disabling propagation of "dead store" state beyond defining blocks of instance and index of a place. This is done by setting bits in "live_in" of the blocks corresponding to the instance and index definitions of a place. TEST=runtime/tests/vm/dart/regress_55607_test.dart Fixes https://github.com/dart-lang/sdk/issues/55607 Change-Id: I223ff433daa3d7bcafefc9d91360b16c9554964e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/365302 Commit-Queue: Alexander Markov <alexmarkov@google.com> Reviewed-by: Slava Egorov <vegorov@google.com>