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_281:i32 = load %k
            %34:i32 = load %k
            %35:i32 = add %34, 1i
            store %k, %35
            %x_283:i32 = load %i
            %37:i32 = load %i
            %38:i32 = add %37, 1i
            store %i, %38
            %39:ptr<private, i32, read_write> = access %temp, %x_281
            %40:ptr<private, i32, read_write> = access %data, %x_283
            %41:i32 = load %40
            store %39, %41
            exit_if  # if_2
          }
          %b8 = block {  # false
            %x_288:i32 = load %k
            %43:i32 = load %k
            %44:i32 = add %43, 1i
            store %k, %44
            %x_290:i32 = load %j
            %46:i32 = load %j
            %47:i32 = add %46, 1i
            store %j, %47
            %48:ptr<private, i32, read_write> = access %temp, %x_288
            %49:ptr<private, i32, read_write> = access %data, %x_290
            %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_306:i32 = load %k
        %58:i32 = load %k
        %59:i32 = add %58, 1i
        store %k, %59
        %x_308:i32 = load %i
        %61:i32 = load %i
        %62:i32 = add %61, 1i
        store %i, %62
        %63:ptr<private, i32, read_write> = access %temp, %x_306
        %64:ptr<private, i32, read_write> = access %data, %x_308
        %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_322:i32 = load %i_1
        %71:ptr<private, i32, read_write> = access %data, %x_322
        %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_94:i32 = load %i_3
        switch %x_94 [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_124:i32 = load %i_3
            %126:ptr<private, i32, read_write> = access %data, %x_124
            store %126, -5i
            if true [t: %b40, f: %b41] {  # if_7
              %b40 = block {  # true
                exit_if  # if_7
              }
              %b41 = block {  # false
                continue %b28
              }
            }
            exit_switch  # switch_1
          }
          %b30 = block {  # case
            %x_122:i32 = load %i_3
            %128:ptr<private, i32, read_write> = access %data, %x_122
            store %128, -4i
            exit_switch  # switch_1
          }
          %b31 = block {  # case
            %x_120:i32 = load %i_3
            %130:ptr<private, i32, read_write> = access %data, %x_120
            store %130, -3i
            exit_switch  # switch_1
          }
          %b32 = block {  # case
            %x_118:i32 = load %i_3
            %132:ptr<private, i32, read_write> = access %data, %x_118
            store %132, -2i
            exit_switch  # switch_1
          }
          %b33 = block {  # case
            %x_116:i32 = load %i_3
            %134:ptr<private, i32, read_write> = access %data, %x_116
            store %134, -1i
            exit_switch  # switch_1
          }
          %b34 = block {  # case
            %x_114:i32 = load %i_3
            %136:ptr<private, i32, read_write> = access %data, %x_114
            store %136, 0i
            exit_switch  # switch_1
          }
          %b35 = block {  # case
            %x_112:i32 = load %i_3
            %138:ptr<private, i32, read_write> = access %data, %x_112
            store %138, 1i
            exit_switch  # switch_1
          }
          %b36 = block {  # case
            %x_110:i32 = load %i_3
            %140:ptr<private, i32, read_write> = access %data, %x_110
            store %140, 2i
            exit_switch  # switch_1
          }
          %b37 = block {  # case
            %x_108:i32 = load %i_3
            %142:ptr<private, i32, read_write> = access %data, %x_108
            store %142, 3i
            exit_switch  # switch_1
          }
          %b38 = block {  # case
            %x_106:i32 = load %i_3
            %144:ptr<private, i32, read_write> = access %data, %x_106
            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_128:i32 = load %i_3
        %148:bool = lt %x_128, 10i
        %149:bool = eq %148, false
        break_if %149 %b27
      }
    }
    store %j_1, 0i
    loop [b: %b42, c: %b43] {  # loop_7
      %b42 = block {  # body
        %150:i32 = load %j_1
        %151:bool = lt %150, 10i
        if %151 [t: %b44, f: %b45] {  # if_8
          %b44 = block {  # true
            exit_if  # if_8
          }
          %b45 = block {  # false
            exit_loop  # loop_7
          }
        }
        %x_137:i32 = load %j_1
        %153:ptr<private, i32, read_write> = access %temp, %x_137
        %154:i32 = load %j_1
        %155:ptr<private, i32, read_write> = access %data, %154
        %156:i32 = load %155
        store %153, %156
        continue %b43
      }
      %b43 = block {  # continuing
        %157:i32 = load %j_1
        %158:i32 = add %157, 1i
        store %j_1, %158
        next_iteration %b42
      }
    }
    %159:void = call %mergeSort_
    %160:f32 = load_vector_element %gl_FragCoord, 1u
    %161:i32 = convert %160
    %162:bool = lt %161, 30i
    if %162 [t: %b46, f: %b47] {  # if_9
      %b46 = 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_9
      }
      %b47 = block {  # false
        %168:f32 = load_vector_element %gl_FragCoord, 1u
        %169:i32 = convert %168
        %170:bool = lt %169, 60i
        if %170 [t: %b48, f: %b49] {  # if_10
          %b48 = 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_10
          }
          %b49 = block {  # false
            %176:f32 = load_vector_element %gl_FragCoord, 1u
            %177:i32 = convert %176
            %178:bool = lt %177, 90i
            if %178 [t: %b50, f: %b51] {  # if_11
              %b50 = 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_11
              }
              %b51 = block {  # false
                %184:f32 = load_vector_element %gl_FragCoord, 1u
                %185:i32 = convert %184
                %186:bool = lt %185, 120i
                if %186 [t: %b52, f: %b53] {  # if_12
                  %b52 = 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_12
                  }
                  %b53 = block {  # false
                    %192:f32 = load_vector_element %gl_FragCoord, 1u
                    %193:i32 = convert %192
                    %194:bool = lt %193, 150i
                    if %194 [t: %b54, f: %b55] {  # if_13
                      %b54 = block {  # true
                        discard
                        exit_if  # if_13
                      }
                      %b55 = block {  # false
                        %195:f32 = load_vector_element %gl_FragCoord, 1u
                        %196:i32 = convert %195
                        %197:bool = lt %196, 180i
                        if %197 [t: %b56, f: %b57] {  # if_14
                          %b56 = 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_14
                          }
                          %b57 = block {  # false
                            %203:f32 = load_vector_element %gl_FragCoord, 1u
                            %204:i32 = convert %203
                            %205:bool = lt %204, 210i
                            if %205 [t: %b58, f: %b59] {  # if_15
                              %b58 = 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_15
                              }
                              %b59 = block {  # false
                                %211:f32 = load_vector_element %gl_FragCoord, 1u
                                %212:i32 = convert %211
                                %213:bool = lt %212, 240i
                                if %213 [t: %b60, f: %b61] {  # if_16
                                  %b60 = 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_16
                                  }
                                  %b61 = block {  # false
                                    %219:f32 = load_vector_element %gl_FragCoord, 1u
                                    %220:i32 = convert %219
                                    %221:bool = lt %220, 270i
                                    if %221 [t: %b62, f: %b63] {  # if_17
                                      %b62 = 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_17
                                      }
                                      %b63 = block {  # false
                                        discard
                                        exit_if  # if_17
                                      }
                                    }
                                    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
      }
    }
    %227:f32 = load %grey
    %x_249:vec3<f32> = construct %227
    %229:f32 = access %x_249, 0u
    %230:f32 = access %x_249, 1u
    %231:f32 = access %x_249, 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 -> %b64 {
  %b64 = 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.  *
********************************************************************
