SKIP: FAILED

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

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

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

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

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

%b1 = block {  # 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 {
  %b2 = block {
    %v:ptr<function, vec4<f32>, read_write> = var
    %f:ptr<function, f32, read_write> = var
    %x_56:ptr<function, bool, read_write> = var
    %x_57:ptr<function, bool, read_write> = var
    %9:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
    %10:i32 = load %9
    %11:f32 = convert %10
    %12:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
    %13:i32 = load %12
    %14:f32 = convert %13
    %15:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
    %16:i32 = load %15
    %17:f32 = convert %16
    %18:vec4<f32> = construct %11, %14, -621.59600830078125f, %17
    store %v, %18
    %19:vec4<f32> = load %v
    %20:vec4<f32> = trunc %19
    %21:vec4<f32> = atan %20
    %22:f32 = access %21, 2u
    store %f, %22
    %23:f32 = load %f
    %24:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
    %25:f32 = load %24
    %26:f32 = negation %25
    %x_49:bool = gt %23, %26
    store %x_57, %x_49
    if %x_49 [t: %b3] {  # if_1
      %b3 = block {  # true
        %28:f32 = load %f
        %29:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
        %30:f32 = load %29
        %31:f32 = negation %30
        %32:bool = lt %28, %31
        store %x_56, %32
        %33:bool = load %x_56
        store %x_57, %33
        exit_if  # if_1
      }
    }
    %34:bool = load %x_57
    if %34 [t: %b4, f: %b5] {  # if_2
      %b4 = block {  # true
        %35:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %36:i32 = load %35
        %37:f32 = convert %36
        %38:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %39:i32 = load %38
        %40:f32 = convert %39
        %41:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %42:i32 = load %41
        %43:f32 = convert %42
        %44:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %45:i32 = load %44
        %46:f32 = convert %45
        %47:vec4<f32> = construct %37, %40, %43, %46
        store %x_GLF_color, %47
        exit_if  # if_2
      }
      %b5 = block {  # false
        %48:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %49:i32 = load %48
        %50:f32 = convert %49
        %51:vec4<f32> = construct %50
        store %x_GLF_color, %51
        exit_if  # if_2
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b6 {
  %b6 = block {
    %53:void = call %main_1
    %54:vec4<f32> = load %x_GLF_color
    %55:main_out = construct %54
    ret %55
  }
}

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