SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:469 internal compiler error: %b1 = block {  # root
  %prevent_dce:ptr<storage, vec2<f16>, read_write> = var @binding_point(2, 0)
}

%radians_fbacf0 = func():void -> %b2 {
  %b2 = block {
    %arg_0:ptr<function, vec2<f16>, read_write> = var, vec2<f16>(1.0h)
    %4:vec2<f16> = load %arg_0
    %5:vec2<f16> = radians %4
    %res:ptr<function, vec2<f16>, read_write> = var, %5
    %7:vec2<f16> = load %res
    store %prevent_dce, %7
    ret
  }
}
%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
  %b3 = block {
    %9:void = call %radians_fbacf0
    ret vec4<f32>(0.0f)
  }
}
%fragment_main = @fragment func():void -> %b4 {
  %b4 = block {
    %11:void = call %radians_fbacf0
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
  %b5 = block {
    %13:void = call %radians_fbacf0
    ret
  }
}

unhandled variable address space
********************************************************************
*  The tint shader compiler has encountered an unexpected error.   *
*                                                                  *
*  Please help us fix this issue by submitting a bug report at     *
*  crbug.com/tint with the source program that triggered the bug.  *
********************************************************************
