SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 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: {  # root
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
}

%main_1 = func():void {
  $B2: {
    %a:ptr<function, f32, read_write> = var
    %6:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
    %7:i32 = load %6
    %x_10:i32 = let %7
    %9:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
    %10:i32 = load %9
    %x_11:i32 = let %10
    %12:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
    %13:i32 = load %12
    %x_12:i32 = let %13
    %15:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
    %16:i32 = load %15
    %x_13:i32 = let %16
    %18:f32 = convert %x_10
    %19:f32 = let %18
    %20:f32 = convert %x_11
    %21:f32 = let %20
    %22:f32 = convert %x_12
    %23:f32 = let %22
    %24:f32 = convert %x_13
    %25:vec4<f32> = construct %19, %21, %23, %24
    store %x_GLF_color, %25
    %26:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
    %27:f32 = load %26
    %x_45:f32 = let %27
    %29:f32 = div 1.0f, %x_45
    %30:f32 = floor %29
    %31:f32 = mul %x_45, %30
    %32:f32 = sub 1.0f, %31
    store %a, %32
    %33:f32 = load %a
    %x_47:f32 = let %33
    %35:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
    %36:f32 = load %35
    %x_49:f32 = let %36
    %38:bool = neq %x_47, %x_49
    if %38 [t: $B3] {  # if_1
      $B3: {  # true
        %39:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
        %40:f32 = load %39
        %x_54:f32 = let %40
        store_vector_element %x_GLF_color, 1u, %x_54
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B4: {
    %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.  *
********************************************************************
