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

%main_1 = func():void {
  $B2: {
    %f:ptr<function, f32, read_write> = var
    %a:ptr<function, i32, read_write> = var
    store %f, 2.0f
    %6:f32 = load %f
    %x_27:f32 = let %6
    %8:f32 = clamp 1.0f, 1.0f, %x_27
    %9:f32 = sub 1.0f, %8
    %10:i32 = call %tint_f32_to_i32, %9
    store %a, %10
    %12:i32 = load %a
    %x_31:i32 = let %12
    %14:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
    %15:i32 = load %14
    %x_33:i32 = let %15
    %17:bool = eq %x_31, %x_33
    if %17 [t: $B3, f: $B4] {  # if_1
      $B3: {  # true
        %18:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
        %19:i32 = load %18
        %x_39:i32 = let %19
        %21:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
        %22:i32 = load %21
        %x_42:i32 = let %22
        %24:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
        %25:i32 = load %24
        %x_45:i32 = let %25
        %27:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
        %28:i32 = load %27
        %x_48:i32 = let %28
        %30:f32 = convert %x_39
        %31:f32 = let %30
        %32:f32 = convert %x_42
        %33:f32 = let %32
        %34:f32 = convert %x_45
        %35:f32 = let %34
        %36:f32 = convert %x_48
        %37:vec4<f32> = construct %31, %33, %35, %36
        store %x_GLF_color, %37
        exit_if  # if_1
      }
      $B4: {  # false
        %38:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
        %39:i32 = load %38
        %x_52:i32 = let %39
        %41:f32 = convert %x_52
        %x_53:f32 = let %41
        %43:vec4<f32> = construct %x_53, %x_53, %x_53, %x_53
        store %x_GLF_color, %43
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B5: {
    %45:void = call %main_1
    %46:vec4<f32> = load %x_GLF_color
    %47:main_out = construct %46
    ret %47
  }
}
%tint_f32_to_i32 = func(%value:f32):i32 {
  $B6: {
    %49:i32 = convert %value
    %50:bool = gte %value, -2147483648.0f
    %51:i32 = select -2147483648i, %49, %50
    %52:bool = lte %value, 2147483520.0f
    %53:i32 = select 2147483647i, %51, %52
    ret %53
  }
}

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