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, 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_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void {
  $B2: {
    %v1:ptr<function, vec2<f32>, read_write> = var
    %b:ptr<function, vec2<f32>, read_write> = var
    %a:ptr<function, f32, read_write> = var
    %x_51:ptr<function, bool, read_write> = var
    %x_52:ptr<function, bool, read_write> = var
    %9:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
    %10:f32 = load %9
    %11:vec2<f32> = construct %10
    store %v1, %11
    %12:vec2<f32> = load %v1
    %13:vec2<f32> = fract %12
    store %b, %13
    %14:vec2<f32> = load %b
    %15:vec2<f32> = smoothstep vec2<f32>(1.0f), vec2<f32>(1.0f), %14
    %16:f32 = access %15, 0u
    store %a, %16
    %17:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
    %18:f32 = load %17
    %19:f32 = load %a
    %20:f32 = load %a
    %21:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
    %22:f32 = load %21
    %23:vec4<f32> = construct %18, %19, %20, %22
    store %x_GLF_color, %23
    %24:f32 = load_vector_element %b, 0u
    %25:bool = lt %24, 1.0f
    %x_46:bool = let %25
    store %x_52, %x_46
    if %x_46 [t: $B3] {  # if_1
      $B3: {  # true
        %27:f32 = load_vector_element %b, 1u
        %28:bool = lt %27, 1.0f
        store %x_51, %28
        %29:bool = load %x_51
        store %x_52, %29
        exit_if  # if_1
      }
    }
    %30:bool = load %x_52
    if %30 [t: $B4, f: $B5] {  # if_2
      $B4: {  # true
        %31:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
        %32:f32 = load %31
        %33:f32 = load_vector_element %b, 0u
        %34:f32 = load_vector_element %b, 1u
        %35:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
        %36:f32 = load %35
        %37:vec4<f32> = construct %32, %33, %34, %36
        store %x_GLF_color, %37
        exit_if  # if_2
      }
      $B5: {  # false
        %38:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
        %39:f32 = load %38
        %40:vec4<f32> = construct %39
        store %x_GLF_color, %40
        exit_if  # if_2
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B6: {
    %42:void = call %main_1
    %43:vec4<f32> = load %x_GLF_color
    %44:main_out = construct %43
    ret %44
  }
}

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