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

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

<dawn>/test/tint/diagnostic_filtering/while_loop_attribute.wgsl:5:21 note: return value of 'dpdx' may be non-uniform
  while (x > 0.0 && 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 > 0.0f);
    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;
}

