SKIP: FAILED

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

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