SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:469 internal compiler error: %b1 = block {  # root
  %arg_1:ptr<handle, texture_2d<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_5266da = func():void -> %b2 {
  %b2 = block {
    %5:texture_2d<f32> = load %arg_1
    %6:sampler = load %arg_2
    %7:vec4<f32> = textureGather 1i, %5, %6, vec2<f32>(1.0f)
    %res:ptr<function, vec4<f32>, read_write> = var, %7
    %9:vec4<f32> = load %res
    store %prevent_dce, %9
    ret
  }
}
%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
  %b3 = block {
    %11:void = call %textureGather_5266da
    ret vec4<f32>(0.0f)
  }
}
%fragment_main = @fragment func():void -> %b4 {
  %b4 = block {
    %13:void = call %textureGather_5266da
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
  %b5 = block {
    %15:void = call %textureGather_5266da
    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.  *
********************************************************************
