SKIP: FAILED

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

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

strided_arr_1 = struct @align(4) {
  el:f32 @offset(0)
}

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

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

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

%main_1 = func():void -> %b2 {
  %b2 = block {
    %v1:ptr<function, vec2<f32>, read_write> = var
    %x_54:ptr<function, bool, read_write> = var
    %x_55_phi:ptr<function, bool, read_write> = var
    %8:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
    %x_35:i32 = load %8
    %10:vec2<i32> = construct -1i, %x_35
    %11:vec2<f32> = bitcast %10
    %12:vec2<f32> = cos %11
    %13:vec2<f32> = cos %12
    store %v1, %13
    %x_41:f32 = load_vector_element %v1, 0u
    %15:vec4<f32> = construct %x_41, %x_41, %x_41, %x_41
    store %x_GLF_color, %15
    %x_44:f32 = load_vector_element %v1, 1u
    %17:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
    %x_46:f32 = load %17
    %x_47:bool = gt %x_44, %x_46
    store %x_55_phi, %x_47
    if %x_47 [t: %b3] {  # if_1
      %b3 = block {  # true
        %x_51:f32 = load_vector_element %v1, 1u
        %21:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
        %x_53:f32 = load %21
        %23:bool = lt %x_51, %x_53
        store %x_54, %23
        %24:bool = load %x_54
        store %x_55_phi, %24
        exit_if  # if_1
      }
    }
    %x_55:bool = load %x_55_phi
    if %x_55 [t: %b4, f: %b5] {  # if_2
      %b4 = block {  # true
        %26:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %x_60:i32 = load %26
        %28:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %x_63:i32 = load %28
        %30:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %x_66:i32 = load %30
        %32:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %x_69:i32 = load %32
        %34:f32 = convert %x_60
        %35:f32 = convert %x_63
        %36:f32 = convert %x_66
        %37:f32 = convert %x_69
        %38:vec4<f32> = construct %34, %35, %36, %37
        store %x_GLF_color, %38
        exit_if  # if_2
      }
      %b5 = block {  # false
        %39:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %x_73:i32 = load %39
        %x_74:f32 = convert %x_73
        %42:vec4<f32> = construct %x_74, %x_74, %x_74, %x_74
        store %x_GLF_color, %42
        exit_if  # if_2
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b6 {
  %b6 = block {
    %44:void = call %main_1
    %45:vec4<f32> = load %x_GLF_color
    %46:main_out = construct %45
    ret %46
  }
}

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