#include <metal_stdlib>

using namespace metal;
struct tint_private_vars_struct {
  uint t;
};

uint m(thread tint_private_vars_struct* const tint_private_vars) {
  (*(tint_private_vars)).t = 1u;
  return uint((*(tint_private_vars)).t);
}

void f(thread tint_private_vars_struct* const tint_private_vars) {
  uint const tint_symbol = m(tint_private_vars);
  int v = int(tint_symbol);
}

