<dawn>/test/tint/diagnostic_filtering/for_loop_attribute.wgsl:5:21 warning: 'dpdx' must only be called from uniform control flow
  for (; x > v.x && dpdx(1.0) > 0.0; ) {
                    ^^^^^^^^^

<dawn>/test/tint/diagnostic_filtering/for_loop_attribute.wgsl:5:3 note: control flow depends on possibly non-uniform value
  for (; x > v.x && dpdx(1.0) > 0.0; ) {
  ^^^

<dawn>/test/tint/diagnostic_filtering/for_loop_attribute.wgsl:5:21 note: return value of 'dpdx' may be non-uniform
  for (; x > v.x && dpdx(1.0) > 0.0; ) {
                    ^^^^^^^^^

#include <metal_stdlib>

using namespace metal;

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

struct tint_symbol_4 {
  float x [[user(locn0)]];
};

void tint_symbol_inner(float x) {
  float4 v = float4(0.0f);
  TINT_ISOLATE_UB(tint_volatile_true) while(true) {
    bool tint_symbol_1 = (x > v[0]);
    if (tint_symbol_1) {
      float const tint_symbol_2 = dfdx(1.0f);
      tint_symbol_1 = (tint_symbol_2 > 0.0f);
    }
    if (!(tint_symbol_1)) {
      break;
    }
    {
    }
  }
}

fragment void tint_symbol(tint_symbol_4 tint_symbol_3 [[stage_in]]) {
  tint_symbol_inner(tint_symbol_3.x);
  return;
}

