SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: QuicksortObject = struct @align(4) {
  numbers:array<i32, 10> @offset(0)
}

buf0 = struct @align(8) {
  resolution:vec2<f32> @offset(0)
}

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

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

%swap_i1_i1_ = func(%i:ptr<function, i32, read_write>, %j:ptr<function, i32, read_write>):void {
  $B2: {
    %temp:ptr<function, i32, read_write> = var
    %9:i32 = load %i
    %x_230:i32 = let %9
    %11:ptr<private, i32, read_write> = access %obj, 0u, %x_230
    %12:i32 = load %11
    %x_232:i32 = let %12
    store %temp, %x_232
    %14:i32 = load %i
    %x_233:i32 = let %14
    %16:i32 = load %j
    %x_234:i32 = let %16
    %18:ptr<private, i32, read_write> = access %obj, 0u, %x_234
    %19:i32 = load %18
    %x_236:i32 = let %19
    %21:ptr<private, i32, read_write> = access %obj, 0u, %x_233
    store %21, %x_236
    %22:i32 = load %j
    %x_238:i32 = let %22
    %24:i32 = load %temp
    %x_239:i32 = let %24
    %26:ptr<private, i32, read_write> = access %obj, 0u, %x_238
    store %26, %x_239
    ret
  }
}
%performPartition_i1_i1_ = func(%l:ptr<function, i32, read_write>, %h:ptr<function, i32, read_write>):i32 {
  $B3: {
    %pivot:ptr<function, i32, read_write> = var
    %i_1:ptr<function, i32, read_write> = var
    %j_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
    %param_3:ptr<function, i32, read_write> = var
    %37:i32 = load %h
    %x_242:i32 = let %37
    %39:ptr<private, i32, read_write> = access %obj, 0u, %x_242
    %40:i32 = load %39
    %x_244:i32 = let %40
    store %pivot, %x_244
    %42:i32 = load %l
    %x_245:i32 = let %42
    %44:i32 = sub %x_245, 1i
    store %i_1, %44
    %45:i32 = load %l
    %x_247:i32 = let %45
    store %j_1, %x_247
    loop [b: $B4, c: $B5] {  # loop_1
      $B4: {  # body
        %47:i32 = load %j_1
        %x_252:i32 = let %47
        %49:i32 = load %h
        %x_253:i32 = let %49
        %51:i32 = sub %x_253, 1i
        %52:bool = lte %x_252, %51
        if %52 [t: $B6, f: $B7] {  # if_1
          $B6: {  # true
            exit_if  # if_1
          }
          $B7: {  # false
            exit_loop  # loop_1
          }
        }
        %53:i32 = load %j_1
        %x_257:i32 = let %53
        %55:ptr<private, i32, read_write> = access %obj, 0u, %x_257
        %56:i32 = load %55
        %x_259:i32 = let %56
        %58:i32 = load %pivot
        %x_260:i32 = let %58
        %60:bool = lte %x_259, %x_260
        if %60 [t: $B8] {  # if_2
          $B8: {  # true
            %61:i32 = load %i_1
            %x_264:i32 = let %61
            %63:i32 = add %x_264, 1i
            store %i_1, %63
            %64:i32 = load %i_1
            %x_266:i32 = let %64
            store %param, %x_266
            %66:i32 = load %j_1
            %x_267:i32 = let %66
            store %param_1, %x_267
            %68:void = call %swap_i1_i1_, %param, %param_1
            exit_if  # if_2
          }
        }
        continue  # -> $B5
      }
      $B5: {  # continuing
        %69:i32 = load %j_1
        %x_269:i32 = let %69
        %71:i32 = add %x_269, 1i
        store %j_1, %71
        next_iteration  # -> $B4
      }
    }
    %72:i32 = load %i_1
    %x_271:i32 = let %72
    %74:i32 = add %x_271, 1i
    store %i_1, %74
    %75:i32 = load %i_1
    %x_273:i32 = let %75
    store %param_2, %x_273
    %77:i32 = load %h
    %x_274:i32 = let %77
    store %param_3, %x_274
    %79:void = call %swap_i1_i1_, %param_2, %param_3
    %80:i32 = load %i_1
    %x_276:i32 = let %80
    ret %x_276
  }
}
%quicksort_ = func():void {
  $B9: {
    %l_1:ptr<function, i32, read_write> = var
    %h_1:ptr<function, i32, read_write> = var
    %top:ptr<function, i32, read_write> = var
    %stack:ptr<function, array<i32, 10>, read_write> = var
    %int_a:ptr<function, i32, read_write> = var
    %x_278:ptr<function, i32, read_write> = var
    %x_279:ptr<function, i32, read_write> = var
    %clamp_a:ptr<function, i32, read_write> = var
    %p:ptr<function, i32, read_write> = var
    %param_4:ptr<function, i32, read_write> = var
    %param_5:ptr<function, i32, read_write> = var
    store %l_1, 0i
    store %h_1, 9i
    store %top, -1i
    %94:i32 = load %top
    %x_280:i32 = let %94
    %96:i32 = add %x_280, 1i
    %x_281:i32 = let %96
    store %top, %x_281
    %98:i32 = load %l_1
    %x_282:i32 = let %98
    %100:ptr<function, i32, read_write> = access %stack, %x_281
    store %100, %x_282
    %101:f32 = load_vector_element %gl_FragCoord, 1u
    %x_285:f32 = let %101
    %103:bool = gte %x_285, 0.0f
    if %103 [t: $B10, f: $B11] {  # if_3
      $B10: {  # true
        %104:i32 = load %h_1
        %x_290:i32 = let %104
        if false [t: $B12, f: $B13] {  # if_4
          $B12: {  # true
            store %x_279, 1i
            exit_if  # if_4
          }
          $B13: {  # false
            %106:i32 = load %h_1
            %x_294:i32 = let %106
            %108:u32 = and 0u, 31u
            %109:i32 = shl %x_294, %108
            store %x_279, %109
            exit_if  # if_4
          }
        }
        %110:i32 = load %x_279
        %x_296:i32 = let %110
        %112:i32 = or %x_290, %x_296
        store %x_278, %112
        exit_if  # if_3
      }
      $B11: {  # false
        store %x_278, 1i
        exit_if  # if_3
      }
    }
    %113:i32 = load %x_278
    %x_298:i32 = let %113
    store %int_a, %x_298
    %115:i32 = load %h_1
    %x_299:i32 = let %115
    %117:i32 = load %h_1
    %x_300:i32 = let %117
    %119:i32 = load %int_a
    %x_301:i32 = let %119
    %121:i32 = max %x_299, %x_300
    %122:i32 = min %121, %x_301
    store %clamp_a, %122
    %123:i32 = load %top
    %x_303:i32 = let %123
    %125:i32 = add %x_303, 1i
    %x_304:i32 = let %125
    store %top, %x_304
    %127:i32 = load %clamp_a
    %x_305:i32 = let %127
    %129:ptr<function, i32, read_write> = access %stack, %x_304
    %130:i32 = call %tint_div_i32, %x_305, 1i
    store %129, %130
    loop [b: $B14, c: $B15] {  # loop_2
      $B14: {  # body
        %132:i32 = load %top
        %x_312:i32 = let %132
        %134:bool = gte %x_312, 0i
        if %134 [t: $B16, f: $B17] {  # if_5
          $B16: {  # true
            exit_if  # if_5
          }
          $B17: {  # false
            exit_loop  # loop_2
          }
        }
        %135:i32 = load %top
        %x_315:i32 = let %135
        %137:i32 = sub %x_315, 1i
        store %top, %137
        %138:ptr<function, i32, read_write> = access %stack, %x_315
        %139:i32 = load %138
        %x_318:i32 = let %139
        store %h_1, %x_318
        %141:i32 = load %top
        %x_319:i32 = let %141
        %143:i32 = sub %x_319, 1i
        store %top, %143
        %144:ptr<function, i32, read_write> = access %stack, %x_319
        %145:i32 = load %144
        %x_322:i32 = let %145
        store %l_1, %x_322
        %147:i32 = load %l_1
        %x_323:i32 = let %147
        store %param_4, %x_323
        %149:i32 = load %h_1
        %x_324:i32 = let %149
        store %param_5, %x_324
        %151:i32 = call %performPartition_i1_i1_, %param_4, %param_5
        %x_325:i32 = let %151
        store %p, %x_325
        %153:i32 = load %p
        %x_326:i32 = let %153
        %155:i32 = load %l_1
        %x_328:i32 = let %155
        %157:i32 = sub %x_326, 1i
        %158:bool = gt %157, %x_328
        if %158 [t: $B18] {  # if_6
          $B18: {  # true
            %159:i32 = load %top
            %x_332:i32 = let %159
            %161:i32 = add %x_332, 1i
            %x_333:i32 = let %161
            store %top, %x_333
            %163:i32 = load %l_1
            %x_334:i32 = let %163
            %165:ptr<function, i32, read_write> = access %stack, %x_333
            store %165, %x_334
            %166:i32 = load %top
            %x_336:i32 = let %166
            %168:i32 = add %x_336, 1i
            %x_337:i32 = let %168
            store %top, %x_337
            %170:i32 = load %p
            %x_338:i32 = let %170
            %172:ptr<function, i32, read_write> = access %stack, %x_337
            %173:i32 = sub %x_338, 1i
            store %172, %173
            exit_if  # if_6
          }
        }
        %174:i32 = load %p
        %x_341:i32 = let %174
        %176:i32 = load %h_1
        %x_343:i32 = let %176
        %178:i32 = add %x_341, 1i
        %179:bool = lt %178, %x_343
        if %179 [t: $B19] {  # if_7
          $B19: {  # true
            %180:i32 = load %top
            %x_347:i32 = let %180
            %182:i32 = add %x_347, 1i
            %x_348:i32 = let %182
            store %top, %x_348
            %184:i32 = load %p
            %x_349:i32 = let %184
            %186:ptr<function, i32, read_write> = access %stack, %x_348
            %187:i32 = add %x_349, 1i
            store %186, %187
            %188:i32 = load %top
            %x_352:i32 = let %188
            %190:i32 = add %x_352, 1i
            %x_353:i32 = let %190
            store %top, %x_353
            %192:i32 = load %h_1
            %x_354:i32 = let %192
            %194:ptr<function, i32, read_write> = access %stack, %x_353
            store %194, %x_354
            exit_if  # if_7
          }
        }
        continue  # -> $B15
      }
      $B15: {  # continuing
        next_iteration  # -> $B14
      }
    }
    ret
  }
}
%main_1 = func():void {
  $B20: {
    %i_2:ptr<function, i32, read_write> = var
    %uv:ptr<function, vec2<f32>, read_write> = var
    %color:ptr<function, vec3<f32>, read_write> = var
    store %i_2, 0i
    loop [b: $B21, c: $B22] {  # loop_3
      $B21: {  # body
        %199:i32 = load %i_2
        %x_90:i32 = let %199
        %201:bool = lt %x_90, 10i
        if %201 [t: $B23, f: $B24] {  # if_8
          $B23: {  # true
            exit_if  # if_8
          }
          $B24: {  # false
            exit_loop  # loop_3
          }
        }
        %202:i32 = load %i_2
        %x_93:i32 = let %202
        %204:i32 = load %i_2
        %x_94:i32 = let %204
        %206:ptr<private, i32, read_write> = access %obj, 0u, %x_93
        %207:i32 = sub 10i, %x_94
        store %206, %207
        %208:i32 = load %i_2
        %x_97:i32 = let %208
        %210:i32 = load %i_2
        %x_98:i32 = let %210
        %212:ptr<private, i32, read_write> = access %obj, 0u, %x_98
        %213:i32 = load %212
        %x_100:i32 = let %213
        %215:i32 = load %i_2
        %x_101:i32 = let %215
        %217:ptr<private, i32, read_write> = access %obj, 0u, %x_101
        %218:i32 = load %217
        %x_103:i32 = let %218
        %220:ptr<private, i32, read_write> = access %obj, 0u, %x_97
        %221:i32 = mul %x_100, %x_103
        store %220, %221
        continue  # -> $B22
      }
      $B22: {  # continuing
        %222:i32 = load %i_2
        %x_106:i32 = let %222
        %224:i32 = add %x_106, 1i
        store %i_2, %224
        next_iteration  # -> $B21
      }
    }
    %225:void = call %quicksort_
    %226:vec4<f32> = load %gl_FragCoord
    %x_109:vec4<f32> = let %226
    %228:ptr<uniform, vec2<f32>, read> = access %x_34, 0u
    %229:vec2<f32> = load %228
    %x_112:vec2<f32> = let %229
    %231:f32 = access %x_109, 0u
    %232:f32 = access %x_109, 1u
    %233:vec2<f32> = construct %231, %232
    %234:vec2<f32> = div %233, %x_112
    store %uv, %234
    store %color, vec3<f32>(1.0f, 2.0f, 3.0f)
    %235:ptr<private, i32, read_write> = access %obj, 0u, 0i
    %236:i32 = load %235
    %x_115:i32 = let %236
    %238:f32 = load_vector_element %color, 0u
    %x_118:f32 = let %238
    %240:f32 = convert %x_115
    %241:f32 = add %x_118, %240
    store_vector_element %color, 0u, %241
    %242:f32 = load_vector_element %uv, 0u
    %x_122:f32 = let %242
    %244:bool = gt %x_122, 0.25f
    if %244 [t: $B25] {  # if_9
      $B25: {  # true
        %245:ptr<private, i32, read_write> = access %obj, 0u, 1i
        %246:i32 = load %245
        %x_127:i32 = let %246
        %248:f32 = load_vector_element %color, 0u
        %x_130:f32 = let %248
        %250:f32 = convert %x_127
        %251:f32 = add %x_130, %250
        store_vector_element %color, 0u, %251
        exit_if  # if_9
      }
    }
    %252:f32 = load_vector_element %uv, 0u
    %x_134:f32 = let %252
    %254:bool = gt %x_134, 0.5f
    if %254 [t: $B26] {  # if_10
      $B26: {  # true
        %255:ptr<private, i32, read_write> = access %obj, 0u, 2i
        %256:i32 = load %255
        %x_139:i32 = let %256
        %258:f32 = load_vector_element %color, 1u
        %x_142:f32 = let %258
        %260:f32 = convert %x_139
        %261:f32 = add %x_142, %260
        store_vector_element %color, 1u, %261
        exit_if  # if_10
      }
    }
    %262:f32 = load_vector_element %uv, 0u
    %x_146:f32 = let %262
    %264:bool = gt %x_146, 0.75f
    if %264 [t: $B27] {  # if_11
      $B27: {  # true
        %265:ptr<private, i32, read_write> = access %obj, 0u, 3i
        %266:i32 = load %265
        %x_151:i32 = let %266
        %268:f32 = load_vector_element %color, 2u
        %x_154:f32 = let %268
        %270:f32 = convert %x_151
        %271:f32 = add %x_154, %270
        store_vector_element %color, 2u, %271
        exit_if  # if_11
      }
    }
    %272:ptr<private, i32, read_write> = access %obj, 0u, 4i
    %273:i32 = load %272
    %x_158:i32 = let %273
    %275:f32 = load_vector_element %color, 1u
    %x_161:f32 = let %275
    %277:f32 = convert %x_158
    %278:f32 = add %x_161, %277
    store_vector_element %color, 1u, %278
    %279:f32 = load_vector_element %uv, 1u
    %x_165:f32 = let %279
    %281:bool = gt %x_165, 0.25f
    if %281 [t: $B28] {  # if_12
      $B28: {  # true
        %282:ptr<private, i32, read_write> = access %obj, 0u, 5i
        %283:i32 = load %282
        %x_170:i32 = let %283
        %285:f32 = load_vector_element %color, 0u
        %x_173:f32 = let %285
        %287:f32 = convert %x_170
        %288:f32 = add %x_173, %287
        store_vector_element %color, 0u, %288
        exit_if  # if_12
      }
    }
    %289:f32 = load_vector_element %uv, 1u
    %x_177:f32 = let %289
    %291:bool = gt %x_177, 0.5f
    if %291 [t: $B29] {  # if_13
      $B29: {  # true
        %292:ptr<private, i32, read_write> = access %obj, 0u, 6i
        %293:i32 = load %292
        %x_182:i32 = let %293
        %295:f32 = load_vector_element %color, 1u
        %x_185:f32 = let %295
        %297:f32 = convert %x_182
        %298:f32 = add %x_185, %297
        store_vector_element %color, 1u, %298
        exit_if  # if_13
      }
    }
    %299:f32 = load_vector_element %uv, 1u
    %x_189:f32 = let %299
    %301:bool = gt %x_189, 0.75f
    if %301 [t: $B30] {  # if_14
      $B30: {  # true
        %302:ptr<private, i32, read_write> = access %obj, 0u, 7i
        %303:i32 = load %302
        %x_194:i32 = let %303
        %305:f32 = load_vector_element %color, 2u
        %x_197:f32 = let %305
        %307:f32 = convert %x_194
        %308:f32 = add %x_197, %307
        store_vector_element %color, 2u, %308
        exit_if  # if_14
      }
    }
    %309:ptr<private, i32, read_write> = access %obj, 0u, 8i
    %310:i32 = load %309
    %x_201:i32 = let %310
    %312:f32 = load_vector_element %color, 2u
    %x_204:f32 = let %312
    %314:f32 = convert %x_201
    %315:f32 = add %x_204, %314
    store_vector_element %color, 2u, %315
    %316:f32 = load_vector_element %uv, 0u
    %x_208:f32 = let %316
    %318:f32 = load_vector_element %uv, 1u
    %x_210:f32 = let %318
    %320:f32 = sub %x_208, %x_210
    %321:f32 = abs %320
    %322:bool = lt %321, 0.25f
    if %322 [t: $B31] {  # if_15
      $B31: {  # true
        %323:ptr<private, i32, read_write> = access %obj, 0u, 9i
        %324:i32 = load %323
        %x_217:i32 = let %324
        %326:f32 = load_vector_element %color, 0u
        %x_220:f32 = let %326
        %328:f32 = convert %x_217
        %329:f32 = add %x_220, %328
        store_vector_element %color, 0u, %329
        exit_if  # if_15
      }
    }
    %330:vec3<f32> = load %color
    %x_223:vec3<f32> = let %330
    %332:vec3<f32> = normalize %x_223
    %x_224:vec3<f32> = let %332
    %334:f32 = access %x_224, 0u
    %335:f32 = access %x_224, 1u
    %336:f32 = access %x_224, 2u
    %337:vec4<f32> = construct %334, %335, %336, 1.0f
    store %x_GLF_color, %337
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
  $B32: {
    store %gl_FragCoord, %gl_FragCoord_param
    %340:void = call %main_1
    %341:vec4<f32> = load %x_GLF_color
    %342:main_out = construct %341
    ret %342
  }
}
%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
  $B33: {
    %345:bool = eq %rhs, 0i
    %346:bool = eq %lhs, -2147483648i
    %347:bool = eq %rhs, -1i
    %348:bool = and %346, %347
    %349:bool = or %345, %348
    %350:i32 = select %rhs, 1i, %349
    %351:i32 = div %lhs, %350
    ret %351
  }
}

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