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

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

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

%b1 = block {  # root
  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
  %x_19:ptr<uniform, buf1, read> = var @binding_point(0, 1)
}

%main_1 = func():void -> %b2 {
  %b2 = block {
    %arr0:ptr<function, array<i32, 10>, read_write> = var
    %arr1:ptr<function, array<i32, 10>, read_write> = var
    %a:ptr<function, i32, read_write> = var
    %limiter0:ptr<function, i32, read_write> = var
    %limiter1:ptr<function, i32, read_write> = var
    %b:ptr<function, i32, read_write> = var
    %limiter2:ptr<function, i32, read_write> = var
    %limiter3:ptr<function, i32, read_write> = var
    %d:ptr<function, i32, read_write> = var
    %ref0:ptr<function, array<i32, 10>, read_write> = var
    %ref1:ptr<function, array<i32, 10>, read_write> = var
    %i:ptr<function, i32, read_write> = var
    %17:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
    %x_59:i32 = load %17
    %19:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %x_61:i32 = load %19
    %21:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
    %x_63:i32 = load %21
    %23:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
    %x_65:i32 = load %23
    %25:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
    %x_67:i32 = load %25
    %27:ptr<uniform, i32, read> = access %x_6, 0u, 7i, 0u
    %x_69:i32 = load %27
    %29:ptr<uniform, i32, read> = access %x_6, 0u, 8i, 0u
    %x_71:i32 = load %29
    %31:ptr<uniform, i32, read> = access %x_6, 0u, 9i, 0u
    %x_73:i32 = load %31
    %33:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
    %x_75:i32 = load %33
    %35:ptr<uniform, i32, read> = access %x_6, 0u, 10i, 0u
    %x_77:i32 = load %35
    %37:array<i32, 10> = construct %x_59, %x_61, %x_63, %x_65, %x_67, %x_69, %x_71, %x_73, %x_75, %x_77
    store %arr0, %37
    %38:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %x_80:i32 = load %38
    %40:ptr<uniform, i32, read> = access %x_6, 0u, 12i, 0u
    %x_82:i32 = load %40
    %42:ptr<uniform, i32, read> = access %x_6, 0u, 15i, 0u
    %x_84:i32 = load %42
    %44:ptr<uniform, i32, read> = access %x_6, 0u, 16i, 0u
    %x_86:i32 = load %44
    %46:ptr<uniform, i32, read> = access %x_6, 0u, 17i, 0u
    %x_88:i32 = load %46
    %48:ptr<uniform, i32, read> = access %x_6, 0u, 13i, 0u
    %x_90:i32 = load %48
    %50:ptr<uniform, i32, read> = access %x_6, 0u, 14i, 0u
    %x_92:i32 = load %50
    %52:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
    %x_94:i32 = load %52
    %54:ptr<uniform, i32, read> = access %x_6, 0u, 18i, 0u
    %x_96:i32 = load %54
    %56:ptr<uniform, i32, read> = access %x_6, 0u, 19i, 0u
    %x_98:i32 = load %56
    %58:array<i32, 10> = construct %x_80, %x_82, %x_84, %x_86, %x_88, %x_90, %x_92, %x_94, %x_96, %x_98
    store %arr1, %58
    %59:ptr<uniform, i32, read> = access %x_6, 0u, 8i, 0u
    %x_101:i32 = load %59
    store %a, %x_101
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %x_106:i32 = load %a
        %62:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %x_108:i32 = load %62
        %64:bool = lt %x_106, %x_108
        if %64 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        %65:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
        %x_112:i32 = load %65
        store %limiter0, %x_112
        loop [b: %b7, c: %b8] {  # loop_2
          %b7 = block {  # body
            %x_117:i32 = load %limiter0
            %68:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
            %x_119:i32 = load %68
            %70:bool = lt %x_117, %x_119
            if %70 [t: %b9, f: %b10] {  # if_2
              %b9 = block {  # true
                exit_if  # if_2
              }
              %b10 = block {  # false
                exit_loop  # loop_2
              }
            }
            %x_122:i32 = load %limiter0
            %72:i32 = add %x_122, 1i
            store %limiter0, %72
            %73:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
            %x_125:i32 = load %73
            store %limiter1, %x_125
            %75:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
            %x_127:i32 = load %75
            store %b, %x_127
            loop [b: %b11, c: %b12] {  # loop_3
              %b11 = block {  # body
                %x_132:i32 = load %b
                %78:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
                %x_134:i32 = load %78
                %80:bool = lt %x_132, %x_134
                if %80 [t: %b13, f: %b14] {  # if_3
                  %b13 = block {  # true
                    exit_if  # if_3
                  }
                  %b14 = block {  # false
                    exit_loop  # loop_3
                  }
                }
                %x_137:i32 = load %limiter1
                %82:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
                %x_139:i32 = load %82
                %84:bool = gt %x_137, %x_139
                if %84 [t: %b15] {  # if_4
                  %b15 = block {  # true
                    exit_loop  # loop_3
                  }
                }
                %x_143:i32 = load %limiter1
                %86:i32 = add %x_143, 1i
                store %limiter1, %86
                %x_145:i32 = load %b
                %x_146:i32 = load %a
                %89:ptr<function, i32, read_write> = access %arr1, %x_146
                %x_148:i32 = load %89
                %91:ptr<function, i32, read_write> = access %arr0, %x_145
                store %91, %x_148
                continue %b12
              }
              %b12 = block {  # continuing
                %x_150:i32 = load %b
                %93:i32 = add %x_150, 1i
                store %b, %93
                next_iteration %b11
              }
            }
            continue %b8
          }
          %b8 = block {  # continuing
            next_iteration %b7
          }
        }
        store %limiter2, 0i
        loop [b: %b16, c: %b17] {  # loop_4
          %b16 = block {  # body
            %x_156:i32 = load %limiter2
            %95:bool = lt %x_156, 5i
            if %95 [t: %b18, f: %b19] {  # if_5
              %b18 = block {  # true
                exit_if  # if_5
              }
              %b19 = block {  # false
                exit_loop  # loop_4
              }
            }
            %x_159:i32 = load %limiter2
            %97:i32 = add %x_159, 1i
            store %limiter2, %97
            %98:ptr<function, i32, read_write> = access %arr1, 1i
            %x_162:i32 = load %98
            %100:ptr<function, i32, read_write> = access %arr0, 1i
            store %100, %x_162
            continue %b17
          }
          %b17 = block {  # continuing
            next_iteration %b16
          }
        }
        loop [b: %b20, c: %b21] {  # loop_5
          %b20 = block {  # body
            store %limiter3, 0i
            store %d, 0i
            loop [b: %b22, c: %b23] {  # loop_6
              %b22 = block {  # body
                %x_172:i32 = load %d
                %102:bool = lt %x_172, 10i
                if %102 [t: %b24, f: %b25] {  # if_6
                  %b24 = block {  # true
                    exit_if  # if_6
                  }
                  %b25 = block {  # false
                    exit_loop  # loop_6
                  }
                }
                %x_175:i32 = load %limiter3
                %104:bool = gt %x_175, 4i
                if %104 [t: %b26] {  # if_7
                  %b26 = block {  # true
                    exit_loop  # loop_6
                  }
                }
                %x_179:i32 = load %limiter3
                %106:i32 = add %x_179, 1i
                store %limiter3, %106
                %x_181:i32 = load %d
                %x_182:i32 = load %d
                %109:ptr<function, i32, read_write> = access %arr0, %x_182
                %x_184:i32 = load %109
                %111:ptr<function, i32, read_write> = access %arr1, %x_181
                store %111, %x_184
                continue %b23
              }
              %b23 = block {  # continuing
                %x_186:i32 = load %d
                %113:i32 = add %x_186, 1i
                store %d, %113
                next_iteration %b22
              }
            }
            continue %b21
          }
          %b21 = block {  # continuing
            %114:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
            %x_189:i32 = load %114
            %116:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
            %x_191:i32 = load %116
            %118:bool = eq %x_189, %x_191
            %119:bool = eq %118, false
            break_if %119 %b20
          }
        }
        continue %b4
      }
      %b4 = block {  # continuing
        %x_193:i32 = load %a
        %121:i32 = add %x_193, 1i
        store %a, %121
        next_iteration %b3
      }
    }
    %122:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
    %x_196:i32 = load %122
    %124:ptr<uniform, i32, read> = access %x_6, 0u, 12i, 0u
    %x_198:i32 = load %124
    %126:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
    %x_200:i32 = load %126
    %128:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
    %x_202:i32 = load %128
    %130:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
    %x_204:i32 = load %130
    %132:ptr<uniform, i32, read> = access %x_6, 0u, 7i, 0u
    %x_206:i32 = load %132
    %134:ptr<uniform, i32, read> = access %x_6, 0u, 8i, 0u
    %x_208:i32 = load %134
    %136:ptr<uniform, i32, read> = access %x_6, 0u, 9i, 0u
    %x_210:i32 = load %136
    %138:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
    %x_212:i32 = load %138
    %140:ptr<uniform, i32, read> = access %x_6, 0u, 10i, 0u
    %x_214:i32 = load %140
    %142:array<i32, 10> = construct %x_196, %x_198, %x_200, %x_202, %x_204, %x_206, %x_208, %x_210, %x_212, %x_214
    store %ref0, %142
    %143:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
    %x_217:i32 = load %143
    %145:ptr<uniform, i32, read> = access %x_6, 0u, 12i, 0u
    %x_219:i32 = load %145
    %147:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
    %x_221:i32 = load %147
    %149:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
    %x_223:i32 = load %149
    %151:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
    %x_225:i32 = load %151
    %153:ptr<uniform, i32, read> = access %x_6, 0u, 13i, 0u
    %x_227:i32 = load %153
    %155:ptr<uniform, i32, read> = access %x_6, 0u, 14i, 0u
    %x_229:i32 = load %155
    %157:ptr<uniform, i32, read> = access %x_6, 0u, 11i, 0u
    %x_231:i32 = load %157
    %159:ptr<uniform, i32, read> = access %x_6, 0u, 18i, 0u
    %x_233:i32 = load %159
    %161:ptr<uniform, i32, read> = access %x_6, 0u, 19i, 0u
    %x_235:i32 = load %161
    %163:array<i32, 10> = construct %x_217, %x_219, %x_221, %x_223, %x_225, %x_227, %x_229, %x_231, %x_233, %x_235
    store %ref1, %163
    %164:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %x_238:i32 = load %164
    %166:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
    %x_241:i32 = load %166
    %168:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
    %x_244:i32 = load %168
    %170:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %x_247:i32 = load %170
    %172:f32 = convert %x_238
    %173:f32 = convert %x_241
    %174:f32 = convert %x_244
    %175:f32 = convert %x_247
    %176:vec4<f32> = construct %172, %173, %174, %175
    store %x_GLF_color, %176
    %177:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
    %x_251:i32 = load %177
    store %i, %x_251
    loop [b: %b27, c: %b28] {  # loop_7
      %b27 = block {  # body
        %x_277:ptr<function, bool, read_write> = var
        %x_278_phi:ptr<function, bool, read_write> = var
        %x_256:i32 = load %i
        %182:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %x_258:i32 = load %182
        %184:bool = lt %x_256, %x_258
        if %184 [t: %b29, f: %b30] {  # if_8
          %b29 = block {  # true
            exit_if  # if_8
          }
          %b30 = block {  # false
            exit_loop  # loop_7
          }
        }
        %x_261:i32 = load %i
        %186:ptr<function, i32, read_write> = access %arr0, %x_261
        %x_263:i32 = load %186
        %x_264:i32 = load %i
        %189:ptr<function, i32, read_write> = access %ref0, %x_264
        %x_266:i32 = load %189
        %x_267:bool = neq %x_263, %x_266
        store %x_278_phi, %x_267
        %192:bool = eq %x_267, false
        if %192 [t: %b31] {  # if_9
          %b31 = block {  # true
            %x_271:i32 = load %i
            %194:ptr<function, i32, read_write> = access %arr1, %x_271
            %x_273:i32 = load %194
            %x_274:i32 = load %i
            %197:ptr<function, i32, read_write> = access %ref1, %x_274
            %x_276:i32 = load %197
            %199:bool = neq %x_273, %x_276
            store %x_277, %199
            %200:bool = load %x_277
            store %x_278_phi, %200
            exit_if  # if_9
          }
        }
        %x_278:bool = load %x_278_phi
        if %x_278 [t: %b32] {  # if_10
          %b32 = block {  # true
            %202:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
            %x_282:i32 = load %202
            %x_283:f32 = convert %x_282
            %205:vec4<f32> = construct %x_283, %x_283, %x_283, %x_283
            store %x_GLF_color, %205
            exit_if  # if_10
          }
        }
        continue %b28
      }
      %b28 = block {  # continuing
        %x_285:i32 = load %i
        %207:i32 = add %x_285, 1i
        store %i, %207
        next_iteration %b27
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b33 {
  %b33 = block {
    %209:void = call %main_1
    %210:vec4<f32> = load %x_GLF_color
    %211:main_out = construct %210
    ret %211
  }
}

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