SKIP: FAILED

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

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

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

%b1 = block {  # 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 {
  %b2 = block {
    %a:ptr<function, f32, read_write> = var
    %b:ptr<function, f32, read_write> = var
    %x_51:ptr<function, bool, read_write> = var
    %x_52:ptr<function, bool, read_write> = var
    %8:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
    %9:f32 = load %8
    %10:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
    %11:f32 = load %10
    %12:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
    %13:f32 = load %12
    %14:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
    %15:f32 = load %14
    %16:bool = gt %13, %15
    %17:f32 = select %9, %11, %16
    store %a, %17
    %18:f32 = load %a
    %19:f32 = log %18
    %20:f32 = cos %19
    store %b, %20
    %21:f32 = load %b
    %22:vec4<f32> = construct %21
    store %x_GLF_color, %22
    %23:f32 = load %b
    %24:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
    %25:f32 = load %24
    %x_45:bool = gt %23, %25
    store %x_52, %x_45
    if %x_45 [t: %b3] {  # if_1
      %b3 = block {  # true
        %27:f32 = load %b
        %28:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
        %29:f32 = load %28
        %30:bool = lt %27, %29
        store %x_51, %30
        %31:bool = load %x_51
        store %x_52, %31
        exit_if  # if_1
      }
    }
    %32:bool = load %x_52
    if %32 [t: %b4] {  # if_2
      %b4 = block {  # true
        %33:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
        %34:f32 = load %33
        %35:ptr<uniform, f32, read> = access %x_6, 0u, 4i, 0u
        %36:f32 = load %35
        %37:ptr<uniform, f32, read> = access %x_6, 0u, 4i, 0u
        %38:f32 = load %37
        %39:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
        %40:f32 = load %39
        %41:vec4<f32> = construct %34, %36, %38, %40
        store %x_GLF_color, %41
        exit_if  # if_2
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b5 {
  %b5 = block {
    %43:void = call %main_1
    %44:vec4<f32> = load %x_GLF_color
    %45:main_out = construct %44
    ret %45
  }
}

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