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

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