|  | // 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()); | 
|  | } |