SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 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: {  # 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: {
    %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: {  # true
        %15:ptr<uniform, u32, read> = access %x_12, 0u, 0i, 0u
        %16:u32 = load %15
        %17:u32 = load %a
        %18:u32 = call %tint_mod_u32, %16, %17
        %20:i32 = bitcast %18
        store %b, %20
        exit_if  # if_1
      }
    }
    %21:i32 = load %b
    %22:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
    %23:i32 = load %22
    %24:bool = eq %21, %23
    if %24 [t: $B4, f: $B5] {  # if_2
      $B4: {  # true
        %25:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
        %26:i32 = load %25
        %27:f32 = convert %26
        %28:f32 = let %27
        %29:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
        %30:i32 = load %29
        %31:f32 = convert %30
        %32:f32 = let %31
        %33:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
        %34:i32 = load %33
        %35:f32 = convert %34
        %36:f32 = let %35
        %37:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
        %38:i32 = load %37
        %39:f32 = convert %38
        %40:vec4<f32> = construct %28, %32, %36, %39
        store %x_GLF_color, %40
        exit_if  # if_2
      }
      $B5: {  # false
        %41:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
        %42:i32 = load %41
        %43:f32 = convert %42
        %44:vec4<f32> = construct %43
        store %x_GLF_color, %44
        exit_if  # if_2
      }
    }
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
  $B6: {
    store %gl_FragCoord, %gl_FragCoord_param
    %47:void = call %main_1
    %48:vec4<f32> = load %x_GLF_color
    %49:main_out = construct %48
    ret %49
  }
}
%tint_mod_u32 = func(%lhs:u32, %rhs:u32):u32 {
  $B7: {
    %52:bool = eq %rhs, 0u
    %53:u32 = select %rhs, 1u, %52
    %54:u32 = let %53
    %55:u32 = div %lhs, %54
    %56:u32 = mul %55, %54
    %57:u32 = sub %lhs, %56
    ret %57
  }
}

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