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, 3> @offset(0)
}

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

%b1 = block {  # root
  %x_GLF_global_loop_count:ptr<private, i32, read_write> = var
  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%func_ = func():i32 -> %b2 {
  %b2 = block {
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %5:i32 = load %x_GLF_global_loop_count
        %6:bool = lt %5, 100i
        if %6 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        %7:i32 = load %x_GLF_global_loop_count
        %8:i32 = add %7, 1i
        store %x_GLF_global_loop_count, %8
        %9:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
        %x_78:i32 = load %9
        ret %x_78
      }
      %b4 = block {  # continuing
        next_iteration %b3
      }
    }
    %11:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
    %x_80:i32 = load %11
    ret %x_80
  }
}
%main_1 = func():void -> %b7 {
  %b7 = block {
    %a:ptr<function, i32, read_write> = var
    store %x_GLF_global_loop_count, 0i
    loop [b: %b8, c: %b9] {  # loop_2
      %b8 = block {  # body
        %15:i32 = load %x_GLF_global_loop_count
        %16:i32 = add %15, 1i
        store %x_GLF_global_loop_count, %16
        if false [t: %b10] {  # if_2
          %b10 = block {  # true
            ret
          }
        }
        continue %b9
      }
      %b9 = block {  # continuing
        %x_39:i32 = load %x_GLF_global_loop_count
        %18:bool = lt %x_39, 100i
        %19:bool = and true, %18
        %20:bool = eq %19, false
        break_if %20 %b8
      }
    }
    %x_42:i32 = call %func_
    store %a, %x_42
    %22:i32 = load %a
    %23:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
    %24:i32 = load %23
    %25:bool = eq %22, %24
    if %25 [t: %b11, f: %b12] {  # if_3
      %b11 = block {  # true
        %26:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
        %27:i32 = load %26
        %28:f32 = convert %27
        %29:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
        %30:i32 = load %29
        %31:f32 = convert %30
        %32:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
        %33:i32 = load %32
        %34:f32 = convert %33
        %35:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
        %36:i32 = load %35
        %37:f32 = convert %36
        %38:vec4<f32> = construct %28, %31, %34, %37
        store %x_GLF_color, %38
        exit_if  # if_3
      }
      %b12 = block {  # false
        %39:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
        %40:i32 = load %39
        %41:f32 = convert %40
        %42:vec4<f32> = construct %41
        store %x_GLF_color, %42
        exit_if  # if_3
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b13 {
  %b13 = block {
    %44:void = call %main_1
    %45:vec4<f32> = load %x_GLF_color
    %46:main_out = construct %45
    ret %46
  }
}

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