<dawn>/test/tint/diagnostic_filtering/switch_statement_attribute.wgsl:7:27 warning: 'dpdx' must only be called from uniform control flow
  switch (i32(x == 0.0 && dpdx(1.0) == 0.0)) {
                          ^^^^^^^^^

<dawn>/test/tint/diagnostic_filtering/switch_statement_attribute.wgsl:7:15 note: control flow depends on possibly non-uniform value
  switch (i32(x == 0.0 && dpdx(1.0) == 0.0)) {
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

<dawn>/test/tint/diagnostic_filtering/switch_statement_attribute.wgsl:7:15 note: user-defined input 'x' of 'main' may be non-uniform
  switch (i32(x == 0.0 && dpdx(1.0) == 0.0)) {
              ^

#include <metal_stdlib>

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

void tint_symbol_inner(float x) {
  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);
  }
  switch(int(tint_symbol_1)) {
    default: {
      break;
    }
  }
}

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

