SKIP: FAILED

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

%textureLoad_6273b1 = func():void {
  $B2: {
    %4:texture_depth_multisampled_2d = load %arg_0
    %5:f32 = textureLoad %4, vec2<i32>(1i), 1i
    %res:ptr<function, f32, read_write> = var, %5
    %7:f32 = load %res
    store %prevent_dce, %7
    ret
  }
}
%vertex_main = @vertex func():vec4<f32> [@position] {
  $B3: {
    %9:void = call %textureLoad_6273b1
    ret vec4<f32>(0.0f)
  }
}
%fragment_main = @fragment func():void {
  $B4: {
    %11:void = call %textureLoad_6273b1
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
  $B5: {
    %13:void = call %textureLoad_6273b1
    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.  *
********************************************************************
