SKIP: FAILED

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

buf1 = struct @align(4) {
  x_GLF_uniform_float_values:array<strided_arr, 2> @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, 4> @offset(0)
}

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

%b1 = block {  # root
  %x_7: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 {
    %f:ptr<function, f32, read_write> = var
    %arr:ptr<function, array<f32, 10>, read_write> = var
    store %f, 2.0f
    %7:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
    %x_37:f32 = load %7
    %9:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
    %x_39:f32 = load %9
    %11:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
    %x_41:f32 = load %11
    %13:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
    %x_43:f32 = load %13
    %15:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
    %x_45:f32 = load %15
    %17:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
    %x_47:f32 = load %17
    %19:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
    %x_49:f32 = load %19
    %x_50:f32 = load %f
    %22:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
    %x_52:f32 = load %22
    %24:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
    %x_55:f32 = load %24
    %26:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
    %x_57:f32 = load %26
    %28:f32 = pow %x_50, %x_52
    %29:array<f32, 10> = construct %x_37, %x_39, %x_41, %x_43, %x_45, %x_47, %x_49, %28, %x_55, %x_57
    store %arr, %29
    %30:ptr<uniform, i32, read> = access %x_9, 0u, 0i, 0u
    %x_60:i32 = load %30
    %32:ptr<function, f32, read_write> = access %arr, %x_60
    %x_62:f32 = load %32
    %34:ptr<uniform, i32, read> = access %x_9, 0u, 3i, 0u
    %x_65:i32 = load %34
    %36:i32 = convert %x_62
    %37:bool = eq %36, %x_65
    if %37 [t: %b3, f: %b4] {  # if_1
      %b3 = block {  # true
        %38:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
        %x_71:i32 = load %38
        %40:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
        %x_74:i32 = load %40
        %42:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
        %x_77:i32 = load %42
        %44:ptr<uniform, i32, read> = access %x_9, 0u, 1i, 0u
        %x_80:i32 = load %44
        %46:f32 = convert %x_71
        %47:f32 = convert %x_74
        %48:f32 = convert %x_77
        %49:f32 = convert %x_80
        %50:vec4<f32> = construct %46, %47, %48, %49
        store %x_GLF_color, %50
        exit_if  # if_1
      }
      %b4 = block {  # false
        %51:ptr<uniform, i32, read> = access %x_9, 0u, 2i, 0u
        %x_84:i32 = load %51
        %x_85:f32 = convert %x_84
        %54:vec4<f32> = construct %x_85, %x_85, %x_85, %x_85
        store %x_GLF_color, %54
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b5 {
  %b5 = block {
    %56:void = call %main_1
    %57:vec4<f32> = load %x_GLF_color
    %58:main_out = construct %57
    ret %58
  }
}

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