SKIP: FAILED

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

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

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

%b1 = block {  # 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
  %x_32:ptr<uniform, buf1, read> = var @binding_point(0, 1)
}

%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 {
  %b2 = block {
    %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 = block {  # 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 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # 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 = block {  # true
            %x_280:i32 = load %k
            %34:i32 = load %k
            %35:i32 = add %34, 1i
            store %k, %35
            %x_282:i32 = load %i
            %37:i32 = load %i
            %38:i32 = add %37, 1i
            store %i, %38
            %39:ptr<private, i32, read_write> = access %temp, %x_280
            %40:ptr<private, i32, read_write> = access %data, %x_282
            %41:i32 = load %40
            store %39, %41
            exit_if  # if_2
          }
          %b8 = block {  # false
            %x_287:i32 = load %k
            %43:i32 = load %k
            %44:i32 = add %43, 1i
            store %k, %44
            %x_289:i32 = load %j
            %46:i32 = load %j
            %47:i32 = add %46, 1i
            store %j, %47
            %48:ptr<private, i32, read_write> = access %temp, %x_287
            %49:ptr<private, i32, read_write> = access %data, %x_289
            %50:i32 = load %49
            store %48, %50
            exit_if  # if_2
          }
        }
        continue %b4
      }
      %b4 = block {  # continuing
        next_iteration %b3
      }
    }
    loop [b: %b9, c: %b10] {  # loop_2
      %b9 = block {  # body
        %51:i32 = load %i
        %52:bool = lt %51, 10i
        %53:i32 = load %i
        %54:i32 = load %mid
        %55:bool = lte %53, %54
        %56:bool = and %52, %55
        if %56 [t: %b11, f: %b12] {  # if_3
          %b11 = block {  # true
            exit_if  # if_3
          }
          %b12 = block {  # false
            exit_loop  # loop_2
          }
        }
        %x_305:i32 = load %k
        %58:i32 = load %k
        %59:i32 = add %58, 1i
        store %k, %59
        %x_307:i32 = load %i
        %61:i32 = load %i
        %62:i32 = add %61, 1i
        store %i, %62
        %63:ptr<private, i32, read_write> = access %temp, %x_305
        %64:ptr<private, i32, read_write> = access %data, %x_307
        %65:i32 = load %64
        store %63, %65
        continue %b10
      }
      %b10 = block {  # continuing
        next_iteration %b9
      }
    }
    %66:i32 = load %f
    store %i_1, %66
    loop [b: %b13, c: %b14] {  # loop_3
      %b13 = block {  # body
        %67:i32 = load %i_1
        %68:i32 = load %to
        %69:bool = lte %67, %68
        if %69 [t: %b15, f: %b16] {  # if_4
          %b15 = block {  # true
            exit_if  # if_4
          }
          %b16 = block {  # false
            exit_loop  # loop_3
          }
        }
        %x_321:i32 = load %i_1
        %71:ptr<private, i32, read_write> = access %data, %x_321
        %72:i32 = load %i_1
        %73:ptr<private, i32, read_write> = access %temp, %72
        %74:i32 = load %73
        store %71, %74
        continue %b14
      }
      %b14 = block {  # continuing
        %75:i32 = load %i_1
        %76:i32 = add %75, 1i
        store %i_1, %76
        next_iteration %b13
      }
    }
    ret
  }
}
%mergeSort_ = func():void -> %b17 {
  %b17 = block {
    %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 = block {  # body
        %88:i32 = load %m
        %89:i32 = load %high
        %90:bool = lte %88, %89
        if %90 [t: %b20, f: %b21] {  # if_5
          %b20 = block {  # true
            exit_if  # if_5
          }
          %b21 = block {  # false
            exit_loop  # loop_4
          }
        }
        %91:i32 = load %low
        store %i_2, %91
        loop [b: %b22, c: %b23] {  # loop_5
          %b22 = block {  # body
            %92:i32 = load %i_2
            %93:i32 = load %high
            %94:bool = lt %92, %93
            if %94 [t: %b24, f: %b25] {  # if_6
              %b24 = block {  # true
                exit_if  # if_6
              }
              %b25 = block {  # false
                exit_loop  # loop_5
              }
            }
            %95:i32 = load %i_2
            store %f_1, %95
            %96:i32 = load %i_2
            %97:i32 = load %m
            %98:i32 = add %96, %97
            %99:i32 = sub %98, 1i
            store %mid_1, %99
            %100:i32 = load %i_2
            %101:i32 = load %m
            %102:i32 = mul 2i, %101
            %103:i32 = add %100, %102
            %104:i32 = sub %103, 1i
            %105:i32 = load %high
            %106:i32 = min %104, %105
            store %to_1, %106
            %107:i32 = load %f_1
            store %param, %107
            %108:i32 = load %mid_1
            store %param_1, %108
            %109:i32 = load %to_1
            store %param_2, %109
            %110:void = call %merge_i1_i1_i1_, %param, %param_1, %param_2
            continue %b23
          }
          %b23 = block {  # continuing
            %111:i32 = load %i_2
            %112:i32 = load %m
            %113:i32 = mul 2i, %112
            %114:i32 = add %111, %113
            store %i_2, %114
            next_iteration %b22
          }
        }
        continue %b19
      }
      %b19 = block {  # continuing
        %115:i32 = load %m
        %116:i32 = mul 2i, %115
        store %m, %116
        next_iteration %b18
      }
    }
    ret
  }
}
%main_1 = func():void -> %b26 {
  %b26 = block {
    %i_3:ptr<function, i32, read_write> = var
    %j_1:ptr<function, i32, read_write> = var
    %grey:ptr<function, f32, read_write> = var
    %121:ptr<uniform, vec2<f32>, read> = access %x_28, 0u
    %122:f32 = load_vector_element %121, 0u
    %123:i32 = convert %122
    store %i_3, %123
    loop [b: %b27, c: %b28] {  # loop_6
      %b27 = block {  # body
        %x_93:i32 = load %i_3
        switch %x_93 [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 = block {  # case
            %x_123:i32 = load %i_3
            %126:ptr<private, i32, read_write> = access %data, %x_123
            store %126, -5i
            exit_switch  # switch_1
          }
          %b30 = block {  # case
            %x_121:i32 = load %i_3
            %128:ptr<private, i32, read_write> = access %data, %x_121
            store %128, -4i
            exit_switch  # switch_1
          }
          %b31 = block {  # case
            %x_119:i32 = load %i_3
            %130:ptr<private, i32, read_write> = access %data, %x_119
            store %130, -3i
            exit_switch  # switch_1
          }
          %b32 = block {  # case
            %x_117:i32 = load %i_3
            %132:ptr<private, i32, read_write> = access %data, %x_117
            store %132, -2i
            exit_switch  # switch_1
          }
          %b33 = block {  # case
            %x_115:i32 = load %i_3
            %134:ptr<private, i32, read_write> = access %data, %x_115
            store %134, -1i
            exit_switch  # switch_1
          }
          %b34 = block {  # case
            %x_113:i32 = load %i_3
            %136:ptr<private, i32, read_write> = access %data, %x_113
            store %136, 0i
            exit_switch  # switch_1
          }
          %b35 = block {  # case
            %x_111:i32 = load %i_3
            %138:ptr<private, i32, read_write> = access %data, %x_111
            store %138, 1i
            exit_switch  # switch_1
          }
          %b36 = block {  # case
            %x_109:i32 = load %i_3
            %140:ptr<private, i32, read_write> = access %data, %x_109
            store %140, 2i
            exit_switch  # switch_1
          }
          %b37 = block {  # case
            %x_107:i32 = load %i_3
            %142:ptr<private, i32, read_write> = access %data, %x_107
            store %142, 3i
            exit_switch  # switch_1
          }
          %b38 = block {  # case
            %x_105:i32 = load %i_3
            %144:ptr<private, i32, read_write> = access %data, %x_105
            store %144, 4i
            exit_switch  # switch_1
          }
          %b39 = block {  # case
            exit_switch  # switch_1
          }
        }
        %145:i32 = load %i_3
        %146:i32 = add %145, 1i
        store %i_3, %146
        continue %b28
      }
      %b28 = block {  # continuing
        %x_127:i32 = load %i_3
        %148:bool = lt %x_127, 10i
        %149:bool = eq %148, false
        break_if %149 %b27
      }
    }
    store %j_1, 0i
    loop [b: %b40, c: %b41] {  # loop_7
      %b40 = block {  # body
        %150:i32 = load %j_1
        %151:bool = lt %150, 10i
        if %151 [t: %b42, f: %b43] {  # if_7
          %b42 = block {  # true
            exit_if  # if_7
          }
          %b43 = block {  # false
            exit_loop  # loop_7
          }
        }
        %x_136:i32 = load %j_1
        %153:ptr<private, i32, read_write> = access %temp, %x_136
        %154:i32 = load %j_1
        %155:ptr<private, i32, read_write> = access %data, %154
        %156:i32 = load %155
        store %153, %156
        continue %b41
      }
      %b41 = block {  # continuing
        %157:i32 = load %j_1
        %158:i32 = add %157, 1i
        store %j_1, %158
        next_iteration %b40
      }
    }
    %159:void = call %mergeSort_
    %160:f32 = load_vector_element %gl_FragCoord, 1u
    %161:i32 = convert %160
    %162:bool = lt %161, 30i
    if %162 [t: %b44, f: %b45] {  # if_8
      %b44 = block {  # true
        %163:ptr<private, i32, read_write> = access %data, 0i
        %164:i32 = load %163
        %165:f32 = convert %164
        %166:f32 = div %165, 10.0f
        %167:f32 = add 0.5f, %166
        store %grey, %167
        exit_if  # if_8
      }
      %b45 = block {  # false
        %168:f32 = load_vector_element %gl_FragCoord, 1u
        %169:i32 = convert %168
        %170:bool = lt %169, 60i
        if %170 [t: %b46, f: %b47] {  # if_9
          %b46 = block {  # true
            %171:ptr<private, i32, read_write> = access %data, 1i
            %172:i32 = load %171
            %173:f32 = convert %172
            %174:f32 = div %173, 10.0f
            %175:f32 = add 0.5f, %174
            store %grey, %175
            exit_if  # if_9
          }
          %b47 = block {  # false
            %176:f32 = load_vector_element %gl_FragCoord, 1u
            %177:i32 = convert %176
            %178:bool = lt %177, 90i
            if %178 [t: %b48, f: %b49] {  # if_10
              %b48 = block {  # true
                %179:ptr<private, i32, read_write> = access %data, 2i
                %180:i32 = load %179
                %181:f32 = convert %180
                %182:f32 = div %181, 10.0f
                %183:f32 = add 0.5f, %182
                store %grey, %183
                exit_if  # if_10
              }
              %b49 = block {  # false
                %184:f32 = load_vector_element %gl_FragCoord, 1u
                %185:i32 = convert %184
                %186:bool = lt %185, 120i
                if %186 [t: %b50, f: %b51] {  # if_11
                  %b50 = block {  # true
                    %187:ptr<private, i32, read_write> = access %data, 3i
                    %188:i32 = load %187
                    %189:f32 = convert %188
                    %190:f32 = div %189, 10.0f
                    %191:f32 = add 0.5f, %190
                    store %grey, %191
                    exit_if  # if_11
                  }
                  %b51 = block {  # false
                    %192:f32 = load_vector_element %gl_FragCoord, 1u
                    %193:i32 = convert %192
                    %194:bool = lt %193, 150i
                    if %194 [t: %b52, f: %b53] {  # if_12
                      %b52 = block {  # true
                        discard
                        exit_if  # if_12
                      }
                      %b53 = block {  # false
                        %195:f32 = load_vector_element %gl_FragCoord, 1u
                        %196:i32 = convert %195
                        %197:bool = lt %196, 180i
                        if %197 [t: %b54, f: %b55] {  # if_13
                          %b54 = block {  # true
                            %198:ptr<private, i32, read_write> = access %data, 5i
                            %199:i32 = load %198
                            %200:f32 = convert %199
                            %201:f32 = div %200, 10.0f
                            %202:f32 = add 0.5f, %201
                            store %grey, %202
                            exit_if  # if_13
                          }
                          %b55 = block {  # false
                            %203:f32 = load_vector_element %gl_FragCoord, 1u
                            %204:i32 = convert %203
                            %205:bool = lt %204, 210i
                            if %205 [t: %b56, f: %b57] {  # if_14
                              %b56 = block {  # true
                                %206:ptr<private, i32, read_write> = access %data, 6i
                                %207:i32 = load %206
                                %208:f32 = convert %207
                                %209:f32 = div %208, 10.0f
                                %210:f32 = add 0.5f, %209
                                store %grey, %210
                                exit_if  # if_14
                              }
                              %b57 = block {  # false
                                %211:f32 = load_vector_element %gl_FragCoord, 1u
                                %212:i32 = convert %211
                                %213:bool = lt %212, 240i
                                if %213 [t: %b58, f: %b59] {  # if_15
                                  %b58 = block {  # true
                                    %214:ptr<private, i32, read_write> = access %data, 7i
                                    %215:i32 = load %214
                                    %216:f32 = convert %215
                                    %217:f32 = div %216, 10.0f
                                    %218:f32 = add 0.5f, %217
                                    store %grey, %218
                                    exit_if  # if_15
                                  }
                                  %b59 = block {  # false
                                    %219:f32 = load_vector_element %gl_FragCoord, 1u
                                    %220:i32 = convert %219
                                    %221:bool = lt %220, 270i
                                    if %221 [t: %b60, f: %b61] {  # if_16
                                      %b60 = block {  # true
                                        %222:ptr<private, i32, read_write> = access %data, 8i
                                        %223:i32 = load %222
                                        %224:f32 = convert %223
                                        %225:f32 = div %224, 10.0f
                                        %226:f32 = add 0.5f, %225
                                        store %grey, %226
                                        exit_if  # if_16
                                      }
                                      %b61 = block {  # false
                                        discard
                                        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
      }
    }
    %227:f32 = load %grey
    %x_248:vec3<f32> = construct %227
    %229:f32 = access %x_248, 0u
    %230:f32 = access %x_248, 1u
    %231:f32 = access %x_248, 2u
    %232:vec4<f32> = construct %229, %230, %231, 1.0f
    store %x_GLF_color, %232
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b62 {
  %b62 = block {
    store %gl_FragCoord, %gl_FragCoord_param
    %235:void = call %main_1
    %236:vec4<f32> = load %x_GLF_color
    %237:main_out = construct %236
    ret %237
  }
}

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