SKIP: FAILED


fn modf_e38ae6(tint_symbol_2 : ptr<workgroup, f32>) {
  var res : f32 = modf(1.0, &(*(tint_symbol_2)));
}

struct tint_symbol {
  [[builtin(position)]]
  value : vec4<f32>;
};

[[stage(vertex)]]
fn vertex_main() -> tint_symbol {
  [[internal(disable_validation__function_var_storage_class)]] var<workgroup> tint_symbol_3 : f32;
  modf_e38ae6(&(tint_symbol_3));
  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
  return tint_symbol_1;
}

[[stage(fragment)]]
fn fragment_main() {
  [[internal(disable_validation__function_var_storage_class)]] var<workgroup> tint_symbol_4 : f32;
  modf_e38ae6(&(tint_symbol_4));
}

[[stage(compute)]]
fn compute_main() {
  [[internal(disable_validation__function_var_storage_class)]] var<workgroup> tint_symbol_5 : f32;
  modf_e38ae6(&(tint_symbol_5));
}

Failed to generate: error: Unknown import method: modf
