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
        %x_72:i32 = load %x_GLF_global_loop_count
        %6:bool = lt %x_72, 100i
        if %6 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        %x_75:i32 = load %x_GLF_global_loop_count
        %8:i32 = add %x_75, 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
        %x_35:i32 = load %x_GLF_global_loop_count
        %16:i32 = add %x_35, 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
    %x_43:i32 = load %a
    %23:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
    %x_45:i32 = load %23
    %25:bool = eq %x_43, %x_45
    if %25 [t: %b11, f: %b12] {  # if_3
      %b11 = block {  # true
        %26:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
        %x_51:i32 = load %26
        %28:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
        %x_54:i32 = load %28
        %30:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
        %x_57:i32 = load %30
        %32:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
        %x_60:i32 = load %32
        %34:f32 = convert %x_51
        %35:f32 = convert %x_54
        %36:f32 = convert %x_57
        %37:f32 = convert %x_60
        %38:vec4<f32> = construct %34, %35, %36, %37
        store %x_GLF_color, %38
        exit_if  # if_3
      }
      %b12 = block {  # false
        %39:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
        %x_64:i32 = load %39
        %x_65:f32 = convert %x_64
        %42:vec4<f32> = construct %x_65, %x_65, %x_65, %x_65
        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.  *
********************************************************************
