SKIP: FAILED

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

%reflect_61ca21 = func():void {
  $B2: {
    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
    %arg_1:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
    %5:vec3<f16> = load %arg_0
    %6:vec3<f16> = load %arg_1
    %7:vec3<f16> = reflect %5, %6
    %res:ptr<function, vec3<f16>, read_write> = var, %7
    %9:vec3<f16> = load %res
    store %prevent_dce, %9
    ret
  }
}
%vertex_main = @vertex func():vec4<f32> [@position] {
  $B3: {
    %11:void = call %reflect_61ca21
    ret vec4<f32>(0.0f)
  }
}
%fragment_main = @fragment func():void {
  $B4: {
    %13:void = call %reflect_61ca21
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
  $B5: {
    %15:void = call %reflect_61ca21
    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.  *
********************************************************************
