97369d0903
Speculative and non-speculative shift instructions have different representations of RHS input, so canonicalization of multiplication into a shift should account for that. Also, mark BinaryUint32Op instruction as always non-speculative - it never needs to speculate as it is inserted by range analysis after it can prove that it is valid to perform Uint32 op. This prevents insertion of a speculative shift instruction in AOT when BinaryUint32Op multiplication is canonicalized. Fixes https://github.com/dart-lang/sdk/issues/55003 TEST=vm/dart/regress_55003_test Change-Id: Ib1805ce2dc0e6f514e6f3b4a09be08808e75048b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/355820 Reviewed-by: Slava Egorov <vegorov@google.com> Commit-Queue: Alexander Markov <alexmarkov@google.com>