SKIP: FAILED

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

buf0 = struct @align(4) {
  x_GLF_uniform_int_values:array<strided_arr, 4> @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, i32, read_write> = var
    %i:ptr<function, i32, read_write> = var
    %6:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
    %7:i32 = load %6
    store %a, %7
    store %i, 0i
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %8:i32 = load %i
        %9:bool = lt %8, 3i
        if %9 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        %10:i32 = load %i
        %11:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %12:i32 = load %11
        %13:bool = eq %10, %12
        if %13 [t: %b7, f: %b8] {  # if_2
          %b7 = block {  # true
            %14:i32 = load %a
            %15:i32 = add %14, 1i
            store %a, %15
            exit_if  # if_2
          }
          %b8 = block {  # false
            %16:i32 = load %a
            %17:i32 = load %i
            %18:i32 = div %16, %17
            store %a, %18
            exit_if  # if_2
          }
        }
        continue %b4
      }
      %b4 = block {  # continuing
        %19:i32 = load %i
        %20:i32 = add %19, 1i
        store %i, %20
        next_iteration %b3
      }
    }
    %21:i32 = load %a
    %22:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %23:i32 = load %22
    %24:bool = eq %21, %23
    if %24 [t: %b9, f: %b10] {  # if_3
      %b9 = block {  # true
        %25:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %26:i32 = load %25
        %27:f32 = convert %26
        %28:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %29:i32 = load %28
        %30:f32 = convert %29
        %31:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %32:i32 = load %31
        %33:f32 = convert %32
        %34:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %35:i32 = load %34
        %36:f32 = convert %35
        %37:vec4<f32> = construct %27, %30, %33, %36
        store %x_GLF_color, %37
        exit_if  # if_3
      }
      %b10 = block {  # false
        %38:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %39:i32 = load %38
        %40:f32 = convert %39
        %41:vec4<f32> = construct %40
        store %x_GLF_color, %41
        exit_if  # if_3
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b11 {
  %b11 = 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.  *
********************************************************************
