SKIP: FAILED

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

%select_c41bd1 = func():void {
  $B2: {
    %res:ptr<function, vec4<bool>, read_write> = var, vec4<bool>(true)
    %4:vec4<bool> = load %res
    %5:vec4<bool> = eq %4, vec4<bool>(false)
    %6:bool = all %5
    %7:i32 = select 0i, 1i, %6
    store %prevent_dce, %7
    ret
  }
}
%vertex_main = @vertex func():vec4<f32> [@position] {
  $B3: {
    %9:void = call %select_c41bd1
    ret vec4<f32>(0.0f)
  }
}
%fragment_main = @fragment func():void {
  $B4: {
    %11:void = call %select_c41bd1
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
  $B5: {
    %13:void = call %select_c41bd1
    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.  *
********************************************************************
