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_282:i32 = load %k
            %34:i32 = load %k
            %35:i32 = add %34, 1i
            store %k, %35
            %x_284:i32 = load %i
            %37:i32 = load %i
            %38:i32 = add %37, 1i
            store %i, %38
            %39:ptr<private, i32, read_write> = access %temp, %x_282
            %40:ptr<private, i32, read_write> = access %data, %x_284
            %41:i32 = load %40
            store %39, %41
            exit_if  # if_2
          }
          %b8 = block {  # false
            %x_289:i32 = load %k
            %43:i32 = load %k
            %44:i32 = add %43, 1i
            store %k, %44
            %x_291:i32 = load %j
            %46:i32 = load %j
            %47:i32 = add %46, 1i
            store %j, %47
            %48:ptr<private, i32, read_write> = access %temp, %x_289
            %49:ptr<private, i32, read_write> = access %data, %x_291
            %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
        if true [t: %b11, f: %b12] {  # if_3
          %b11 = block {  # true
            exit_if  # if_3
          }
          %b12 = block {  # false
            continue %b10
          }
        }
        %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: %b13, f: %b14] {  # if_4
          %b13 = block {  # true
            exit_if  # if_4
          }
          %b14 = block {  # false
            exit_loop  # loop_2
          }
        }
        %x_309:i32 = load %k
        %58:i32 = load %k
        %59:i32 = add %58, 1i
        store %k, %59
        %x_311:i32 = load %i
        %61:i32 = load %i
        %62:i32 = add %61, 1i
        store %i, %62
        %63:ptr<private, i32, read_write> = access %temp, %x_309
        %64:ptr<private, i32, read_write> = access %data, %x_311
        %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: %b15, c: %b16] {  # loop_3
      %b15 = block {  # body
        %67:i32 = load %i_1
        %68:i32 = load %to
        %69:bool = lte %67, %68
        if %69 [t: %b17, f: %b18] {  # if_5
          %b17 = block {  # true
            exit_if  # if_5
          }
          %b18 = block {  # false
            exit_loop  # loop_3
          }
        }
        %x_325:i32 = load %i_1
        %71:ptr<private, i32, read_write> = access %data, %x_325
        %72:i32 = load %i_1
        %73:ptr<private, i32, read_write> = access %temp, %72
        %74:i32 = load %73
        store %71, %74
        continue %b16
      }
      %b16 = block {  # continuing
        %75:i32 = load %i_1
        %76:i32 = add %75, 1i
        store %i_1, %76
        next_iteration %b15
      }
    }
    ret
  }
}
%mergeSort_ = func():void -> %b19 {
  %b19 = 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: %b20, c: %b21] {  # loop_4
      %b20 = block {  # body
        %88:i32 = load %m
        %89:i32 = load %high
        %90:bool = lte %88, %89
        if %90 [t: %b22, f: %b23] {  # if_6
          %b22 = block {  # true
            exit_if  # if_6
          }
          %b23 = block {  # false
            exit_loop  # loop_4
          }
        }
        %91:i32 = load %low
        store %i_2, %91
        loop [b: %b24, c: %b25] {  # loop_5
          %b24 = block {  # body
            %92:i32 = load %i_2
            %93:i32 = load %high
            %94:bool = lt %92, %93
            if %94 [t: %b26, f: %b27] {  # if_7
              %b26 = block {  # true
                exit_if  # if_7
              }
              %b27 = 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 %b25
          }
          %b25 = 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 %b24
          }
        }
        continue %b21
      }
      %b21 = block {  # continuing
        %115:i32 = load %m
        %116:i32 = mul 2i, %115
        store %m, %116
        next_iteration %b20
      }
    }
    ret
  }
}
%main_1 = func():void -> %b28 {
  %b28 = 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: %b29, c: %b30] {  # loop_6
      %b29 = block {  # body
        %x_95:i32 = load %i_3
        switch %x_95 [c: (9i, %b31), c: (8i, %b32), c: (7i, %b33), c: (6i, %b34), c: (5i, %b35), c: (4i, %b36), c: (3i, %b37), c: (2i, %b38), c: (1i, %b39), c: (0i, %b40), c: (default, %b41)] {  # switch_1
          %b31 = block {  # case
            %x_125:i32 = load %i_3
            %126:ptr<private, i32, read_write> = access %data, %x_125
            store %126, -5i
            exit_switch  # switch_1
          }
          %b32 = block {  # case
            %x_123:i32 = load %i_3
            %128:ptr<private, i32, read_write> = access %data, %x_123
            store %128, -4i
            exit_switch  # switch_1
          }
          %b33 = block {  # case
            %x_121:i32 = load %i_3
            %130:ptr<private, i32, read_write> = access %data, %x_121
            store %130, -3i
            exit_switch  # switch_1
          }
          %b34 = block {  # case
            %x_119:i32 = load %i_3
            %132:ptr<private, i32, read_write> = access %data, %x_119
            store %132, -2i
            exit_switch  # switch_1
          }
          %b35 = block {  # case
            %x_117:i32 = load %i_3
            %134:ptr<private, i32, read_write> = access %data, %x_117
            store %134, -1i
            exit_switch  # switch_1
          }
          %b36 = block {  # case
            %x_115:i32 = load %i_3
            %136:ptr<private, i32, read_write> = access %data, %x_115
            store %136, 0i
            exit_switch  # switch_1
          }
          %b37 = block {  # case
            %x_113:i32 = load %i_3
            %138:ptr<private, i32, read_write> = access %data, %x_113
            store %138, 1i
            exit_switch  # switch_1
          }
          %b38 = block {  # case
            %x_111:i32 = load %i_3
            %140:ptr<private, i32, read_write> = access %data, %x_111
            store %140, 2i
            exit_switch  # switch_1
          }
          %b39 = block {  # case
            %x_109:i32 = load %i_3
            %142:ptr<private, i32, read_write> = access %data, %x_109
            store %142, 3i
            exit_switch  # switch_1
          }
          %b40 = block {  # case
            %x_107:i32 = load %i_3
            %144:ptr<private, i32, read_write> = access %data, %x_107
            store %144, 4i
            exit_switch  # switch_1
          }
          %b41 = block {  # case
            exit_switch  # switch_1
          }
        }
        %145:i32 = load %i_3
        %146:i32 = add %145, 1i
        store %i_3, %146
        continue %b30
      }
      %b30 = block {  # continuing
        %x_129:i32 = load %i_3
        %148:bool = lt %x_129, 10i
        %149:bool = eq %148, false
        break_if %149 %b29
      }
    }
    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_138:i32 = load %j_1
        %153:ptr<private, i32, read_write> = access %temp, %x_138
        %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_250:vec3<f32> = construct %227
    %229:f32 = access %x_250, 0u
    %230:f32 = access %x_250, 1u
    %231:f32 = access %x_250, 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.  *
********************************************************************
