SKIP: FAILED

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

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

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

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

strided_arr_2 = struct @align(4) {
  el:u32 @offset(0)
}

buf1 = struct @align(4) {
  x_GLF_uniform_uint_values:array<strided_arr_2, 1> @offset(0)
}

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

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

%main_1 = func():void -> %b2 {
  %b2 = block {
    %a:ptr<function, u32, read_write> = var
    %b:ptr<function, i32, read_write> = var
    store %a, 0u
    %9:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
    %10:i32 = load %9
    store %b, %10
    %11:f32 = load_vector_element %gl_FragCoord, 0u
    %12:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
    %13:f32 = load %12
    %14:bool = lt %11, %13
    if %14 [t: %b3] {  # if_1
      %b3 = block {  # true
        %15:ptr<uniform, u32, read> = access %x_12, 0u, 0i, 0u
        %16:u32 = load %15
        %17:u32 = load %a
        %18:u32 = mod %16, %17
        %19:i32 = bitcast %18
        store %b, %19
        exit_if  # if_1
      }
    }
    %20:i32 = load %b
    %21:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
    %22:i32 = load %21
    %23:bool = eq %20, %22
    if %23 [t: %b4, f: %b5] {  # if_2
      %b4 = block {  # true
        %24:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
        %25:i32 = load %24
        %26:f32 = convert %25
        %27:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
        %28:i32 = load %27
        %29:f32 = convert %28
        %30:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
        %31:i32 = load %30
        %32:f32 = convert %31
        %33:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
        %34:i32 = load %33
        %35:f32 = convert %34
        %36:vec4<f32> = construct %26, %29, %32, %35
        store %x_GLF_color, %36
        exit_if  # if_2
      }
      %b5 = block {  # false
        %37:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
        %38:i32 = load %37
        %39:f32 = convert %38
        %40:vec4<f32> = construct %39
        store %x_GLF_color, %40
        exit_if  # if_2
      }
    }
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b6 {
  %b6 = block {
    store %gl_FragCoord, %gl_FragCoord_param
    %43:void = call %main_1
    %44:vec4<f32> = load %x_GLF_color
    %45:main_out = construct %44
    ret %45
  }
}

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