#include <metal_stdlib>

using namespace metal;

#define TINT_ISOLATE_UB(VOLATILE_NAME) \
  volatile bool VOLATILE_NAME = true; \
  if (VOLATILE_NAME)

struct tint_private_vars_struct {
  float2 v2f;
  int3 v3i;
  uint4 v4u;
  bool2 v2b;
};

void foo(thread tint_private_vars_struct* const tint_private_vars) {
  int i = 0;
  (*(tint_private_vars)).v2f[i] = 1.0f;
  (*(tint_private_vars)).v3i[i] = 1;
  (*(tint_private_vars)).v4u[i] = 1u;
  (*(tint_private_vars)).v2b[i] = true;
}

kernel void tint_symbol() {
  thread tint_private_vars_struct tint_private_vars = {};
  TINT_ISOLATE_UB(tint_volatile_true) for(int i = 0; (i < 2); i = as_type<int>((as_type<uint>(i) + as_type<uint>(1)))) {
    foo(&(tint_private_vars));
  }
  return;
}

