SKIP: FAILED

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

%select_80a9a9 = func():void -> %b2 {
  %b2 = block {
    %arg_0:ptr<function, vec3<bool>, read_write> = var, vec3<bool>(true)
    %arg_1:ptr<function, vec3<bool>, read_write> = var, vec3<bool>(true)
    %arg_2:ptr<function, vec3<bool>, read_write> = var, vec3<bool>(true)
    %6:vec3<bool> = load %arg_0
    %7:vec3<bool> = load %arg_1
    %8:vec3<bool> = load %arg_2
    %9:vec3<bool> = select %6, %7, %8
    %res:ptr<function, vec3<bool>, read_write> = var, %9
    %11:vec3<bool> = load %res
    %12:vec3<bool> = eq %11, vec3<bool>(false)
    %13:bool = all %12
    %14:i32 = select 0i, 1i, %13
    store %prevent_dce, %14
    ret
  }
}
%vertex_main = @vertex func():vec4<f32> [@position] -> %b3 {
  %b3 = block {
    %16:void = call %select_80a9a9
    ret vec4<f32>(0.0f)
  }
}
%fragment_main = @fragment func():void -> %b4 {
  %b4 = block {
    %18:void = call %select_80a9a9
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b5 {
  %b5 = block {
    %20:void = call %select_80a9a9
    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.  *
********************************************************************
