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
    store %k, %15
    %16:i32 = load %f
    store %i, %16
    %17:i32 = load %mid
    %18:i32 = add %17, 1i
    store %j, %18
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %19:i32 = load %i
        %20:i32 = load %mid
        %21:bool = lte %19, %20
        %22:i32 = load %j
        %23:i32 = load %to
        %24:bool = lte %22, %23
        %25:bool = and %21, %24
        if %25 [t: $B5, f: $B6] {  # if_1
          $B5: {  # true
            exit_if  # if_1
          }
          $B6: {  # false
            exit_loop  # loop_1
          }
        }
        %26:i32 = load %i
        %27:ptr<private, i32, read_write> = access %data, %26
        %28:i32 = load %27
        %29:i32 = load %j
        %30:ptr<private, i32, read_write> = access %data, %29
        %31:i32 = load %30
        %32:bool = lt %28, %31
        if %32 [t: $B7, f: $B8] {  # if_2
          $B7: {  # true
            %33:i32 = load %k
            %x_277:i32 = let %33
            %35:i32 = load %k
            %36:i32 = add %35, 1i
            store %k, %36
            %37:i32 = load %i
            %x_279:i32 = let %37
            %39:i32 = load %i
            %40:i32 = add %39, 1i
            store %i, %40
            %41:ptr<private, i32, read_write> = access %temp, %x_277
            %42:ptr<private, i32, read_write> = access %data, %x_279
            %43:i32 = load %42
            store %41, %43
            exit_if  # if_2
          }
          $B8: {  # false
            %44:i32 = load %k
            %x_284:i32 = let %44
            %46:i32 = load %k
            %47:i32 = add %46, 1i
            store %k, %47
            %48:i32 = load %j
            %x_286:i32 = let %48
            %50:i32 = load %j
            %51:i32 = add %50, 1i
            store %j, %51
            %52:ptr<private, i32, read_write> = access %temp, %x_284
            %53:ptr<private, i32, read_write> = access %data, %x_286
            %54:i32 = load %53
            store %52, %54
            exit_if  # if_2
          }
        }
        continue  # -> $B4
      }
      $B4: {  # continuing
        next_iteration  # -> $B3
      }
    }
    loop [b: $B9, c: $B10] {  # loop_2
      $B9: {  # body
        %55:i32 = load %i
        %56:bool = lt %55, 10i
        %57:i32 = load %i
        %58:i32 = load %mid
        %59:bool = lte %57, %58
        %60:bool = and %56, %59
        if %60 [t: $B11, f: $B12] {  # if_3
          $B11: {  # true
            exit_if  # if_3
          }
          $B12: {  # false
            exit_loop  # loop_2
          }
        }
        %61:i32 = load %k
        %x_302:i32 = let %61
        %63:i32 = load %k
        %64:i32 = add %63, 1i
        store %k, %64
        %65:i32 = load %i
        %x_304:i32 = let %65
        %67:i32 = load %i
        %68:i32 = add %67, 1i
        store %i, %68
        %69:ptr<private, i32, read_write> = access %temp, %x_302
        %70:ptr<private, i32, read_write> = access %data, %x_304
        %71:i32 = load %70
        store %69, %71
        continue  # -> $B10
      }
      $B10: {  # continuing
        next_iteration  # -> $B9
      }
    }
    %72:i32 = load %f
    store %i_1, %72
    loop [b: $B13, c: $B14] {  # loop_3
      $B13: {  # body
        %73:i32 = load %i_1
        %74:i32 = load %to
        %75:bool = lte %73, %74
        if %75 [t: $B15, f: $B16] {  # if_4
          $B15: {  # true
            exit_if  # if_4
          }
          $B16: {  # false
            exit_loop  # loop_3
          }
        }
        %76:i32 = load %i_1
        %x_318:i32 = let %76
        %78:ptr<private, i32, read_write> = access %data, %x_318
        %79:i32 = load %i_1
        %80:ptr<private, i32, read_write> = access %temp, %79
        %81:i32 = load %80
        store %78, %81
        continue  # -> $B14
      }
      $B14: {  # continuing
        %82:i32 = load %i_1
        %83:i32 = add %82, 1i
        store %i_1, %83
        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
        %95:i32 = load %m
        %96:i32 = load %high
        %97:bool = lte %95, %96
        if %97 [t: $B20, f: $B21] {  # if_5
          $B20: {  # true
            exit_if  # if_5
          }
          $B21: {  # false
            exit_loop  # loop_4
          }
        }
        %98:i32 = load %low
        store %i_2, %98
        loop [b: $B22, c: $B23] {  # loop_5
          $B22: {  # body
            %99:i32 = load %i_2
            %100:i32 = load %high
            %101:bool = lt %99, %100
            if %101 [t: $B24, f: $B25] {  # if_6
              $B24: {  # true
                exit_if  # if_6
              }
              $B25: {  # false
                exit_loop  # loop_5
              }
            }
            %102:i32 = load %i_2
            store %f_1, %102
            %103:i32 = load %i_2
            %104:i32 = load %m
            %105:i32 = add %103, %104
            %106:i32 = sub %105, 1i
            store %mid_1, %106
            %107:i32 = load %i_2
            %108:i32 = load %m
            %109:i32 = mul 2i, %108
            %110:i32 = add %107, %109
            %111:i32 = sub %110, 1i
            %112:i32 = load %high
            %113:i32 = min %111, %112
            store %to_1, %113
            %114:i32 = load %f_1
            store %param, %114
            %115:i32 = load %mid_1
            store %param_1, %115
            %116:i32 = load %to_1
            store %param_2, %116
            %117:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
            continue  # -> $B23
          }
          $B23: {  # continuing
            %118:i32 = load %i_2
            %119:i32 = load %m
            %120:i32 = mul 2i, %119
            %121:i32 = add %118, %120
            store %i_2, %121
            next_iteration  # -> $B22
          }
        }
        continue  # -> $B19
      }
      $B19: {  # continuing
        %122:i32 = load %m
        %123:i32 = mul 2i, %122
        store %m, %123
        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
    %128:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
    %129:f32 = load_vector_element %128, 0u
    %130:i32 = call %tint_f32_to_i32, %129
    store %i_3, %130
    loop [b: $B27, c: $B28] {  # loop_6
      $B27: {  # body
        %132:i32 = load %i_3
        %x_90:i32 = let %132
        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
            %134:i32 = load %i_3
            %x_120:i32 = let %134
            %136:ptr<private, i32, read_write> = access %data, %x_120
            store %136, -5i
            exit_switch  # switch_1
          }
          $B30: {  # case
            %137:i32 = load %i_3
            %x_118:i32 = let %137
            %139:ptr<private, i32, read_write> = access %data, %x_118
            store %139, -4i
            exit_switch  # switch_1
          }
          $B31: {  # case
            %140:i32 = load %i_3
            %x_116:i32 = let %140
            %142:ptr<private, i32, read_write> = access %data, %x_116
            store %142, -3i
            exit_switch  # switch_1
          }
          $B32: {  # case
            %143:i32 = load %i_3
            %x_114:i32 = let %143
            %145:ptr<private, i32, read_write> = access %data, %x_114
            store %145, -2i
            exit_switch  # switch_1
          }
          $B33: {  # case
            %146:i32 = load %i_3
            %x_112:i32 = let %146
            %148:ptr<private, i32, read_write> = access %data, %x_112
            store %148, -1i
            exit_switch  # switch_1
          }
          $B34: {  # case
            %149:i32 = load %i_3
            %x_110:i32 = let %149
            %151:ptr<private, i32, read_write> = access %data, %x_110
            store %151, 0i
            exit_switch  # switch_1
          }
          $B35: {  # case
            %152:i32 = load %i_3
            %x_108:i32 = let %152
            %154:ptr<private, i32, read_write> = access %data, %x_108
            store %154, 1i
            exit_switch  # switch_1
          }
          $B36: {  # case
            %155:i32 = load %i_3
            %x_106:i32 = let %155
            %157:ptr<private, i32, read_write> = access %data, %x_106
            store %157, 2i
            exit_switch  # switch_1
          }
          $B37: {  # case
            %158:i32 = load %i_3
            %x_104:i32 = let %158
            %160:ptr<private, i32, read_write> = access %data, %x_104
            store %160, 3i
            exit_switch  # switch_1
          }
          $B38: {  # case
            %161:i32 = load %i_3
            %x_102:i32 = let %161
            %163:ptr<private, i32, read_write> = access %data, %x_102
            store %163, 4i
            exit_switch  # switch_1
          }
          $B39: {  # case
            exit_switch  # switch_1
          }
        }
        %164:i32 = load %i_3
        %165:i32 = add %164, 1i
        store %i_3, %165
        continue  # -> $B28
      }
      $B28: {  # continuing
        %166:i32 = load %i_3
        %x_124:i32 = let %166
        %168:bool = lt %x_124, 10i
        %169:bool = eq %168, false
        break_if %169  # -> [t: exit_loop loop_6, f: $B27]
      }
    }
    store %j_1, 0i
    loop [b: $B40, c: $B41] {  # loop_7
      $B40: {  # body
        %170:i32 = load %j_1
        %171:bool = lt %170, 10i
        if %171 [t: $B42, f: $B43] {  # if_7
          $B42: {  # true
            exit_if  # if_7
          }
          $B43: {  # false
            exit_loop  # loop_7
          }
        }
        %172:i32 = load %j_1
        %x_133:i32 = let %172
        %174:ptr<private, i32, read_write> = access %temp, %x_133
        %175:i32 = load %j_1
        %176:ptr<private, i32, read_write> = access %data, %175
        %177:i32 = load %176
        store %174, %177
        continue  # -> $B41
      }
      $B41: {  # continuing
        %178:i32 = load %j_1
        %179:i32 = add %178, 1i
        store %j_1, %179
        next_iteration  # -> $B40
      }
    }
    %180:void = call %mergeSort_
    %181:f32 = load_vector_element %gl_FragCoord, 1u
    %182:i32 = call %tint_f32_to_i32, %181
    %183:bool = lt %182, 30i
    if %183 [t: $B44, f: $B45] {  # if_8
      $B44: {  # true
        %184:ptr<private, i32, read_write> = access %data, 0i
        %185:i32 = load %184
        %186:f32 = convert %185
        %187:f32 = div %186, 10.0f
        %188:f32 = add 0.5f, %187
        store %grey, %188
        exit_if  # if_8
      }
      $B45: {  # false
        %189:f32 = load_vector_element %gl_FragCoord, 1u
        %190:i32 = call %tint_f32_to_i32, %189
        %191:bool = lt %190, 60i
        if %191 [t: $B46, f: $B47] {  # if_9
          $B46: {  # true
            %192:ptr<private, i32, read_write> = access %data, 1i
            %193:i32 = load %192
            %194:f32 = convert %193
            %195:f32 = div %194, 10.0f
            %196:f32 = add 0.5f, %195
            store %grey, %196
            exit_if  # if_9
          }
          $B47: {  # false
            %197:f32 = load_vector_element %gl_FragCoord, 1u
            %198:i32 = call %tint_f32_to_i32, %197
            %199:bool = lt %198, 90i
            if %199 [t: $B48, f: $B49] {  # if_10
              $B48: {  # true
                %200:ptr<private, i32, read_write> = access %data, 2i
                %201:i32 = load %200
                %202:f32 = convert %201
                %203:f32 = div %202, 10.0f
                %204:f32 = add 0.5f, %203
                store %grey, %204
                exit_if  # if_10
              }
              $B49: {  # false
                %205:f32 = load_vector_element %gl_FragCoord, 1u
                %206:i32 = call %tint_f32_to_i32, %205
                %207:bool = lt %206, 120i
                if %207 [t: $B50, f: $B51] {  # if_11
                  $B50: {  # true
                    %208:ptr<private, i32, read_write> = access %data, 3i
                    %209:i32 = load %208
                    %210:f32 = convert %209
                    %211:f32 = div %210, 10.0f
                    %212:f32 = add 0.5f, %211
                    store %grey, %212
                    exit_if  # if_11
                  }
                  $B51: {  # false
                    %213:f32 = load_vector_element %gl_FragCoord, 1u
                    %214:i32 = call %tint_f32_to_i32, %213
                    %215:bool = lt %214, 150i
                    if %215 [t: $B52, f: $B53] {  # if_12
                      $B52: {  # true
                        store %continue_execution, false
                        exit_if  # if_12
                      }
                      $B53: {  # false
                        %216:f32 = load_vector_element %gl_FragCoord, 1u
                        %217:i32 = call %tint_f32_to_i32, %216
                        %218:bool = lt %217, 180i
                        if %218 [t: $B54, f: $B55] {  # if_13
                          $B54: {  # true
                            %219:ptr<private, i32, read_write> = access %data, 5i
                            %220:i32 = load %219
                            %221:f32 = convert %220
                            %222:f32 = div %221, 10.0f
                            %223:f32 = add 0.5f, %222
                            store %grey, %223
                            exit_if  # if_13
                          }
                          $B55: {  # false
                            %224:f32 = load_vector_element %gl_FragCoord, 1u
                            %225:i32 = call %tint_f32_to_i32, %224
                            %226:bool = lt %225, 210i
                            if %226 [t: $B56, f: $B57] {  # if_14
                              $B56: {  # true
                                %227:ptr<private, i32, read_write> = access %data, 6i
                                %228:i32 = load %227
                                %229:f32 = convert %228
                                %230:f32 = div %229, 10.0f
                                %231:f32 = add 0.5f, %230
                                store %grey, %231
                                exit_if  # if_14
                              }
                              $B57: {  # false
                                %232:f32 = load_vector_element %gl_FragCoord, 1u
                                %233:i32 = call %tint_f32_to_i32, %232
                                %234:bool = lt %233, 240i
                                if %234 [t: $B58, f: $B59] {  # if_15
                                  $B58: {  # true
                                    %235:ptr<private, i32, read_write> = access %data, 7i
                                    %236:i32 = load %235
                                    %237:f32 = convert %236
                                    %238:f32 = div %237, 10.0f
                                    %239:f32 = add 0.5f, %238
                                    store %grey, %239
                                    exit_if  # if_15
                                  }
                                  $B59: {  # false
                                    %240:f32 = load_vector_element %gl_FragCoord, 1u
                                    %241:i32 = call %tint_f32_to_i32, %240
                                    %242:bool = lt %241, 270i
                                    if %242 [t: $B60, f: $B61] {  # if_16
                                      $B60: {  # true
                                        %243:ptr<private, i32, read_write> = access %data, 8i
                                        %244:i32 = load %243
                                        %245:f32 = convert %244
                                        %246:f32 = div %245, 10.0f
                                        %247:f32 = add 0.5f, %246
                                        store %grey, %247
                                        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
      }
    }
    %248:f32 = load %grey
    %249:vec3<f32> = construct %248
    %x_245:vec3<f32> = let %249
    %251:f32 = access %x_245, 0u
    %252:f32 = access %x_245, 1u
    %253:f32 = access %x_245, 2u
    %254:vec4<f32> = construct %251, %252, %253, 1.0f
    store %x_GLF_color, %254
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
  $B62: {
    store %gl_FragCoord, %gl_FragCoord_param
    %257:void = call %main_1
    %258:vec4<f32> = load %x_GLF_color
    %259:main_out = construct %258
    %260:bool = load %continue_execution
    %261:bool = eq %260, false
    if %261 [t: $B63] {  # if_17
      $B63: {  # true
        terminate_invocation
      }
    }
    ret %259
  }
}
%tint_f32_to_i32 = func(%value:f32):i32 {
  $B64: {
    %263:i32 = convert %value
    %264:bool = gte %value, -2147483648.0f
    %265:i32 = select -2147483648i, %263, %264
    %266:bool = lte %value, 2147483520.0f
    %267:i32 = select 2147483647i, %265, %266
    ret %267
  }
}

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