SKIP: FAILED

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

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

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

$B1: {  # root
  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void {
  $B2: {
    %5:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
    %6:f32 = load %5
    %x_35:f32 = let %6
    %8:f32 = load_vector_element %gl_FragCoord, 0u
    %9:bool = gt %8, %x_35
    if %9 [t: $B3] {  # if_1
      $B3: {  # true
        %10:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
        %11:f32 = load %10
        %12:vec4<f32> = construct %11
        store %x_GLF_color, %12
        %13:f32 = load_vector_element %gl_FragCoord, 1u
        %14:bool = gt %13, %x_35
        if %14 [t: $B4] {  # if_2
          $B4: {  # true
            %15:ptr<uniform, f32, read> = access %x_6, 0u, 4i, 0u
            %16:f32 = load %15
            %17:vec4<f32> = construct %16
            store %x_GLF_color, %17
            exit_if  # if_2
          }
        }
        %18:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
        %19:f32 = load %18
        %20:vec4<f32> = construct %19
        store %x_GLF_color, %20
        exit_if  # if_1
      }
    }
    %21:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
    %22:f32 = load %21
    %x_54:f32 = let %22
    %24:vec4<f32> = construct %x_35, %x_54, %x_54, 10.0f
    store %x_GLF_color, %24
    %25:vec4<f32> = construct %x_35, 0.0f, 0.0f, 0.0f
    %26:vec4<f32> = let %25
    %27:vec4<f32> = construct 0.0f, %x_35, 0.0f, 0.0f
    %28:vec4<f32> = let %27
    %29:vec4<f32> = construct 0.0f, 0.0f, %x_35, 0.0f
    %30:vec4<f32> = let %29
    %31:vec4<f32> = construct 0.0f, 0.0f, 0.0f, %x_35
    %32:mat4x4<f32> = construct %26, %28, %30, %31
    %33:vec4<f32> = load %x_GLF_color
    %34:vec4<f32> = mul %32, %33
    store %x_GLF_color, %34
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
  $B5: {
    store %gl_FragCoord, %gl_FragCoord_param
    %37:void = call %main_1
    %38:vec4<f32> = load %x_GLF_color
    %39:main_out = construct %38
    ret %39
  }
}

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