SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 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)
}

buf1 = struct @align(4) {
  zero:i32 @offset(0)
}

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

$B1: {  # root
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_7:ptr<uniform, buf1, read> = var @binding_point(0, 1)
  %continue_execution:ptr<private, bool, read_write> = var, true
}

%main_1 = func():void {
  $B2: {
    %6:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
    %7:i32 = load %6
    %x_28:i32 = let %7
    %9:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
    %10:i32 = load %9
    %x_31:i32 = let %10
    %12:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
    %13:i32 = load %12
    %x_34:i32 = let %13
    %15:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
    %16:i32 = load %15
    %x_37:i32 = let %16
    %18:f32 = convert %x_28
    %19:f32 = let %18
    %20:f32 = convert %x_31
    %21:f32 = let %20
    %22:f32 = convert %x_34
    %23:f32 = let %22
    %24:f32 = convert %x_37
    %25:vec4<f32> = construct %19, %21, %23, %24
    store %x_GLF_color, %25
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %26:ptr<uniform, i32, read> = access %x_7, 0u
        %27:i32 = load %26
        %x_45:i32 = let %27
        %29:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
        %30:i32 = load %29
        %x_47:i32 = let %30
        %32:bool = eq %x_45, %x_47
        if %32 [t: $B5] {  # if_1
          $B5: {  # true
            continue  # -> $B4
          }
        }
        %33:ptr<uniform, i32, read> = access %x_7, 0u
        %34:i32 = load %33
        %x_52:i32 = let %34
        %36:ptr<uniform, i32, read> = access %x_5, 0u, 2i, 0u
        %37:i32 = load %36
        %x_54:i32 = let %37
        %39:bool = eq %x_52, %x_54
        if %39 [t: $B6] {  # if_2
          $B6: {  # true
            exit_loop  # loop_1
          }
        }
        %40:ptr<uniform, i32, read> = access %x_7, 0u
        %41:i32 = load %40
        %x_59:i32 = let %41
        %43:ptr<uniform, i32, read> = access %x_5, 0u, 3i, 0u
        %44:i32 = load %43
        %x_61:i32 = let %44
        %46:bool = eq %x_59, %x_61
        if %46 [t: $B7] {  # if_3
          $B7: {  # true
            store %continue_execution, false
            exit_if  # if_3
          }
        }
        ret
      }
      $B4: {  # continuing
        break_if true  # -> [t: exit_loop loop_1, f: $B3]
      }
    }
    %47:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
    %48:i32 = load %47
    %x_66:i32 = let %48
    %50:f32 = convert %x_66
    %x_67:f32 = let %50
    %52:vec4<f32> = construct %x_67, %x_67, %x_67, %x_67
    store %x_GLF_color, %52
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B8: {
    %54:void = call %main_1
    %55:vec4<f32> = load %x_GLF_color
    %56:main_out = construct %55
    %57:bool = load %continue_execution
    %58:bool = eq %57, false
    if %58 [t: $B9] {  # if_4
      $B9: {  # true
        terminate_invocation
      }
    }
    ret %56
  }
}

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