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_255:i32 = let %15
    store %k, %x_255
    %17:i32 = load %f
    %x_256:i32 = let %17
    store %i, %x_256
    %19:i32 = load %mid
    %x_257:i32 = let %19
    %21:i32 = add %x_257, 1i
    store %j, %21
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %x_283:ptr<function, i32, read_write> = var
        %x_284:ptr<function, i32, read_write> = var
        %x_303:ptr<function, i32, read_write> = var
        %x_304:ptr<function, i32, read_write> = var
        %x_318:ptr<function, i32, read_write> = var
        %x_322:ptr<function, i32, read_write> = var
        %x_337:ptr<function, i32, read_write> = var
        %x_336:ptr<function, i32, read_write> = var
        %x_350:ptr<function, i32, read_write> = var
        %x_349:ptr<function, i32, read_write> = var
        %x_364:ptr<function, i32, read_write> = var
        %x_363:ptr<function, i32, read_write> = var
        %x_285_phi:ptr<function, i32, read_write> = var
        %x_305_phi:ptr<function, i32, read_write> = var
        %x_326_phi:ptr<function, i32, read_write> = var
        %x_338_phi:ptr<function, i32, read_write> = var
        %x_351_phi:ptr<function, i32, read_write> = var
        %x_365_phi:ptr<function, i32, read_write> = var
        if true [t: $B5, f: $B6] {  # if_1
          $B5: {  # true
            exit_if  # if_1
          }
          $B6: {  # false
            continue  # -> $B4
          }
        }
        %40:i32 = load %i
        %x_264:i32 = let %40
        %42:i32 = load %mid
        %x_265:i32 = let %42
        %44:i32 = load %j
        %x_267:i32 = let %44
        %46:i32 = load %to
        %x_268:i32 = let %46
        %48:bool = lte %x_264, %x_265
        %49:bool = lte %x_267, %x_268
        %50:bool = and %48, %49
        if %50 [t: $B7, f: $B8] {  # if_2
          $B7: {  # true
            exit_if  # if_2
          }
          $B8: {  # false
            exit_loop  # loop_1
          }
        }
        %51:i32 = load %i
        %x_272:i32 = let %51
        %53:ptr<private, i32, read_write> = access %data, %x_272
        %54:i32 = load %53
        %x_274:i32 = let %54
        %56:i32 = load %j
        %x_275:i32 = let %56
        %58:ptr<private, i32, read_write> = access %data, %x_275
        %59:i32 = load %58
        %x_277:i32 = let %59
        %61:bool = lt %x_274, %x_277
        %x_278:bool = let %61
        if %x_278 [t: $B9, f: $B10] {  # if_3
          $B9: {  # true
            %63:i32 = load %k
            store %x_283, %63
            %64:i32 = load %x_283
            store %x_285_phi, %64
            exit_if  # if_3
          }
          $B10: {  # false
            store %x_284, 0i
            %65:i32 = load %x_284
            store %x_285_phi, %65
            exit_if  # if_3
          }
        }
        %66:i32 = load %x_285_phi
        %x_285:i32 = let %66
        %68:i32 = add %x_285, 1i
        %x_286:i32 = let %68
        if %x_278 [t: $B11] {  # if_4
          $B11: {  # true
            store %k, %x_286
            %70:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
            %71:f32 = load_vector_element %70, 0u
            %x_291:f32 = let %71
            %73:bool = lte 1.0f, %x_291
            %74:bool = eq %73, false
            if %74 [t: $B12, f: $B13] {  # if_5
              $B12: {  # true
                exit_if  # if_5
              }
              $B13: {  # false
                continue  # -> $B4
              }
            }
            exit_if  # if_4
          }
        }
        %75:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
        %76:f32 = load_vector_element %75, 1u
        %x_295:f32 = let %76
        %78:bool = gte %x_295, 0.0f
        if %78 [t: $B14, f: $B15] {  # if_6
          $B14: {  # true
            exit_if  # if_6
          }
          $B15: {  # false
            continue  # -> $B4
          }
        }
        %x_298:i32 = let 0i
        if %x_278 [t: $B16, f: $B17] {  # if_7
          $B16: {  # true
            %80:i32 = load %i
            store %x_303, %80
            %81:i32 = load %x_303
            store %x_305_phi, %81
            exit_if  # if_7
          }
          $B17: {  # false
            store %x_304, 0i
            %82:i32 = load %x_304
            store %x_305_phi, %82
            exit_if  # if_7
          }
        }
        %83:i32 = load %x_305_phi
        %x_305:i32 = let %83
        %85:i32 = select %x_298, %x_305, %x_278
        %x_307:i32 = let %85
        if %x_278 [t: $B18] {  # if_8
          $B18: {  # true
            %87:i32 = add %x_307, 1i
            store %i, %87
            exit_if  # if_8
          }
        }
        %x_313:i32 = let 0i
        if %x_278 [t: $B19, f: $B20] {  # if_9
          $B19: {  # true
            %89:ptr<private, i32, read_write> = access %data, %x_307
            %90:i32 = load %89
            store %x_318, %90
            %91:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
            %92:f32 = load_vector_element %91, 1u
            %x_320:f32 = let %92
            %94:i32 = load %x_318
            store %x_326_phi, %94
            %95:bool = lte 0.0f, %x_320
            %96:bool = eq %95, false
            if %96 [t: $B21] {  # if_10
              $B21: {  # true
                continue  # -> $B4
              }
            }
            exit_if  # if_9
          }
          $B20: {  # false
            store %x_322, 0i
            %97:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
            %98:f32 = load_vector_element %97, 1u
            %x_324:f32 = let %98
            %100:i32 = load %x_322
            store %x_326_phi, %100
            %101:bool = lt %x_324, 0.0f
            %102:bool = eq %101, false
            if %102 [t: $B22, f: $B23] {  # if_11
              $B22: {  # true
                exit_if  # if_11
              }
              $B23: {  # false
                continue  # -> $B4
              }
            }
            exit_if  # if_9
          }
        }
        %103:i32 = load %x_326_phi
        %x_326:i32 = let %103
        if %x_278 [t: $B24] {  # if_12
          $B24: {  # true
            %105:ptr<private, i32, read_write> = access %temp, %x_285
            %106:i32 = select %x_313, %x_326, %x_278
            store %105, %106
            exit_if  # if_12
          }
        }
        if %x_278 [t: $B25, f: $B26] {  # if_13
          $B25: {  # true
            store %x_337, 0i
            %107:i32 = load %x_337
            store %x_338_phi, %107
            exit_if  # if_13
          }
          $B26: {  # false
            %108:i32 = load %k
            store %x_336, %108
            %109:i32 = load %x_336
            store %x_338_phi, %109
            exit_if  # if_13
          }
        }
        %110:i32 = load %x_338_phi
        %x_338:i32 = let %110
        if %x_278 [t: $B27, f: $B28] {  # if_14
          $B27: {  # true
            exit_if  # if_14
          }
          $B28: {  # false
            %112:i32 = add %x_338, 1i
            store %k, %112
            exit_if  # if_14
          }
        }
        %113:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
        %114:f32 = load_vector_element %113, 0u
        %x_343:f32 = let %114
        %116:bool = lte 1.0f, %x_343
        %117:bool = eq %116, false
        if %117 [t: $B29, f: $B30] {  # if_15
          $B29: {  # true
            exit_if  # if_15
          }
          $B30: {  # false
            continue  # -> $B4
          }
        }
        if %x_278 [t: $B31, f: $B32] {  # if_16
          $B31: {  # true
            store %x_350, 0i
            %118:i32 = load %x_350
            store %x_351_phi, %118
            exit_if  # if_16
          }
          $B32: {  # false
            %119:i32 = load %j
            store %x_349, %119
            %120:i32 = load %x_349
            store %x_351_phi, %120
            exit_if  # if_16
          }
        }
        %121:i32 = load %x_351_phi
        %x_351:i32 = let %121
        %x_353:i32 = let 0i
        %124:i32 = select %x_351, %x_353, %x_278
        %x_355:i32 = let %124
        if %x_278 [t: $B33, f: $B34] {  # if_17
          $B33: {  # true
            exit_if  # if_17
          }
          $B34: {  # false
            %126:i32 = add %x_355, 1i
            store %j, %126
            exit_if  # if_17
          }
        }
        if %x_278 [t: $B35, f: $B36] {  # if_18
          $B35: {  # true
            store %x_364, 0i
            %127:i32 = load %x_364
            store %x_365_phi, %127
            exit_if  # if_18
          }
          $B36: {  # false
            %128:ptr<private, i32, read_write> = access %data, %x_355
            %129:i32 = load %128
            store %x_363, %129
            %130:i32 = load %x_363
            store %x_365_phi, %130
            exit_if  # if_18
          }
        }
        %131:i32 = load %x_365_phi
        %x_365:i32 = let %131
        if %x_278 [t: $B37, f: $B38] {  # if_19
          $B37: {  # true
            exit_if  # if_19
          }
          $B38: {  # false
            %133:ptr<private, i32, read_write> = access %temp, %x_338
            store %133, %x_365
            exit_if  # if_19
          }
        }
        continue  # -> $B4
      }
      $B4: {  # continuing
        next_iteration  # -> $B3
      }
    }
    loop [b: $B39, c: $B40] {  # loop_2
      $B39: {  # body
        %134:i32 = load %i
        %x_374:i32 = let %134
        %136:i32 = load %i
        %x_376:i32 = let %136
        %138:i32 = load %mid
        %x_377:i32 = let %138
        %140:bool = lt %x_374, 10i
        %141:bool = lte %x_376, %x_377
        %142:bool = and %140, %141
        if %142 [t: $B41, f: $B42] {  # if_20
          $B41: {  # true
            exit_if  # if_20
          }
          $B42: {  # false
            exit_loop  # loop_2
          }
        }
        %143:i32 = load %k
        %x_381:i32 = let %143
        %145:i32 = add %x_381, 1i
        store %k, %145
        %146:i32 = load %i
        %x_383:i32 = let %146
        %148:i32 = add %x_383, 1i
        store %i, %148
        %149:ptr<private, i32, read_write> = access %data, %x_383
        %150:i32 = load %149
        %x_386:i32 = let %150
        %152:ptr<private, i32, read_write> = access %temp, %x_381
        store %152, %x_386
        continue  # -> $B40
      }
      $B40: {  # continuing
        next_iteration  # -> $B39
      }
    }
    %153:i32 = load %f
    %x_388:i32 = let %153
    store %i_1, %x_388
    loop [b: $B43, c: $B44] {  # loop_3
      $B43: {  # body
        %155:i32 = load %i_1
        %x_393:i32 = let %155
        %157:i32 = load %to
        %x_394:i32 = let %157
        %159:bool = lte %x_393, %x_394
        if %159 [t: $B45, f: $B46] {  # if_21
          $B45: {  # true
            exit_if  # if_21
          }
          $B46: {  # false
            exit_loop  # loop_3
          }
        }
        %160:i32 = load %i_1
        %x_397:i32 = let %160
        %162:i32 = load %i_1
        %x_398:i32 = let %162
        %164:ptr<private, i32, read_write> = access %temp, %x_398
        %165:i32 = load %164
        %x_400:i32 = let %165
        %167:ptr<private, i32, read_write> = access %data, %x_397
        store %167, %x_400
        continue  # -> $B44
      }
      $B44: {  # continuing
        %168:i32 = load %i_1
        %x_402:i32 = let %168
        %170:i32 = add %x_402, 1i
        store %i_1, %170
        next_iteration  # -> $B43
      }
    }
    ret
  }
}
%mergeSort_ = func():void {
  $B47: {
    %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: $B48, c: $B49] {  # loop_4
      $B48: {  # body
        %182:i32 = load %m
        %x_409:i32 = let %182
        %184:i32 = load %high
        %x_410:i32 = let %184
        %186:bool = lte %x_409, %x_410
        if %186 [t: $B50, f: $B51] {  # if_22
          $B50: {  # true
            exit_if  # if_22
          }
          $B51: {  # false
            exit_loop  # loop_4
          }
        }
        %187:i32 = load %low
        %x_413:i32 = let %187
        store %i_2, %x_413
        loop [b: $B52, c: $B53] {  # loop_5
          $B52: {  # body
            %189:i32 = load %i_2
            %x_418:i32 = let %189
            %191:i32 = load %high
            %x_419:i32 = let %191
            %193:bool = lt %x_418, %x_419
            if %193 [t: $B54, f: $B55] {  # if_23
              $B54: {  # true
                exit_if  # if_23
              }
              $B55: {  # false
                exit_loop  # loop_5
              }
            }
            %194:i32 = load %i_2
            %x_422:i32 = let %194
            store %f_1, %x_422
            %196:i32 = load %i_2
            %x_423:i32 = let %196
            %198:i32 = load %m
            %x_424:i32 = let %198
            %200:i32 = add %x_423, %x_424
            %201:i32 = sub %200, 1i
            store %mid_1, %201
            %202:i32 = load %i_2
            %x_427:i32 = let %202
            %204:i32 = load %m
            %x_428:i32 = let %204
            %206:i32 = load %high
            %x_432:i32 = let %206
            %208:i32 = mul 2i, %x_428
            %209:i32 = add %x_427, %208
            %210:i32 = sub %209, 1i
            %211:i32 = min %210, %x_432
            store %to_1, %211
            %212:i32 = load %f_1
            %x_434:i32 = let %212
            store %param, %x_434
            %214:i32 = load %mid_1
            %x_435:i32 = let %214
            store %param_1, %x_435
            %216:i32 = load %to_1
            %x_436:i32 = let %216
            store %param_2, %x_436
            %218:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
            continue  # -> $B53
          }
          $B53: {  # continuing
            %219:i32 = load %m
            %x_438:i32 = let %219
            %221:i32 = load %i_2
            %x_440:i32 = let %221
            %223:i32 = mul 2i, %x_438
            %224:i32 = add %x_440, %223
            store %i_2, %224
            next_iteration  # -> $B52
          }
        }
        continue  # -> $B49
      }
      $B49: {  # continuing
        %225:i32 = load %m
        %x_442:i32 = let %225
        %227:i32 = mul 2i, %x_442
        store %m, %227
        next_iteration  # -> $B48
      }
    }
    ret
  }
}
%main_1 = func():void {
  $B56: {
    %i_3:ptr<function, i32, read_write> = var
    %j_1:ptr<function, i32, read_write> = var
    %grey:ptr<function, f32, read_write> = var
    %232:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
    %233:f32 = load_vector_element %232, 0u
    %x_88:f32 = let %233
    %235:i32 = call %tint_f32_to_i32, %x_88
    store %i_3, %235
    loop [b: $B57, c: $B58] {  # loop_6
      $B57: {  # body
        %237:i32 = load %i_3
        %x_94:i32 = let %237
        switch %x_94 [c: (9i, $B59), c: (8i, $B60), c: (7i, $B61), c: (6i, $B62), c: (5i, $B63), c: (4i, $B64), c: (3i, $B65), c: (2i, $B66), c: (1i, $B67), c: (0i, $B68), c: (default, $B69)] {  # switch_1
          $B59: {  # case
            %239:i32 = load %i_3
            %x_124:i32 = let %239
            %241:ptr<private, i32, read_write> = access %data, %x_124
            store %241, -5i
            exit_switch  # switch_1
          }
          $B60: {  # case
            %242:i32 = load %i_3
            %x_122:i32 = let %242
            %244:ptr<private, i32, read_write> = access %data, %x_122
            store %244, -4i
            exit_switch  # switch_1
          }
          $B61: {  # case
            %245:i32 = load %i_3
            %x_120:i32 = let %245
            %247:ptr<private, i32, read_write> = access %data, %x_120
            store %247, -3i
            exit_switch  # switch_1
          }
          $B62: {  # case
            %248:i32 = load %i_3
            %x_118:i32 = let %248
            %250:ptr<private, i32, read_write> = access %data, %x_118
            store %250, -2i
            exit_switch  # switch_1
          }
          $B63: {  # case
            %251:i32 = load %i_3
            %x_116:i32 = let %251
            %253:ptr<private, i32, read_write> = access %data, %x_116
            store %253, -1i
            exit_switch  # switch_1
          }
          $B64: {  # case
            %254:i32 = load %i_3
            %x_114:i32 = let %254
            %256:ptr<private, i32, read_write> = access %data, %x_114
            store %256, 0i
            exit_switch  # switch_1
          }
          $B65: {  # case
            %257:i32 = load %i_3
            %x_112:i32 = let %257
            %259:ptr<private, i32, read_write> = access %data, %x_112
            store %259, 1i
            exit_switch  # switch_1
          }
          $B66: {  # case
            %260:i32 = load %i_3
            %x_110:i32 = let %260
            %262:ptr<private, i32, read_write> = access %data, %x_110
            store %262, 2i
            exit_switch  # switch_1
          }
          $B67: {  # case
            %263:i32 = load %i_3
            %x_108:i32 = let %263
            %265:ptr<private, i32, read_write> = access %data, %x_108
            store %265, 3i
            exit_switch  # switch_1
          }
          $B68: {  # case
            %266:i32 = load %i_3
            %x_106:i32 = let %266
            %268:ptr<private, i32, read_write> = access %data, %x_106
            store %268, 4i
            exit_switch  # switch_1
          }
          $B69: {  # case
            exit_switch  # switch_1
          }
        }
        %269:i32 = load %i_3
        %x_126:i32 = let %269
        %271:i32 = add %x_126, 1i
        store %i_3, %271
        continue  # -> $B58
      }
      $B58: {  # continuing
        %272:i32 = load %i_3
        %x_128:i32 = let %272
        %274:bool = lt %x_128, 10i
        %275:bool = eq %274, false
        break_if %275  # -> [t: exit_loop loop_6, f: $B57]
      }
    }
    store %j_1, 0i
    loop [b: $B70, c: $B71] {  # loop_7
      $B70: {  # body
        %276:i32 = load %j_1
        %x_134:i32 = let %276
        %278:bool = lt %x_134, 10i
        if %278 [t: $B72, f: $B73] {  # if_24
          $B72: {  # true
            exit_if  # if_24
          }
          $B73: {  # false
            exit_loop  # loop_7
          }
        }
        %279:i32 = load %j_1
        %x_137:i32 = let %279
        %281:i32 = load %j_1
        %x_138:i32 = let %281
        %283:ptr<private, i32, read_write> = access %data, %x_138
        %284:i32 = load %283
        %x_140:i32 = let %284
        %286:ptr<private, i32, read_write> = access %temp, %x_137
        store %286, %x_140
        continue  # -> $B71
      }
      $B71: {  # continuing
        %287:i32 = load %j_1
        %x_142:i32 = let %287
        %289:i32 = add %x_142, 1i
        store %j_1, %289
        next_iteration  # -> $B70
      }
    }
    %290:void = call %mergeSort_
    %291:f32 = load_vector_element %gl_FragCoord, 1u
    %x_146:f32 = let %291
    %293:i32 = call %tint_f32_to_i32, %x_146
    %294:bool = lt %293, 30i
    if %294 [t: $B74, f: $B75] {  # if_25
      $B74: {  # true
        %295:ptr<private, i32, read_write> = access %data, 0i
        %296:i32 = load %295
        %x_153:i32 = let %296
        %298:f32 = convert %x_153
        %299:f32 = div %298, 10.0f
        %300:f32 = add 0.5f, %299
        store %grey, %300
        exit_if  # if_25
      }
      $B75: {  # false
        %301:f32 = load_vector_element %gl_FragCoord, 1u
        %x_158:f32 = let %301
        %303:i32 = call %tint_f32_to_i32, %x_158
        %304:bool = lt %303, 60i
        if %304 [t: $B76, f: $B77] {  # if_26
          $B76: {  # true
            %305:ptr<private, i32, read_write> = access %data, 1i
            %306:i32 = load %305
            %x_165:i32 = let %306
            %308:f32 = convert %x_165
            %309:f32 = div %308, 10.0f
            %310:f32 = add 0.5f, %309
            store %grey, %310
            exit_if  # if_26
          }
          $B77: {  # false
            %311:f32 = load_vector_element %gl_FragCoord, 1u
            %x_170:f32 = let %311
            %313:i32 = call %tint_f32_to_i32, %x_170
            %314:bool = lt %313, 90i
            if %314 [t: $B78, f: $B79] {  # if_27
              $B78: {  # true
                %315:ptr<private, i32, read_write> = access %data, 2i
                %316:i32 = load %315
                %x_177:i32 = let %316
                %318:f32 = convert %x_177
                %319:f32 = div %318, 10.0f
                %320:f32 = add 0.5f, %319
                store %grey, %320
                exit_if  # if_27
              }
              $B79: {  # false
                %321:f32 = load_vector_element %gl_FragCoord, 1u
                %x_182:f32 = let %321
                %323:i32 = call %tint_f32_to_i32, %x_182
                %324:bool = lt %323, 120i
                if %324 [t: $B80, f: $B81] {  # if_28
                  $B80: {  # true
                    %325:ptr<private, i32, read_write> = access %data, 3i
                    %326:i32 = load %325
                    %x_189:i32 = let %326
                    %328:f32 = convert %x_189
                    %329:f32 = div %328, 10.0f
                    %330:f32 = add 0.5f, %329
                    store %grey, %330
                    exit_if  # if_28
                  }
                  $B81: {  # false
                    %331:f32 = load_vector_element %gl_FragCoord, 1u
                    %x_194:f32 = let %331
                    %333:i32 = call %tint_f32_to_i32, %x_194
                    %334:bool = lt %333, 150i
                    if %334 [t: $B82, f: $B83] {  # if_29
                      $B82: {  # true
                        store %continue_execution, false
                        exit_if  # if_29
                      }
                      $B83: {  # false
                        %335:f32 = load_vector_element %gl_FragCoord, 1u
                        %x_201:f32 = let %335
                        %337:i32 = call %tint_f32_to_i32, %x_201
                        %338:bool = lt %337, 180i
                        if %338 [t: $B84, f: $B85] {  # if_30
                          $B84: {  # true
                            %339:ptr<private, i32, read_write> = access %data, 5i
                            %340:i32 = load %339
                            %x_208:i32 = let %340
                            %342:f32 = convert %x_208
                            %343:f32 = div %342, 10.0f
                            %344:f32 = add 0.5f, %343
                            store %grey, %344
                            exit_if  # if_30
                          }
                          $B85: {  # false
                            %345:f32 = load_vector_element %gl_FragCoord, 1u
                            %x_213:f32 = let %345
                            %347:i32 = call %tint_f32_to_i32, %x_213
                            %348:bool = lt %347, 210i
                            if %348 [t: $B86, f: $B87] {  # if_31
                              $B86: {  # true
                                %349:ptr<private, i32, read_write> = access %data, 6i
                                %350:i32 = load %349
                                %x_220:i32 = let %350
                                %352:f32 = convert %x_220
                                %353:f32 = div %352, 10.0f
                                %354:f32 = add 0.5f, %353
                                store %grey, %354
                                exit_if  # if_31
                              }
                              $B87: {  # false
                                %355:f32 = load_vector_element %gl_FragCoord, 1u
                                %x_225:f32 = let %355
                                %357:i32 = call %tint_f32_to_i32, %x_225
                                %358:bool = lt %357, 240i
                                if %358 [t: $B88, f: $B89] {  # if_32
                                  $B88: {  # true
                                    %359:ptr<private, i32, read_write> = access %data, 7i
                                    %360:i32 = load %359
                                    %x_232:i32 = let %360
                                    %362:f32 = convert %x_232
                                    %363:f32 = div %362, 10.0f
                                    %364:f32 = add 0.5f, %363
                                    store %grey, %364
                                    exit_if  # if_32
                                  }
                                  $B89: {  # false
                                    %365:f32 = load_vector_element %gl_FragCoord, 1u
                                    %x_237:f32 = let %365
                                    %367:i32 = call %tint_f32_to_i32, %x_237
                                    %368:bool = lt %367, 270i
                                    if %368 [t: $B90, f: $B91] {  # if_33
                                      $B90: {  # true
                                        %369:ptr<private, i32, read_write> = access %data, 8i
                                        %370:i32 = load %369
                                        %x_244:i32 = let %370
                                        %372:f32 = convert %x_244
                                        %373:f32 = div %372, 10.0f
                                        %374:f32 = add 0.5f, %373
                                        store %grey, %374
                                        exit_if  # if_33
                                      }
                                      $B91: {  # false
                                        store %continue_execution, false
                                        exit_if  # if_33
                                      }
                                    }
                                    exit_if  # if_32
                                  }
                                }
                                exit_if  # if_31
                              }
                            }
                            exit_if  # if_30
                          }
                        }
                        exit_if  # if_29
                      }
                    }
                    exit_if  # if_28
                  }
                }
                exit_if  # if_27
              }
            }
            exit_if  # if_26
          }
        }
        exit_if  # if_25
      }
    }
    %375:f32 = load %grey
    %x_248:f32 = let %375
    %377:vec3<f32> = construct %x_248, %x_248, %x_248
    %x_249:vec3<f32> = let %377
    %379:f32 = access %x_249, 0u
    %380:f32 = access %x_249, 1u
    %381:f32 = access %x_249, 2u
    %382:vec4<f32> = construct %379, %380, %381, 1.0f
    store %x_GLF_color, %382
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
  $B92: {
    store %gl_FragCoord, %gl_FragCoord_param
    %385:void = call %main_1
    %386:vec4<f32> = load %x_GLF_color
    %387:main_out = construct %386
    %388:bool = load %continue_execution
    %389:bool = eq %388, false
    if %389 [t: $B93] {  # if_34
      $B93: {  # true
        terminate_invocation
      }
    }
    ret %387
  }
}
%tint_f32_to_i32 = func(%value:f32):i32 {
  $B94: {
    %391:i32 = convert %value
    %392:bool = gte %value, -2147483648.0f
    %393:i32 = select -2147483648i, %391, %392
    %394:bool = lte %value, 2147483520.0f
    %395:i32 = select 2147483647i, %393, %394
    ret %395
  }
}

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