intrinsics/gen/ignore/b469af.wgsl:29:3 warning: use of deprecated intrinsic
  ignore(arg_0);
  ^^^^^^

#include <metal_stdlib>

using namespace metal;
struct tint_symbol {
  float4 value [[position]];
};

void ignore_b469af(sampler tint_symbol_1) {
  (void) tint_symbol_1;
}

float4 vertex_main_inner(sampler tint_symbol_2) {
  ignore_b469af(tint_symbol_2);
  return float4();
}

vertex tint_symbol vertex_main(sampler tint_symbol_3 [[sampler(0)]]) {
  float4 const inner_result = vertex_main_inner(tint_symbol_3);
  tint_symbol wrapper_result = {};
  wrapper_result.value = inner_result;
  return wrapper_result;
}

fragment void fragment_main(sampler tint_symbol_4 [[sampler(0)]]) {
  ignore_b469af(tint_symbol_4);
  return;
}

kernel void compute_main(sampler tint_symbol_5 [[sampler(0)]]) {
  ignore_b469af(tint_symbol_5);
  return;
}

