DescriptionVM: Fix illegal code motion.
Without tracking dependencies more explicitly we can't propagate the
cid of values whose cid is guarded by a CheckClassId:
The CheckClassId c may not be hoisted by LICM because it is guarded
by a Redefinition r. However, after constant propagation and branch simplification
code that was not previously dominated by c (and r) may become dominated by c and r.
This code won't be using the redefined value r, but the original value and therefore
LICM can illegally eliminated checks / hoist dependent loads.
BUG=
R=vegorov@google.com
Committed: https://github.com/dart-lang/sdk/commit/b043314bce0e18e4b87f736d672f6b8dd60ccd6e
Patch Set 1 #
Messages
Total messages: 6 (2 generated)
|