<dawn>/test/tint/diagnostic_filtering/for_loop_body_attribute.wgsl:8:9 warning: 'textureSample' must only be called from uniform control flow
    v = textureSample(t, s, vec2(0, 0));
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

<dawn>/test/tint/diagnostic_filtering/for_loop_body_attribute.wgsl:7:3 note: control flow depends on possibly non-uniform value
  for (; x > v.x; ) @diagnostic(warning, derivative_uniformity) {
  ^^^

<dawn>/test/tint/diagnostic_filtering/for_loop_body_attribute.wgsl:8:9 note: return value of 'textureSample' may be non-uniform
    v = textureSample(t, s, vec2(0, 0));
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

#include <metal_stdlib>
using namespace metal;
struct tint_module_vars_struct {
  texture2d<float, access::sample> t;
  sampler s;
};
struct tint_symbol_inputs {
  float x [[user(locn0)]];
};

void tint_symbol_inner(float x, tint_module_vars_struct tint_module_vars) {
  float4 v = float4(0.0f);
  {
    while(true) {
      if ((x > v[0u])) {
      } else {
        break;
      }
      v = tint_module_vars.t.sample(tint_module_vars.s, float2(0.0f));
      {
      }
      continue;
    }
  }
}
fragment void tint_symbol(tint_symbol_inputs inputs [[stage_in]], texture2d<float, access::sample> t [[texture(0)]], sampler s [[sampler(0)]]) {
  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.t=t, .s=s};
  tint_symbol_inner(inputs.x, tint_module_vars);
}
