#include <metal_stdlib>

using namespace metal;

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

kernel void tint_symbol() {
  float2 v2f = 0.0f;
  float3 v3f = 0.0f;
  float4 v4f = 0.0f;
  int2 v2i = 0;
  int3 v3i = 0;
  int4 v4i = 0;
  uint2 v2u = 0u;
  uint3 v3u = 0u;
  uint4 v4u = 0u;
  bool2 v2b = false;
  bool3 v3b = false;
  bool4 v4b = false;
  TINT_ISOLATE_UB(tint_volatile_true) for(int i = 0; (i < 2); i = as_type<int>((as_type<uint>(i) + as_type<uint>(1)))) {
    v2f[i] = 1.0f;
    v2i[i] = 1;
    v2u[i] = 1u;
    v2b[i] = true;
  }
  int i = 0;
  v3f[i] = 1.0f;
  v4f[i] = 1.0f;
  v3i[i] = 1;
  v4i[i] = 1;
  v3u[i] = 1u;
  v4u[i] = 1u;
  v3b[i] = true;
  v4b[i] = true;
  return;
}

