// 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.

// @dart = 2.9

// VMOptions=--deterministic

// Issue #37622 found with fuzzing: internal compiler crash (division-by-zero).

import 'dart:typed_data';

import "package:expect/expect.dart";

@pragma('vm:never-inline')
int foo() {
  int x = 0;
  {
    int loc0 = 67;
    while (--loc0 > 0) {
      --loc0;
      x += (4 ~/ (Int32x4.wxwx >> loc0));
      --loc0;
      --loc0;
    }
  }
}

main() {
  int x = 0;
  bool d = false;
  try {
    x = foo();
  } on UnsupportedError catch (e) {
    d = true;
  }
  Expect.equals(x, 0);
  Expect.isTrue(d);
}
