SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:469 internal compiler error: %b1 = block {  # root
  %arg_0:ptr<handle, texture_depth_cube, read> = var @binding_point(1, 0)
  %arg_1:ptr<handle, sampler_comparison, read> = var @binding_point(1, 1)
  %prevent_dce:ptr<storage, vec4<f32>, read_write> = var @binding_point(2, 0)
}

%textureGatherCompare_182fd4 = func():void -> %b2 {
  %b2 = block {
    %arg_2:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
    %arg_3:ptr<function, f32, read_write> = var, 1.0f
    %7:texture_depth_cube = load %arg_0
    %8:sampler_comparison = load %arg_1
    %9:vec3<f32> = load %arg_2
    %10:f32 = load %arg_3
    %11:vec4<f32> = textureGatherCompare %7, %8, %9, %10
    %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 {
  %b3 = block {
    %15:void = call %textureGatherCompare_182fd4
    ret vec4<f32>(0.0f)
  }
}
%fragment_main = @fragment func():void -> %b4 {
  %b4 = block {
    %17:void = call %textureGatherCompare_182fd4
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
  %b5 = block {
    %19:void = call %textureGatherCompare_182fd4
    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.  *
********************************************************************
