SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
  %arg_0:ptr<handle, texture_2d<f32>, read> = var @binding_point(1, 0)
  %arg_1:ptr<handle, sampler, read> = var @binding_point(1, 1)
  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
}

%textureSampleBaseClampToEdge_9ca02c = func():void {
  $B2: {
    %5:texture_2d<f32> = load %arg_0
    %6:texture_2d<f32> = let %5
    %7:sampler = load %arg_1
    %8:sampler = let %7
    %9:vec2<u32> = textureDimensions %6
    %10:vec2<f32> = convert %9
    %11:vec2<f32> = div vec2<f32>(0.5f), %10
    %12:vec2<f32> = let %11
    %13:vec2<f32> = sub vec2<f32>(1.0f), %12
    %14:vec2<f32> = clamp vec2<f32>(1.0f), %12, %13
    %15:vec4<f32> = textureSampleLevel %6, %8, %14, 0.0f
    %res:ptr<function, vec4<f32>, read_write> = var, %15
    %17:vec4<f32> = load %res
    store %prevent_dce, %17
    ret
  }
}
%vertex_main = @vertex func():vec4<f32> [@position] {
  $B3: {
    %19:void = call %textureSampleBaseClampToEdge_9ca02c
    ret vec4<f32>(0.0f)
  }
}
%fragment_main = @fragment func():void {
  $B4: {
    %21:void = call %textureSampleBaseClampToEdge_9ca02c
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
  $B5: {
    %23:void = call %textureSampleBaseClampToEdge_9ca02c
    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.  *
********************************************************************
