/*
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
struct S1 {
  int f[2];
};

void array_field_access_Good(struct S1 x, struct S1 y) {
  int a[10];
  x.f[0] = 1;
  y.f[0] = 20;
  a[x.f[0]] = 0;
}

void array_field_access_Bad(struct S1 x, struct S1 y) {
  int a[10];
  y.f[0] = 20;
  x.f[0] = 1;
  a[y.f[0]] = 0;
}

void decreasing_pointer_Good(struct S1* x) {
  int* p = &(x->f[1]);
  p--;
  *p = 0;
}

void decreasing_pointer_Bad(struct S1* x) {
  int* p = &(x->f[1]);
  p--;
  p--;
  *p = 0;
}