[vm/compiler] Fix illegal code motion where LoadField is hoisted past CheckNull.
[vm/compiler] Fix illegal code motion where LoadField is hoisted past CheckNull.

Canonicalizer should not remove Redefinitions that have no uses before LICM
happens. Even though Redefinition itself has no uses it might be still
dominating uses of the original value - is we expect RenameUsesDominatedByRedefinitions
that is run before LICM to normalize the graph by routing those uses
through Redefinition.

Fixes https://github.com/dart-lang/sdk/issues/32322

Bug: 32322
Change-Id: Ice310aaf8ab62cd6d3ec575876c12e8634a91dce
Reviewed-on: https://dart-review.googlesource.com/44040
Reviewed-by: Alexander Markov <239e774fd29abc1267878f57afe1a8a03e0ca887@google.com>
Commit-Queue: Vyacheslav Egorov <72c81f38df725d8f1832acb9b5bb99563fc2f1b9@google.com>

dartino/dart-sdk,dart-archive/dart-sdk,dart-lang/sdk,dart-lang/sdk,dartino/dart-sdk,dartino/dart-sdk,dart-lang/sdk,dart-lang/sdk,dart-archive/dart-sdk,dart-lang/sdk,dart-lang/sdk,dart-lang/sdk,dart-lang/sdk,dartino/dart-sdk,dart-archive/dart-sdk,dart-archive/dart-sdk,dartino/dart-sdk,dart-archive/dart-sdk,dart-archive/dart-sdk,dartino/dart-sdk,dart-archive/dart-sdk,dartino/dart-sdk,dartino/dart-sdk,dart-archive/dart-sdk,dartino/dart-sdk,dart-archive/dart-sdk