SKIP: FAILED

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

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

buf2 = struct @align(4) {
  one:f32 @offset(0)
}

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

buf1 = struct @align(4) {
  x_GLF_uniform_int_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_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_11:ptr<uniform, buf2, read> = var @binding_point(0, 2)
  %x_13:ptr<uniform, buf1, read> = var @binding_point(0, 1)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void {
  $B2: {
    %f0:ptr<function, f32, read_write> = var
    %f1:ptr<function, f32, read_write> = var
    %f2:ptr<function, f32, read_write> = var
    %f3:ptr<function, f32, read_write> = var
    %10:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
    %11:f32 = load %10
    %x_36:f32 = let %11
    store %f0, %x_36
    %13:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
    %14:f32 = load %13
    %x_38:f32 = let %14
    %16:f32 = load %f0
    %x_39:f32 = let %16
    %18:f32 = pow %x_39, 4.0f
    %19:f32 = mul %x_38, %18
    store %f1, %19
    %20:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
    %21:f32 = load %20
    %x_43:f32 = let %21
    %23:f32 = load %f0
    %x_44:f32 = let %23
    %25:f32 = pow %x_44, 4.0f
    %26:f32 = mul %x_43, %25
    store %f2, %26
    %27:f32 = load %f1
    %x_47:f32 = let %27
    %29:f32 = load %f2
    %x_48:f32 = let %29
    %31:ptr<uniform, f32, read> = access %x_11, 0u
    %32:f32 = load %31
    %x_51:f32 = let %32
    %34:f32 = load %f0
    %x_53:f32 = let %34
    %36:f32 = sub %x_47, %x_48
    %37:f32 = sub %36, %x_51
    %38:f32 = add %37, %x_53
    %39:f32 = sqrt %38
    store %f3, %39
    %40:f32 = load %f3
    %x_56:f32 = let %40
    %42:ptr<uniform, i32, read> = access %x_13, 0u, 0i, 0u
    %43:i32 = load %42
    %x_59:i32 = let %43
    %45:i32 = call %tint_f32_to_i32, %x_56
    %47:bool = eq %45, %x_59
    if %47 [t: $B3, f: $B4] {  # if_1
      $B3: {  # true
        %48:ptr<uniform, i32, read> = access %x_13, 0u, 0i, 0u
        %49:i32 = load %48
        %x_65:i32 = let %49
        %51:ptr<uniform, i32, read> = access %x_13, 0u, 1i, 0u
        %52:i32 = load %51
        %x_68:i32 = let %52
        %54:ptr<uniform, i32, read> = access %x_13, 0u, 1i, 0u
        %55:i32 = load %54
        %x_71:i32 = let %55
        %57:ptr<uniform, i32, read> = access %x_13, 0u, 0i, 0u
        %58:i32 = load %57
        %x_74:i32 = let %58
        %60:f32 = convert %x_65
        %61:f32 = let %60
        %62:f32 = convert %x_68
        %63:f32 = let %62
        %64:f32 = convert %x_71
        %65:f32 = let %64
        %66:f32 = convert %x_74
        %67:vec4<f32> = construct %61, %63, %65, %66
        store %x_GLF_color, %67
        exit_if  # if_1
      }
      $B4: {  # false
        %68:ptr<uniform, i32, read> = access %x_13, 0u, 1i, 0u
        %69:i32 = load %68
        %x_78:i32 = let %69
        %71:f32 = convert %x_78
        %x_79:f32 = let %71
        %73:vec4<f32> = construct %x_79, %x_79, %x_79, %x_79
        store %x_GLF_color, %73
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B5: {
    %75:void = call %main_1
    %76:vec4<f32> = load %x_GLF_color
    %77:main_out = construct %76
    ret %77
  }
}
%tint_f32_to_i32 = func(%value:f32):i32 {
  $B6: {
    %79:i32 = convert %value
    %80:bool = gte %value, -2147483648.0f
    %81:i32 = select -2147483648i, %79, %80
    %82:bool = lte %value, 2147483520.0f
    %83:i32 = select 2147483647i, %81, %82
    ret %83
  }
}

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