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)
}

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

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

%main_1 = func():void {
  $B2: {
    %m:ptr<function, mat2x2<f32>, read_write> = var
    %f:ptr<function, f32, read_write> = var
    %i:ptr<function, i32, read_write> = var
    %j:ptr<function, i32, read_write> = var
    %8:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
    %9:i32 = load %8
    %x_36:i32 = let %9
    %11:bool = eq %x_36, 1i
    if %11 [t: $B3] {  # if_1
      $B3: {  # true
        %12:f32 = load %f
        %x_40:f32 = let %12
        %14:vec2<f32> = construct %x_40, 0.0f
        %15:vec2<f32> = let %14
        %16:vec2<f32> = construct 0.0f, %x_40
        %17:mat2x2<f32> = construct %15, %16
        store %m, %17
        exit_if  # if_1
      }
    }
    %18:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
    %19:i32 = load %18
    %x_45:i32 = let %19
    store %i, %x_45
    loop [b: $B4, c: $B5] {  # loop_1
      $B4: {  # body
        %21:i32 = load %i
        %x_50:i32 = let %21
        %23:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
        %24:i32 = load %23
        %x_52:i32 = let %24
        %26:bool = lt %x_50, %x_52
        if %26 [t: $B6, f: $B7] {  # if_2
          $B6: {  # true
            exit_if  # if_2
          }
          $B7: {  # false
            exit_loop  # loop_1
          }
        }
        %27:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
        %28:i32 = load %27
        %x_56:i32 = let %28
        store %j, %x_56
        loop [b: $B8, c: $B9] {  # loop_2
          $B8: {  # body
            %30:i32 = load %j
            %x_61:i32 = let %30
            %32:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
            %33:i32 = load %32
            %x_63:i32 = let %33
            %35:bool = lt %x_61, %x_63
            if %35 [t: $B10, f: $B11] {  # if_3
              $B10: {  # true
                exit_if  # if_3
              }
              $B11: {  # false
                exit_loop  # loop_2
              }
            }
            %36:i32 = load %i
            %x_66:i32 = let %36
            %38:i32 = load %j
            %x_67:i32 = let %38
            %40:i32 = load %i
            %x_68:i32 = let %40
            %42:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
            %43:i32 = load %42
            %x_70:i32 = let %43
            %45:i32 = load %j
            %x_72:i32 = let %45
            %47:ptr<function, vec2<f32>, read_write> = access %m, %x_66
            %48:i32 = mul %x_68, %x_70
            %49:i32 = add %48, %x_72
            %50:f32 = convert %49
            store_vector_element %47, %x_67, %50
            continue  # -> $B9
          }
          $B9: {  # continuing
            %51:i32 = load %j
            %x_76:i32 = let %51
            %53:i32 = add %x_76, 1i
            store %j, %53
            next_iteration  # -> $B8
          }
        }
        continue  # -> $B5
      }
      $B5: {  # continuing
        %54:i32 = load %i
        %x_78:i32 = let %54
        %56:i32 = add %x_78, 1i
        store %i, %56
        next_iteration  # -> $B4
      }
    }
    %57:mat2x2<f32> = load %m
    %x_80:mat2x2<f32> = let %57
    %59:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
    %60:i32 = load %59
    %x_82:i32 = let %60
    %62:ptr<uniform, i32, read> = access %x_5, 0u, 2i, 0u
    %63:i32 = load %62
    %x_85:i32 = let %63
    %65:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
    %66:i32 = load %65
    %x_88:i32 = let %66
    %68:ptr<uniform, i32, read> = access %x_5, 0u, 3i, 0u
    %69:i32 = load %68
    %x_91:i32 = let %69
    %71:f32 = convert %x_82
    %72:f32 = let %71
    %73:f32 = convert %x_85
    %74:vec2<f32> = construct %72, %73
    %75:vec2<f32> = let %74
    %76:f32 = convert %x_88
    %77:f32 = let %76
    %78:f32 = convert %x_91
    %79:vec2<f32> = construct %77, %78
    %80:mat2x2<f32> = construct %75, %79
    %x_95:mat2x2<f32> = let %80
    %82:vec2<f32> = access %x_80, 0u
    %83:vec2<f32> = access %x_95, 0u
    %84:vec2<bool> = eq %82, %83
    %85:bool = all %84
    %86:bool = let %85
    %87:vec2<f32> = access %x_80, 1u
    %88:vec2<f32> = access %x_95, 1u
    %89:vec2<bool> = eq %87, %88
    %90:bool = all %89
    %91:bool = and %86, %90
    if %91 [t: $B12, f: $B13] {  # if_4
      $B12: {  # true
        %92:ptr<uniform, i32, read> = access %x_5, 0u, 2i, 0u
        %93:i32 = load %92
        %x_109:i32 = let %93
        %95:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
        %96:i32 = load %95
        %x_112:i32 = let %96
        %98:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
        %99:i32 = load %98
        %x_115:i32 = let %99
        %101:ptr<uniform, i32, read> = access %x_5, 0u, 2i, 0u
        %102:i32 = load %101
        %x_118:i32 = let %102
        %104:f32 = convert %x_109
        %105:f32 = let %104
        %106:f32 = convert %x_112
        %107:f32 = let %106
        %108:f32 = convert %x_115
        %109:f32 = let %108
        %110:f32 = convert %x_118
        %111:vec4<f32> = construct %105, %107, %109, %110
        store %x_GLF_color, %111
        exit_if  # if_4
      }
      $B13: {  # false
        %112:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
        %113:i32 = load %112
        %x_122:i32 = let %113
        %115:f32 = convert %x_122
        %x_123:f32 = let %115
        %117:vec4<f32> = construct %x_123, %x_123, %x_123, %x_123
        store %x_GLF_color, %117
        exit_if  # if_4
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B14: {
    %119:void = call %main_1
    %120:vec4<f32> = load %x_GLF_color
    %121:main_out = construct %120
    ret %121
  }
}

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