SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: strided_arr = struct @align(4) {
  el:f32 @offset(0)
}

buf1 = struct @align(4) {
  x_GLF_uniform_float_values:array<strided_arr, 3> @offset(0)
}

strided_arr_1 = struct @align(4) {
  el:i32 @offset(0)
}

buf0 = struct @align(4) {
  x_GLF_uniform_int_values:array<strided_arr_1, 3> @offset(0)
}

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

$B1: {  # root
  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void {
  $B2: {
    %A1:ptr<function, array<f32, 3>, read_write> = var
    %a:ptr<function, i32, read_write> = var
    %b:ptr<function, f32, read_write> = var
    %c:ptr<function, bool, read_write> = var
    %x_36:ptr<function, bool, read_write> = var
    %10:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
    %11:f32 = load %10
    %12:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
    %13:f32 = load %12
    %14:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
    %15:f32 = load %14
    %16:array<f32, 3> = construct %11, %13, %15
    store %A1, %16
    %17:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
    %18:i32 = load %17
    %19:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
    %20:i32 = load %19
    %21:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
    %22:i32 = load %21
    %23:i32 = let %22
    %24:i32 = max %18, %20
    %25:i32 = min %24, %23
    store %a, %25
    %26:i32 = load %a
    %27:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
    %28:i32 = load %27
    %29:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
    %30:i32 = load %29
    %31:i32 = let %30
    %32:i32 = max %26, %28
    %33:i32 = min %32, %31
    %34:ptr<function, f32, read_write> = access %A1, %33
    %35:f32 = load %34
    store %b, %35
    %36:f32 = load %b
    %37:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
    %38:i32 = load %37
    %39:ptr<function, f32, read_write> = access %A1, %38
    %40:f32 = load %39
    %41:bool = lt %36, %40
    if %41 [t: $B3, f: $B4] {  # if_1
      $B3: {  # true
        %42:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
        %43:f32 = load %42
        %44:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
        %45:f32 = load %44
        %46:bool = gt %43, %45
        store %x_36, %46
        exit_if  # if_1
      }
      $B4: {  # false
        %47:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
        %48:f32 = load %47
        %49:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
        %50:i32 = load %49
        %51:ptr<function, f32, read_write> = access %A1, %50
        %52:f32 = load %51
        %53:bool = lt %48, %52
        store %x_36, %53
        exit_if  # if_1
      }
    }
    %54:bool = load %x_36
    store %c, %54
    %55:bool = load %c
    if %55 [t: $B5, f: $B6] {  # if_2
      $B5: {  # true
        %56:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
        %57:i32 = load %56
        %58:f32 = convert %57
        %59:f32 = let %58
        %60:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
        %61:i32 = load %60
        %62:f32 = convert %61
        %63:f32 = let %62
        %64:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
        %65:i32 = load %64
        %66:f32 = convert %65
        %67:f32 = let %66
        %68:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
        %69:i32 = load %68
        %70:f32 = convert %69
        %71:vec4<f32> = construct %59, %63, %67, %70
        store %x_GLF_color, %71
        exit_if  # if_2
      }
      $B6: {  # false
        %72:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
        %73:f32 = load %72
        %74:vec4<f32> = construct %73
        store %x_GLF_color, %74
        exit_if  # if_2
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B7: {
    %76:void = call %main_1
    %77:vec4<f32> = load %x_GLF_color
    %78:main_out = construct %77
    ret %78
  }
}

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