SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
  injectionSwitch:vec2<f32> @offset(0)
}

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

$B1: {  # root
  %data:ptr<private, array<i32, 10>, read_write> = var
  %temp:ptr<private, array<i32, 10>, read_write> = var
  %x_28:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
  %continue_execution:ptr<private, bool, read_write> = var, true
}

%merge_i1_i1_i1_ = func(%f:ptr<function, i32, read_write>, %mid:ptr<function, i32, read_write>, %to:ptr<function, i32, read_write>):void {
  $B2: {
    %k:ptr<function, i32, read_write> = var
    %i:ptr<function, i32, read_write> = var
    %j:ptr<function, i32, read_write> = var
    %i_1:ptr<function, i32, read_write> = var
    %15:i32 = load %f
    %x_251:i32 = let %15
    store %k, %x_251
    %17:i32 = load %f
    %x_252:i32 = let %17
    store %i, %x_252
    %19:i32 = load %mid
    %x_253:i32 = let %19
    %21:i32 = add %x_253, 1i
    store %j, %21
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %22:i32 = load %i
        %x_259:i32 = let %22
        %24:i32 = load %mid
        %x_260:i32 = let %24
        %26:i32 = load %j
        %x_262:i32 = let %26
        %28:i32 = load %to
        %x_263:i32 = let %28
        %30:bool = lte %x_259, %x_260
        %31:bool = lte %x_262, %x_263
        %32:bool = and %30, %31
        if %32 [t: $B5, f: $B6] {  # if_1
          $B5: {  # true
            exit_if  # if_1
          }
          $B6: {  # false
            exit_loop  # loop_1
          }
        }
        %33:i32 = load %i
        %x_267:i32 = let %33
        %35:ptr<private, i32, read_write> = access %data, %x_267
        %36:i32 = load %35
        %x_269:i32 = let %36
        %38:i32 = load %j
        %x_270:i32 = let %38
        %40:ptr<private, i32, read_write> = access %data, %x_270
        %41:i32 = load %40
        %x_272:i32 = let %41
        %43:bool = lt %x_269, %x_272
        if %43 [t: $B7, f: $B8] {  # if_2
          $B7: {  # true
            %44:i32 = load %k
            %x_277:i32 = let %44
            %46:i32 = add %x_277, 1i
            store %k, %46
            %47:i32 = load %i
            %x_279:i32 = let %47
            %49:i32 = add %x_279, 1i
            store %i, %49
            %50:ptr<private, i32, read_write> = access %data, %x_279
            %51:i32 = load %50
            %x_282:i32 = let %51
            %53:ptr<private, i32, read_write> = access %temp, %x_277
            store %53, %x_282
            exit_if  # if_2
          }
          $B8: {  # false
            %54:i32 = load %k
            %x_284:i32 = let %54
            %56:i32 = add %x_284, 1i
            store %k, %56
            %57:i32 = load %j
            %x_286:i32 = let %57
            %59:i32 = add %x_286, 1i
            store %j, %59
            %60:ptr<private, i32, read_write> = access %data, %x_286
            %61:i32 = load %60
            %x_289:i32 = let %61
            %63:ptr<private, i32, read_write> = access %temp, %x_284
            store %63, %x_289
            exit_if  # if_2
          }
        }
        continue  # -> $B4
      }
      $B4: {  # continuing
        next_iteration  # -> $B3
      }
    }
    loop [b: $B9, c: $B10] {  # loop_2
      $B9: {  # body
        %64:i32 = load %i
        %x_295:i32 = let %64
        %66:i32 = load %i
        %x_297:i32 = let %66
        %68:i32 = load %mid
        %x_298:i32 = let %68
        %70:bool = lt %x_295, 10i
        %71:bool = lte %x_297, %x_298
        %72:bool = and %70, %71
        if %72 [t: $B11, f: $B12] {  # if_3
          $B11: {  # true
            exit_if  # if_3
          }
          $B12: {  # false
            exit_loop  # loop_2
          }
        }
        %73:i32 = load %k
        %x_302:i32 = let %73
        %75:i32 = add %x_302, 1i
        store %k, %75
        %76:i32 = load %i
        %x_304:i32 = let %76
        %78:i32 = add %x_304, 1i
        store %i, %78
        %79:ptr<private, i32, read_write> = access %data, %x_304
        %80:i32 = load %79
        %x_307:i32 = let %80
        %82:ptr<private, i32, read_write> = access %temp, %x_302
        store %82, %x_307
        continue  # -> $B10
      }
      $B10: {  # continuing
        next_iteration  # -> $B9
      }
    }
    %83:i32 = load %f
    %x_309:i32 = let %83
    store %i_1, %x_309
    loop [b: $B13, c: $B14] {  # loop_3
      $B13: {  # body
        %85:i32 = load %i_1
        %x_314:i32 = let %85
        %87:i32 = load %to
        %x_315:i32 = let %87
        %89:bool = lte %x_314, %x_315
        if %89 [t: $B15, f: $B16] {  # if_4
          $B15: {  # true
            exit_if  # if_4
          }
          $B16: {  # false
            exit_loop  # loop_3
          }
        }
        %90:i32 = load %i_1
        %x_318:i32 = let %90
        %92:i32 = load %i_1
        %x_319:i32 = let %92
        %94:ptr<private, i32, read_write> = access %temp, %x_319
        %95:i32 = load %94
        %x_321:i32 = let %95
        %97:ptr<private, i32, read_write> = access %data, %x_318
        store %97, %x_321
        continue  # -> $B14
      }
      $B14: {  # continuing
        %98:i32 = load %i_1
        %x_323:i32 = let %98
        %100:i32 = add %x_323, 1i
        store %i_1, %100
        next_iteration  # -> $B13
      }
    }
    ret
  }
}
%mergeSort_ = func():void {
  $B17: {
    %low:ptr<function, i32, read_write> = var
    %high:ptr<function, i32, read_write> = var
    %m:ptr<function, i32, read_write> = var
    %i_2:ptr<function, i32, read_write> = var
    %f_1:ptr<function, i32, read_write> = var
    %mid_1:ptr<function, i32, read_write> = var
    %to_1:ptr<function, i32, read_write> = var
    %param:ptr<function, i32, read_write> = var
    %param_1:ptr<function, i32, read_write> = var
    %param_2:ptr<function, i32, read_write> = var
    store %low, 0i
    store %high, 9i
    store %m, 1i
    loop [b: $B18, c: $B19] {  # loop_4
      $B18: {  # body
        %112:i32 = load %m
        %x_330:i32 = let %112
        %114:i32 = load %high
        %x_331:i32 = let %114
        %116:bool = lte %x_330, %x_331
        if %116 [t: $B20, f: $B21] {  # if_5
          $B20: {  # true
            exit_if  # if_5
          }
          $B21: {  # false
            exit_loop  # loop_4
          }
        }
        %117:i32 = load %low
        %x_334:i32 = let %117
        store %i_2, %x_334
        loop [b: $B22, c: $B23] {  # loop_5
          $B22: {  # body
            %119:i32 = load %i_2
            %x_339:i32 = let %119
            %121:i32 = load %high
            %x_340:i32 = let %121
            %123:bool = lt %x_339, %x_340
            if %123 [t: $B24, f: $B25] {  # if_6
              $B24: {  # true
                exit_if  # if_6
              }
              $B25: {  # false
                exit_loop  # loop_5
              }
            }
            %124:i32 = load %i_2
            %x_343:i32 = let %124
            store %f_1, %x_343
            %126:i32 = load %i_2
            %x_344:i32 = let %126
            %128:i32 = load %m
            %x_345:i32 = let %128
            %130:i32 = add %x_344, %x_345
            %131:i32 = sub %130, 1i
            store %mid_1, %131
            %132:i32 = load %i_2
            %x_348:i32 = let %132
            %134:i32 = load %m
            %x_349:i32 = let %134
            %136:i32 = load %high
            %x_353:i32 = let %136
            %138:i32 = mul 2i, %x_349
            %139:i32 = add %x_348, %138
            %140:i32 = sub %139, 1i
            %141:i32 = min %140, %x_353
            store %to_1, %141
            %142:i32 = load %f_1
            %x_355:i32 = let %142
            store %param, %x_355
            %144:i32 = load %mid_1
            %x_356:i32 = let %144
            store %param_1, %x_356
            %146:i32 = load %to_1
            %x_357:i32 = let %146
            store %param_2, %x_357
            %148:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
            continue  # -> $B23
          }
          $B23: {  # continuing
            %149:i32 = load %m
            %x_359:i32 = let %149
            %151:i32 = load %i_2
            %x_361:i32 = let %151
            %153:i32 = mul 2i, %x_359
            %154:i32 = add %x_361, %153
            store %i_2, %154
            next_iteration  # -> $B22
          }
        }
        continue  # -> $B19
      }
      $B19: {  # continuing
        %155:i32 = load %m
        %x_363:i32 = let %155
        %157:i32 = mul 2i, %x_363
        store %m, %157
        next_iteration  # -> $B18
      }
    }
    ret
  }
}
%main_1 = func():void {
  $B26: {
    %i_3:ptr<function, i32, read_write> = var
    %j_1:ptr<function, i32, read_write> = var
    %grey:ptr<function, f32, read_write> = var
    %162:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
    %163:f32 = load_vector_element %162, 0u
    %x_84:f32 = let %163
    %165:i32 = call %tint_f32_to_i32, %x_84
    store %i_3, %165
    loop [b: $B27, c: $B28] {  # loop_6
      $B27: {  # body
        %167:i32 = load %i_3
        %x_90:i32 = let %167
        switch %x_90 [c: (9i, $B29), c: (8i, $B30), c: (7i, $B31), c: (6i, $B32), c: (5i, $B33), c: (4i, $B34), c: (3i, $B35), c: (2i, $B36), c: (1i, $B37), c: (0i, $B38), c: (default, $B39)] {  # switch_1
          $B29: {  # case
            %169:i32 = load %i_3
            %x_120:i32 = let %169
            %171:ptr<private, i32, read_write> = access %data, %x_120
            store %171, -5i
            exit_switch  # switch_1
          }
          $B30: {  # case
            %172:i32 = load %i_3
            %x_118:i32 = let %172
            %174:ptr<private, i32, read_write> = access %data, %x_118
            store %174, -4i
            exit_switch  # switch_1
          }
          $B31: {  # case
            %175:i32 = load %i_3
            %x_116:i32 = let %175
            %177:ptr<private, i32, read_write> = access %data, %x_116
            store %177, -3i
            exit_switch  # switch_1
          }
          $B32: {  # case
            %178:i32 = load %i_3
            %x_114:i32 = let %178
            %180:ptr<private, i32, read_write> = access %data, %x_114
            store %180, -2i
            exit_switch  # switch_1
          }
          $B33: {  # case
            %181:i32 = load %i_3
            %x_112:i32 = let %181
            %183:ptr<private, i32, read_write> = access %data, %x_112
            store %183, -1i
            exit_switch  # switch_1
          }
          $B34: {  # case
            %184:i32 = load %i_3
            %x_110:i32 = let %184
            %186:ptr<private, i32, read_write> = access %data, %x_110
            store %186, 0i
            exit_switch  # switch_1
          }
          $B35: {  # case
            %187:i32 = load %i_3
            %x_108:i32 = let %187
            %189:ptr<private, i32, read_write> = access %data, %x_108
            store %189, 1i
            exit_switch  # switch_1
          }
          $B36: {  # case
            %190:i32 = load %i_3
            %x_106:i32 = let %190
            %192:ptr<private, i32, read_write> = access %data, %x_106
            store %192, 2i
            exit_switch  # switch_1
          }
          $B37: {  # case
            %193:i32 = load %i_3
            %x_104:i32 = let %193
            %195:ptr<private, i32, read_write> = access %data, %x_104
            store %195, 3i
            exit_switch  # switch_1
          }
          $B38: {  # case
            %196:i32 = load %i_3
            %x_102:i32 = let %196
            %198:ptr<private, i32, read_write> = access %data, %x_102
            store %198, 4i
            exit_switch  # switch_1
          }
          $B39: {  # case
            exit_switch  # switch_1
          }
        }
        %199:i32 = load %i_3
        %x_122:i32 = let %199
        %201:i32 = add %x_122, 1i
        store %i_3, %201
        continue  # -> $B28
      }
      $B28: {  # continuing
        %202:i32 = load %i_3
        %x_124:i32 = let %202
        %204:bool = lt %x_124, 10i
        %205:bool = eq %204, false
        break_if %205  # -> [t: exit_loop loop_6, f: $B27]
      }
    }
    store %j_1, 0i
    loop [b: $B40, c: $B41] {  # loop_7
      $B40: {  # body
        %206:i32 = load %j_1
        %x_130:i32 = let %206
        %208:bool = lt %x_130, 10i
        if %208 [t: $B42, f: $B43] {  # if_7
          $B42: {  # true
            exit_if  # if_7
          }
          $B43: {  # false
            exit_loop  # loop_7
          }
        }
        %209:i32 = load %j_1
        %x_133:i32 = let %209
        %211:i32 = load %j_1
        %x_134:i32 = let %211
        %213:ptr<private, i32, read_write> = access %data, %x_134
        %214:i32 = load %213
        %x_136:i32 = let %214
        %216:ptr<private, i32, read_write> = access %temp, %x_133
        store %216, %x_136
        continue  # -> $B41
      }
      $B41: {  # continuing
        %217:i32 = load %j_1
        %x_138:i32 = let %217
        %219:i32 = add %x_138, 1i
        store %j_1, %219
        next_iteration  # -> $B40
      }
    }
    %220:void = call %mergeSort_
    %221:f32 = load_vector_element %gl_FragCoord, 1u
    %x_142:f32 = let %221
    %223:i32 = call %tint_f32_to_i32, %x_142
    %224:bool = lt %223, 30i
    if %224 [t: $B44, f: $B45] {  # if_8
      $B44: {  # true
        %225:ptr<private, i32, read_write> = access %data, 0i
        %226:i32 = load %225
        %x_149:i32 = let %226
        %228:f32 = convert %x_149
        %229:f32 = div %228, 10.0f
        %230:f32 = add 0.5f, %229
        store %grey, %230
        exit_if  # if_8
      }
      $B45: {  # false
        %231:f32 = load_vector_element %gl_FragCoord, 1u
        %x_154:f32 = let %231
        %233:i32 = call %tint_f32_to_i32, %x_154
        %234:bool = lt %233, 60i
        if %234 [t: $B46, f: $B47] {  # if_9
          $B46: {  # true
            %235:ptr<private, i32, read_write> = access %data, 1i
            %236:i32 = load %235
            %x_161:i32 = let %236
            %238:f32 = convert %x_161
            %239:f32 = div %238, 10.0f
            %240:f32 = add 0.5f, %239
            store %grey, %240
            exit_if  # if_9
          }
          $B47: {  # false
            %241:f32 = load_vector_element %gl_FragCoord, 1u
            %x_166:f32 = let %241
            %243:i32 = call %tint_f32_to_i32, %x_166
            %244:bool = lt %243, 90i
            if %244 [t: $B48, f: $B49] {  # if_10
              $B48: {  # true
                %245:ptr<private, i32, read_write> = access %data, 2i
                %246:i32 = load %245
                %x_173:i32 = let %246
                %248:f32 = convert %x_173
                %249:f32 = div %248, 10.0f
                %250:f32 = add 0.5f, %249
                store %grey, %250
                exit_if  # if_10
              }
              $B49: {  # false
                %251:f32 = load_vector_element %gl_FragCoord, 1u
                %x_178:f32 = let %251
                %253:i32 = call %tint_f32_to_i32, %x_178
                %254:bool = lt %253, 120i
                if %254 [t: $B50, f: $B51] {  # if_11
                  $B50: {  # true
                    %255:ptr<private, i32, read_write> = access %data, 3i
                    %256:i32 = load %255
                    %x_185:i32 = let %256
                    %258:f32 = convert %x_185
                    %259:f32 = div %258, 10.0f
                    %260:f32 = add 0.5f, %259
                    store %grey, %260
                    exit_if  # if_11
                  }
                  $B51: {  # false
                    %261:f32 = load_vector_element %gl_FragCoord, 1u
                    %x_190:f32 = let %261
                    %263:i32 = call %tint_f32_to_i32, %x_190
                    %264:bool = lt %263, 150i
                    if %264 [t: $B52, f: $B53] {  # if_12
                      $B52: {  # true
                        store %continue_execution, false
                        exit_if  # if_12
                      }
                      $B53: {  # false
                        %265:f32 = load_vector_element %gl_FragCoord, 1u
                        %x_197:f32 = let %265
                        %267:i32 = call %tint_f32_to_i32, %x_197
                        %268:bool = lt %267, 180i
                        if %268 [t: $B54, f: $B55] {  # if_13
                          $B54: {  # true
                            %269:ptr<private, i32, read_write> = access %data, 5i
                            %270:i32 = load %269
                            %x_204:i32 = let %270
                            %272:f32 = convert %x_204
                            %273:f32 = div %272, 10.0f
                            %274:f32 = add 0.5f, %273
                            store %grey, %274
                            exit_if  # if_13
                          }
                          $B55: {  # false
                            %275:f32 = load_vector_element %gl_FragCoord, 1u
                            %x_209:f32 = let %275
                            %277:i32 = call %tint_f32_to_i32, %x_209
                            %278:bool = lt %277, 210i
                            if %278 [t: $B56, f: $B57] {  # if_14
                              $B56: {  # true
                                %279:ptr<private, i32, read_write> = access %data, 6i
                                %280:i32 = load %279
                                %x_216:i32 = let %280
                                %282:f32 = convert %x_216
                                %283:f32 = div %282, 10.0f
                                %284:f32 = add 0.5f, %283
                                store %grey, %284
                                exit_if  # if_14
                              }
                              $B57: {  # false
                                %285:f32 = load_vector_element %gl_FragCoord, 1u
                                %x_221:f32 = let %285
                                %287:i32 = call %tint_f32_to_i32, %x_221
                                %288:bool = lt %287, 240i
                                if %288 [t: $B58, f: $B59] {  # if_15
                                  $B58: {  # true
                                    %289:ptr<private, i32, read_write> = access %data, 7i
                                    %290:i32 = load %289
                                    %x_228:i32 = let %290
                                    %292:f32 = convert %x_228
                                    %293:f32 = div %292, 10.0f
                                    %294:f32 = add 0.5f, %293
                                    store %grey, %294
                                    exit_if  # if_15
                                  }
                                  $B59: {  # false
                                    %295:f32 = load_vector_element %gl_FragCoord, 1u
                                    %x_233:f32 = let %295
                                    %297:i32 = call %tint_f32_to_i32, %x_233
                                    %298:bool = lt %297, 270i
                                    if %298 [t: $B60, f: $B61] {  # if_16
                                      $B60: {  # true
                                        %299:ptr<private, i32, read_write> = access %data, 8i
                                        %300:i32 = load %299
                                        %x_240:i32 = let %300
                                        %302:f32 = convert %x_240
                                        %303:f32 = div %302, 10.0f
                                        %304:f32 = add 0.5f, %303
                                        store %grey, %304
                                        exit_if  # if_16
                                      }
                                      $B61: {  # false
                                        store %continue_execution, false
                                        exit_if  # if_16
                                      }
                                    }
                                    exit_if  # if_15
                                  }
                                }
                                exit_if  # if_14
                              }
                            }
                            exit_if  # if_13
                          }
                        }
                        exit_if  # if_12
                      }
                    }
                    exit_if  # if_11
                  }
                }
                exit_if  # if_10
              }
            }
            exit_if  # if_9
          }
        }
        exit_if  # if_8
      }
    }
    %305:f32 = load %grey
    %x_244:f32 = let %305
    %307:vec3<f32> = construct %x_244, %x_244, %x_244
    %x_245:vec3<f32> = let %307
    %309:f32 = access %x_245, 0u
    %310:f32 = access %x_245, 1u
    %311:f32 = access %x_245, 2u
    %312:vec4<f32> = construct %309, %310, %311, 1.0f
    store %x_GLF_color, %312
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
  $B62: {
    store %gl_FragCoord, %gl_FragCoord_param
    %315:void = call %main_1
    %316:vec4<f32> = load %x_GLF_color
    %317:main_out = construct %316
    %318:bool = load %continue_execution
    %319:bool = eq %318, false
    if %319 [t: $B63] {  # if_17
      $B63: {  # true
        terminate_invocation
      }
    }
    ret %317
  }
}
%tint_f32_to_i32 = func(%value:f32):i32 {
  $B64: {
    %321:i32 = convert %value
    %322:bool = gte %value, -2147483648.0f
    %323:i32 = select -2147483648i, %321, %322
    %324:bool = lte %value, 2147483520.0f
    %325:i32 = select 2147483647i, %323, %324
    ret %325
  }
}

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