SKIP: FAILED

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

%textureLoad_d85d61 = func():void -> %b2 {
  %b2 = block {
    %arg_1:ptr<function, vec2<u32>, read_write> = var, vec2<u32>(1u)
    %5:texture_storage_2d<rgba32uint, read> = load %arg_0
    %6:vec2<u32> = load %arg_1
    %7:vec4<u32> = textureLoad %5, %6
    %res:ptr<function, vec4<u32>, read_write> = var, %7
    %9:vec4<u32> = load %res
    store %prevent_dce, %9
    ret
  }
}
%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
  %b3 = block {
    %11:void = call %textureLoad_d85d61
    ret vec4<f32>(0.0f)
  }
}
%fragment_main = @fragment func():void -> %b4 {
  %b4 = block {
    %13:void = call %textureLoad_d85d61
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
  %b5 = block {
    %15:void = call %textureLoad_d85d61
    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.  *
********************************************************************
