SKIP: FAILED

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

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