SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
  el:f32 @offset(0)
}

buf0 = struct @align(4) {
  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
}

main_out = struct @align(16) {
  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
}

%b1 = block {  # root
  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void -> %b2 {
  %b2 = block {
    %4:ptr<uniform, f32, read> = access %x_5, 0u, 1i, 0u
    %5:f32 = load %4
    %6:f32 = inverseSqrt %5
    %7:bool = lt %6, -1.0f
    if %7 [t: %b3, f: %b4] {  # if_1
      %b3 = block {  # true
        %8:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
        %9:f32 = load %8
        %10:vec4<f32> = construct %9
        store %x_GLF_color, %10
        exit_if  # if_1
      }
      %b4 = block {  # false
        %11:ptr<uniform, f32, read> = access %x_5, 0u, 1i, 0u
        %12:f32 = load %11
        %13:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
        %14:f32 = load %13
        %15:ptr<uniform, f32, read> = access %x_5, 0u, 0i, 0u
        %16:f32 = load %15
        %17:ptr<uniform, f32, read> = access %x_5, 0u, 1i, 0u
        %18:f32 = load %17
        %19:vec4<f32> = construct %12, %14, %16, %18
        store %x_GLF_color, %19
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b5 {
  %b5 = block {
    %21:void = call %main_1
    %22:vec4<f32> = load %x_GLF_color
    %23:main_out = construct %22
    ret %23
  }
}

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.  *
********************************************************************
