#include <metal_stdlib>

using namespace metal;
int f(int x) {
  if ((x == 10)) {
    discard_fragment();
  }
  return x;
}

struct tint_symbol_2 {
  int3 x [[user(locn1)]] [[flat]];
};

struct tint_symbol_3 {
  int value [[color(2)]];
};

int tint_symbol_inner(int3 x) {
  int y = x[0];
  while (true) {
    int const r = f(y);
    if ((r == 0)) {
      break;
    }
  }
  return y;
}

fragment tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
  int const inner_result = tint_symbol_inner(tint_symbol_1.x);
  tint_symbol_3 wrapper_result = {};
  wrapper_result.value = inner_result;
  return wrapper_result;
}

