SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: strided_arr = struct @align(4) {
  el:f32 @offset(0)
}

buf1 = struct @align(4) {
  x_GLF_uniform_float_values:array<strided_arr, 18> @offset(0)
}

strided_arr_1 = struct @align(4) {
  el:i32 @offset(0)
}

buf0 = struct @align(4) {
  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
}

buf2 = struct @align(4) {
  one:i32 @offset(0)
}

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

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

%main_1 = func():void {
  $B2: {
    %m:ptr<function, mat4x4<f32>, read_write> = var
    %v:ptr<function, vec4<f32>, read_write> = var
    %f:ptr<function, f32, read_write> = var
    %a:ptr<function, i32, read_write> = var
    %b:ptr<function, i32, read_write> = var
    %zero:ptr<function, f32, read_write> = var
    store %x_GLF_global_loop_count, 0i
    %14:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
    %15:f32 = load %14
    %x_62:f32 = let %15
    %17:ptr<uniform, f32, read> = access %x_7, 0u, 2i, 0u
    %18:f32 = load %17
    %x_64:f32 = let %18
    %20:ptr<uniform, f32, read> = access %x_7, 0u, 3i, 0u
    %21:f32 = load %20
    %x_66:f32 = let %21
    %23:ptr<uniform, f32, read> = access %x_7, 0u, 4i, 0u
    %24:f32 = load %23
    %x_68:f32 = let %24
    %26:ptr<uniform, f32, read> = access %x_7, 0u, 5i, 0u
    %27:f32 = load %26
    %x_70:f32 = let %27
    %29:ptr<uniform, f32, read> = access %x_7, 0u, 6i, 0u
    %30:f32 = load %29
    %x_72:f32 = let %30
    %32:ptr<uniform, f32, read> = access %x_7, 0u, 7i, 0u
    %33:f32 = load %32
    %x_74:f32 = let %33
    %35:ptr<uniform, f32, read> = access %x_7, 0u, 8i, 0u
    %36:f32 = load %35
    %x_76:f32 = let %36
    %38:ptr<uniform, f32, read> = access %x_7, 0u, 9i, 0u
    %39:f32 = load %38
    %x_78:f32 = let %39
    %41:ptr<uniform, f32, read> = access %x_7, 0u, 10i, 0u
    %42:f32 = load %41
    %x_80:f32 = let %42
    %44:ptr<uniform, f32, read> = access %x_7, 0u, 11i, 0u
    %45:f32 = load %44
    %x_82:f32 = let %45
    %47:ptr<uniform, f32, read> = access %x_7, 0u, 12i, 0u
    %48:f32 = load %47
    %x_84:f32 = let %48
    %50:ptr<uniform, f32, read> = access %x_7, 0u, 13i, 0u
    %51:f32 = load %50
    %x_86:f32 = let %51
    %53:ptr<uniform, f32, read> = access %x_7, 0u, 14i, 0u
    %54:f32 = load %53
    %x_88:f32 = let %54
    %56:ptr<uniform, f32, read> = access %x_7, 0u, 15i, 0u
    %57:f32 = load %56
    %x_90:f32 = let %57
    %59:ptr<uniform, f32, read> = access %x_7, 0u, 16i, 0u
    %60:f32 = load %59
    %x_92:f32 = let %60
    %62:vec4<f32> = construct %x_62, %x_64, %x_66, %x_68
    %63:vec4<f32> = let %62
    %64:vec4<f32> = construct %x_70, %x_72, %x_74, %x_76
    %65:vec4<f32> = let %64
    %66:vec4<f32> = construct %x_78, %x_80, %x_82, %x_84
    %67:vec4<f32> = let %66
    %68:vec4<f32> = construct %x_86, %x_88, %x_90, %x_92
    %69:mat4x4<f32> = construct %63, %65, %67, %68
    store %m, %69
    %70:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
    %71:f32 = load %70
    %x_99:f32 = let %71
    %73:ptr<uniform, f32, read> = access %x_7, 0u, 2i, 0u
    %74:f32 = load %73
    %x_101:f32 = let %74
    %76:ptr<uniform, f32, read> = access %x_7, 0u, 3i, 0u
    %77:f32 = load %76
    %x_103:f32 = let %77
    %79:ptr<uniform, f32, read> = access %x_7, 0u, 4i, 0u
    %80:f32 = load %79
    %x_105:f32 = let %80
    %82:vec4<f32> = construct %x_99, %x_101, %x_103, %x_105
    store %v, %82
    %83:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
    %84:f32 = load %83
    %x_108:f32 = let %84
    store %f, %x_108
    %86:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
    %87:i32 = load %86
    %x_110:i32 = let %87
    store %a, %x_110
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %89:i32 = load %x_GLF_global_loop_count
        %x_115:i32 = let %89
        %91:bool = lt %x_115, 10i
        if %91 [t: $B5, f: $B6] {  # if_1
          $B5: {  # true
            exit_if  # if_1
          }
          $B6: {  # false
            exit_loop  # loop_1
          }
        }
        %92:i32 = load %x_GLF_global_loop_count
        %x_118:i32 = let %92
        %94:i32 = add %x_118, 1i
        store %x_GLF_global_loop_count, %94
        %95:i32 = load %a
        %x_120:i32 = let %95
        %97:i32 = max %x_120, 0i
        %98:i32 = min %97, 3i
        %x_121:i32 = let %98
        %100:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
        %101:f32 = load %100
        %x_123:f32 = let %101
        %103:f32 = load_vector_element %v, %x_121
        %x_125:f32 = let %103
        %105:f32 = add %x_125, %x_123
        store_vector_element %v, %x_121, %105
        %106:ptr<uniform, i32, read> = access %x_12, 0u, 2i, 0u
        %107:i32 = load %106
        %x_129:i32 = let %107
        store %b, %x_129
        loop [b: $B7, c: $B8] {  # loop_2
          $B7: {  # body
            %109:i32 = load %x_GLF_global_loop_count
            %x_134:i32 = let %109
            %111:bool = lt %x_134, 10i
            if %111 [t: $B9, f: $B10] {  # if_2
              $B9: {  # true
                exit_if  # if_2
              }
              $B10: {  # false
                exit_loop  # loop_2
              }
            }
            %112:i32 = load %x_GLF_global_loop_count
            %x_137:i32 = let %112
            %114:i32 = add %x_137, 1i
            store %x_GLF_global_loop_count, %114
            %115:i32 = load %b
            %x_139:i32 = let %115
            %117:i32 = max %x_139, 0i
            %118:i32 = min %117, 3i
            %119:f32 = load_vector_element %v, %118
            %x_142:f32 = let %119
            %121:i32 = load %b
            %x_143:i32 = let %121
            %123:i32 = load %a
            %x_145:i32 = let %123
            %125:i32 = max %x_143, 0i
            %126:i32 = min %125, 3i
            %127:ptr<function, vec4<f32>, read_write> = access %m, %126
            %128:f32 = load_vector_element %127, %x_145
            %x_147:f32 = let %128
            %130:f32 = load %f
            %x_149:f32 = let %130
            %132:f32 = mul %x_142, %x_147
            %133:f32 = add %x_149, %132
            store %f, %133
            continue  # -> $B8
          }
          $B8: {  # continuing
            %134:i32 = load %b
            %x_151:i32 = let %134
            %136:i32 = sub %x_151, 1i
            store %b, %136
            next_iteration  # -> $B7
          }
        }
        %137:i32 = load %a
        %x_153:i32 = let %137
        %139:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
        %140:f32 = load %139
        %x_156:f32 = let %140
        %142:ptr<function, vec4<f32>, read_write> = access %m, 1i
        %143:i32 = max %x_153, 0i
        %144:i32 = min %143, 3i
        store_vector_element %142, %144, %x_156
        %145:ptr<uniform, i32, read> = access %x_15, 0u
        %146:i32 = load %145
        %x_159:i32 = let %146
        %148:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
        %149:i32 = load %148
        %x_161:i32 = let %149
        %151:bool = eq %x_159, %x_161
        if %151 [t: $B11] {  # if_3
          $B11: {  # true
            store %continue_execution, false
            exit_if  # if_3
          }
        }
        %152:ptr<uniform, i32, read> = access %x_15, 0u
        %153:i32 = load %152
        %x_166:i32 = let %153
        %155:ptr<uniform, i32, read> = access %x_12, 0u, 1i, 0u
        %156:i32 = load %155
        %x_168:i32 = let %156
        %158:bool = eq %x_166, %x_168
        if %158 [t: $B12] {  # if_4
          $B12: {  # true
            store %continue_execution, false
            exit_if  # if_4
          }
        }
        continue  # -> $B4
      }
      $B4: {  # continuing
        %159:i32 = load %a
        %x_172:i32 = let %159
        %161:i32 = add %x_172, 1i
        store %a, %161
        next_iteration  # -> $B3
      }
    }
    %162:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
    %163:f32 = load %162
    %x_175:f32 = let %163
    store %zero, %x_175
    %165:f32 = load %f
    %x_176:f32 = let %165
    %167:ptr<uniform, f32, read> = access %x_7, 0u, 17i, 0u
    %168:f32 = load %167
    %x_178:f32 = let %168
    %170:bool = eq %x_176, %x_178
    %171:bool = eq %170, false
    if %171 [t: $B13] {  # if_5
      $B13: {  # true
        %172:ptr<uniform, f32, read> = access %x_7, 0u, 1i, 0u
        %173:f32 = load %172
        %x_183:f32 = let %173
        store %zero, %x_183
        exit_if  # if_5
      }
    }
    %175:f32 = load %f
    %x_184:f32 = let %175
    %177:f32 = load %zero
    %x_185:f32 = let %177
    %179:ptr<uniform, i32, read> = access %x_12, 0u, 0i, 0u
    %180:i32 = load %179
    %x_187:i32 = let %180
    %182:f32 = load %f
    %x_189:f32 = let %182
    %184:f32 = convert %x_187
    %185:vec4<f32> = construct %x_184, %x_185, %184, %x_189
    store %x_GLF_color, %185
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B14: {
    %187:void = call %main_1
    %188:vec4<f32> = load %x_GLF_color
    %189:main_out = construct %188
    %190:bool = load %continue_execution
    %191:bool = eq %190, false
    if %191 [t: $B15] {  # if_6
      $B15: {  # true
        terminate_invocation
      }
    }
    ret %189
  }
}

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