struct S {
  a : array<vec4<i32>, 4>,
}

var<private> counter : i32;
fn foo() -> i32 {
  counter += 1;
  return counter;
}
fn bar() -> i32 {
  counter += 2;
  return counter;
}

fn main() {
  var x = S();
  let p = &x;
  // foo() and bar() should only be called once each.
  (*p).a[foo()][bar()] += 5;
}