SKIP: FAILED

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

%textureGather_4b8103 = func():void {
  $B2: {
    %arg_3:ptr<function, vec2<f32>, read_write> = var, vec2<f32>(1.0f)
    %arg_4:ptr<function, i32, read_write> = var, 1i
    %7:texture_2d_array<f32> = load %arg_1
    %8:sampler = load %arg_2
    %9:vec2<f32> = load %arg_3
    %10:i32 = load %arg_4
    %11:vec4<f32> = textureGather 1i, %7, %8, %9, %10, vec2<i32>(1i)
    %res:ptr<function, vec4<f32>, read_write> = var, %11
    %13:vec4<f32> = load %res
    store %prevent_dce, %13
    ret
  }
}
%vertex_main = @vertex func():vec4<f32> [@position] {
  $B3: {
    %15:void = call %textureGather_4b8103
    ret vec4<f32>(0.0f)
  }
}
%fragment_main = @fragment func():void {
  $B4: {
    %17:void = call %textureGather_4b8103
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
  $B5: {
    %19:void = call %textureGather_4b8103
    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.  *
********************************************************************
