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)
}

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

$B1: {  # root
  %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: {
    %a:ptr<function, i32, read_write> = var
    %5:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
    %6:i32 = load %5
    %x_24:i32 = let %6
    %8:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
    %9:i32 = load %8
    %x_26:i32 = let %9
    %11:i32 = max %x_26, 1i
    %12:i32 = max %x_24, %11
    store %a, %12
    %13:i32 = load %a
    %x_29:i32 = let %13
    %15:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
    %16:i32 = load %15
    %x_31:i32 = let %16
    %18:bool = eq %x_29, %x_31
    if %18 [t: $B3, f: $B4] {  # if_1
      $B3: {  # true
        %19:i32 = load %a
        %x_36:i32 = let %19
        %21:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %22:i32 = load %21
        %x_39:i32 = let %22
        %24:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %25:i32 = load %24
        %x_42:i32 = let %25
        %27:i32 = load %a
        %x_44:i32 = let %27
        %29:f32 = convert %x_36
        %30:f32 = let %29
        %31:f32 = convert %x_39
        %32:f32 = let %31
        %33:f32 = convert %x_42
        %34:f32 = let %33
        %35:f32 = convert %x_44
        %36:vec4<f32> = construct %30, %32, %34, %35
        store %x_GLF_color, %36
        exit_if  # if_1
      }
      $B4: {  # false
        %37:i32 = load %a
        %x_47:i32 = let %37
        %39:f32 = convert %x_47
        %x_48:f32 = let %39
        %41:vec4<f32> = construct %x_48, %x_48, %x_48, %x_48
        store %x_GLF_color, %41
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B5: {
    %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.  *
********************************************************************
