blob: caf65ee9b748d5ef39903480fc7aa606ff2035fe [file] [log] [blame]
// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// VMOptions=--optimization_counter_threshold=1 --deterministic
// Regression test for https://github.com/dart-lang/sdk/issues/39520.
// Verifies that an attempt to inline SIMD shuffle operation doesn't
// result in incorrect IL.
import "package:expect/expect.dart";
import 'dart:typed_data';
class Foo {
bar() {
return Float32x4.zero().shuffleMix(Float32x4.zero(), -3);
// Although this code is unreachable, context is allocated
// for this closure. Context allocation is handled by
// allocation sinking, which explodes if an attempt to inline
// shuffleMix clobbered IL.
baz() => this;
}
}
main() {
Expect.throwsRangeError(() => new Foo().bar());
}