SKIP: FAILED

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

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