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, 1> @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_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void {
  $B2: {
    %undefined:ptr<function, f32, read_write> = var
    %x_45:ptr<function, bool, read_write> = var
    %x_46:ptr<function, bool, read_write> = var
    store %undefined, 1.17520117759704589844f
    %8:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
    %9:i32 = load %8
    %10:bool = eq 1i, %9
    %x_38:bool = let %10
    store %x_46, %x_38
    %12:bool = eq %x_38, false
    if %12 [t: $B3] {  # if_1
      $B3: {  # true
        %13:f32 = load %undefined
        %14:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
        %15:f32 = load %14
        %16:bool = gt %13, %15
        store %x_45, %16
        %17:bool = load %x_45
        store %x_46, %17
        exit_if  # if_1
      }
    }
    %18:bool = load %x_46
    if %18 [t: $B4, f: $B5] {  # if_2
      $B4: {  # true
        %19:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %20:i32 = load %19
        %21:f32 = convert %20
        %22:f32 = let %21
        %23:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %24:i32 = load %23
        %25:f32 = convert %24
        %26:f32 = let %25
        %27:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %28:i32 = load %27
        %29:f32 = convert %28
        %30:f32 = let %29
        %31:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %32:i32 = load %31
        %33:f32 = convert %32
        %34:vec4<f32> = construct %22, %26, %30, %33
        store %x_GLF_color, %34
        exit_if  # if_2
      }
      $B5: {  # false
        %35:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %36:i32 = load %35
        %37:f32 = convert %36
        %38:vec4<f32> = construct %37
        store %x_GLF_color, %38
        exit_if  # if_2
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B6: {
    %40:void = call %main_1
    %41:vec4<f32> = load %x_GLF_color
    %42:main_out = construct %41
    ret %42
  }
}

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