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
  %x_8: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
}

%main_1 = func():void {
  $B2: {
    %temp:ptr<function, array<i32, 10>, read_write> = var
    %data:ptr<function, array<i32, 10>, read_write> = var
    %x_63:ptr<function, i32, read_write> = var
    %x_103:ptr<function, i32, read_write> = var
    %x_112:ptr<function, i32, read_write> = var
    %x_190:ptr<function, f32, read_write> = var
    %x_262:ptr<function, f32, read_write> = var
    %x_263:ptr<function, f32, read_write> = var
    %14:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
    %15:f32 = load_vector_element %14, 0u
    %16:i32 = call %tint_f32_to_i32, %15
    store %x_63, %16
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %x_100:ptr<function, i32, read_write> = var
        %x_98:ptr<function, i32, read_write> = var
        %x_96:ptr<function, i32, read_write> = var
        %x_94:ptr<function, i32, read_write> = var
        %x_92:ptr<function, i32, read_write> = var
        %x_90:ptr<function, i32, read_write> = var
        %x_88:ptr<function, i32, read_write> = var
        %x_86:ptr<function, i32, read_write> = var
        %x_84:ptr<function, i32, read_write> = var
        %x_82:ptr<function, i32, read_write> = var
        %x_64:ptr<function, i32, read_write> = var
        %29:array<i32, 10> = load %data
        %x_68:array<i32, 10> = let %29
        store %data, array<i32, 10>(0i)
        store %data, %x_68
        %31:i32 = load %x_63
        %32:i32 = add %31, 1i
        store %x_64, %32
        %33:i32 = load %x_63
        switch %33 [c: (9i, $B5), c: (8i, $B6), c: (7i, $B7), c: (6i, $B8), c: (5i, $B9), c: (4i, $B10), c: (3i, $B11), c: (2i, $B12), c: (1i, $B13), c: (0i, $B14), c: (default, $B15)] {  # switch_1
          $B5: {  # case
            %34:i32 = load %x_63
            %35:ptr<function, i32, read_write> = access %data, %34
            store %35, -5i
            %36:i32 = load %x_63
            %37:i32 = add %36, 1i
            store %x_100, %37
            %38:i32 = load %x_100
            store %x_64, %38
            exit_switch  # switch_1
          }
          $B6: {  # case
            %39:i32 = load %x_63
            %40:ptr<function, i32, read_write> = access %data, %39
            store %40, -4i
            %41:i32 = load %x_63
            %42:i32 = add %41, 1i
            store %x_98, %42
            %43:i32 = load %x_98
            store %x_64, %43
            exit_switch  # switch_1
          }
          $B7: {  # case
            %44:i32 = load %x_63
            %45:ptr<function, i32, read_write> = access %data, %44
            store %45, -3i
            %46:i32 = load %x_63
            %47:i32 = add %46, 1i
            store %x_96, %47
            %48:i32 = load %x_96
            store %x_64, %48
            exit_switch  # switch_1
          }
          $B8: {  # case
            %49:i32 = load %x_63
            %50:ptr<function, i32, read_write> = access %data, %49
            store %50, -2i
            %51:i32 = load %x_63
            %52:i32 = add %51, 1i
            store %x_94, %52
            %53:i32 = load %x_94
            store %x_64, %53
            exit_switch  # switch_1
          }
          $B9: {  # case
            %54:i32 = load %x_63
            %55:ptr<function, i32, read_write> = access %data, %54
            store %55, -1i
            %56:i32 = load %x_63
            %57:i32 = add %56, 1i
            store %x_92, %57
            %58:i32 = load %x_92
            store %x_64, %58
            exit_switch  # switch_1
          }
          $B10: {  # case
            %59:i32 = load %x_63
            %60:ptr<function, i32, read_write> = access %data, %59
            store %60, 0i
            %61:i32 = load %x_63
            %62:i32 = add %61, 1i
            store %x_90, %62
            %63:i32 = load %x_90
            store %x_64, %63
            exit_switch  # switch_1
          }
          $B11: {  # case
            %64:i32 = load %x_63
            %65:ptr<function, i32, read_write> = access %data, %64
            store %65, 1i
            %66:i32 = load %x_63
            %67:i32 = add %66, 1i
            store %x_88, %67
            %68:i32 = load %x_88
            store %x_64, %68
            exit_switch  # switch_1
          }
          $B12: {  # case
            %69:i32 = load %x_63
            %70:ptr<function, i32, read_write> = access %data, %69
            store %70, 2i
            %71:i32 = load %x_63
            %72:i32 = add %71, 1i
            store %x_86, %72
            %73:i32 = load %x_86
            store %x_64, %73
            exit_switch  # switch_1
          }
          $B13: {  # case
            %74:i32 = load %x_63
            %75:ptr<function, i32, read_write> = access %data, %74
            store %75, 3i
            %76:i32 = load %x_63
            %77:i32 = add %76, 1i
            store %x_84, %77
            %78:i32 = load %x_84
            store %x_64, %78
            exit_switch  # switch_1
          }
          $B14: {  # case
            %79:i32 = load %x_63
            %80:ptr<function, i32, read_write> = access %data, %79
            store %80, 4i
            %81:i32 = load %x_63
            %82:i32 = add %81, 1i
            store %x_82, %82
            %83:i32 = load %x_82
            store %x_64, %83
            exit_switch  # switch_1
          }
          $B15: {  # case
            exit_switch  # switch_1
          }
        }
        continue  # -> $B4
      }
      $B4: {  # continuing
        %84:i32 = load %x_64
        store %x_63, %84
        %85:i32 = load %x_64
        %86:bool = lt %85, 10i
        %87:bool = eq %86, false
        break_if %87  # -> [t: exit_loop loop_1, f: $B3]
      }
    }
    store %x_103, 0i
    loop [b: $B16, c: $B17] {  # loop_2
      $B16: {  # body
        %x_104:ptr<function, i32, read_write> = var
        %89:i32 = load %x_103
        %90:bool = lt %89, 10i
        if %90 [t: $B18, f: $B19] {  # if_1
          $B18: {  # true
            exit_if  # if_1
          }
          $B19: {  # false
            exit_loop  # loop_2
          }
        }
        continue  # -> $B17
      }
      $B17: {  # continuing
        %91:i32 = load %x_103
        %92:ptr<function, i32, read_write> = access %temp, %91
        %93:i32 = load %x_103
        %94:ptr<function, i32, read_write> = access %data, %93
        %95:i32 = load %94
        store %92, %95
        %96:i32 = load %x_103
        %97:i32 = add %96, 1i
        store %x_104, %97
        %98:i32 = load %x_104
        store %x_103, %98
        next_iteration  # -> $B16
      }
    }
    store %x_112, 1i
    loop [b: $B20, c: $B21] {  # loop_3
      $B20: {  # body
        %x_119:ptr<function, i32, read_write> = var
        %x_113:ptr<function, i32, read_write> = var
        %101:i32 = load %x_112
        %102:bool = lte %101, 9i
        if %102 [t: $B22, f: $B23] {  # if_2
          $B22: {  # true
            exit_if  # if_2
          }
          $B23: {  # false
            exit_loop  # loop_3
          }
        }
        store %x_119, 0i
        loop [b: $B24, c: $B25] {  # loop_4
          $B24: {  # body
            %x_131:ptr<function, i32, read_write> = var
            %x_134:ptr<function, i32, read_write> = var
            %x_136:ptr<function, i32, read_write> = var
            %x_158:ptr<function, i32, read_write> = var
            %x_161:ptr<function, i32, read_write> = var
            %x_171:ptr<function, i32, read_write> = var
            %109:i32 = load %x_119
            %110:bool = lt %109, 9i
            if %110 [t: $B26, f: $B27] {  # if_3
              $B26: {  # true
                exit_if  # if_3
              }
              $B27: {  # false
                exit_loop  # loop_4
              }
            }
            %111:i32 = load %x_119
            %112:i32 = load %x_112
            %113:i32 = add %111, %112
            %x_125:i32 = let %113
            %115:i32 = sub %x_125, 1i
            %x_126:i32 = let %115
            %117:i32 = load %x_119
            %118:i32 = load %x_112
            %119:i32 = mul 2i, %118
            %120:i32 = add %117, %119
            %x_120:i32 = let %120
            %122:i32 = sub %x_120, 1i
            %123:i32 = min %122, 9i
            %x_129:i32 = let %123
            %125:i32 = load %x_119
            store %x_131, %125
            store %x_134, %x_125
            %126:i32 = load %x_119
            store %x_136, %126
            loop [b: $B28, c: $B29] {  # loop_5
              $B28: {  # body
                %x_151:ptr<function, i32, read_write> = var
                %x_154:ptr<function, i32, read_write> = var
                %x_135:ptr<function, i32, read_write> = var
                %x_137:ptr<function, i32, read_write> = var
                %131:i32 = load %x_136
                %132:bool = lte %131, %x_126
                %133:i32 = load %x_134
                %134:bool = lte %133, %x_129
                %135:bool = and %132, %134
                if %135 [t: $B30, f: $B31] {  # if_4
                  $B30: {  # true
                    exit_if  # if_4
                  }
                  $B31: {  # false
                    exit_loop  # loop_5
                  }
                }
                %136:i32 = load %x_136
                %x_143_save:i32 = let %136
                %138:i32 = load %x_134
                %x_145_save:i32 = let %138
                %140:i32 = load %x_131
                %141:i32 = add %140, 1i
                %x_132:i32 = let %141
                %143:i32 = load %x_136
                %144:ptr<function, i32, read_write> = access %data, %143
                %145:i32 = load %144
                %146:i32 = load %x_134
                %147:ptr<function, i32, read_write> = access %data, %146
                %148:i32 = load %147
                %149:bool = lt %145, %148
                if %149 [t: $B32, f: $B33] {  # if_5
                  $B32: {  # true
                    %150:i32 = load %x_136
                    %151:i32 = add %150, 1i
                    store %x_151, %151
                    %152:i32 = load %x_131
                    %153:ptr<function, i32, read_write> = access %temp, %152
                    %154:ptr<function, i32, read_write> = access %data, %x_143_save
                    %155:i32 = load %154
                    store %153, %155
                    %156:i32 = load %x_134
                    store %x_135, %156
                    %157:i32 = load %x_151
                    store %x_137, %157
                    exit_if  # if_5
                  }
                  $B33: {  # false
                    %158:i32 = load %x_134
                    %159:i32 = add %158, 1i
                    store %x_154, %159
                    %160:i32 = load %x_131
                    %161:ptr<function, i32, read_write> = access %temp, %160
                    %162:ptr<function, i32, read_write> = access %data, %x_145_save
                    %163:i32 = load %162
                    store %161, %163
                    %164:i32 = load %x_154
                    store %x_135, %164
                    %165:i32 = load %x_136
                    store %x_137, %165
                    exit_if  # if_5
                  }
                }
                continue  # -> $B29
              }
              $B29: {  # continuing
                store %x_131, %x_132
                %166:i32 = load %x_135
                store %x_134, %166
                %167:i32 = load %x_137
                store %x_136, %167
                next_iteration  # -> $B28
              }
            }
            %168:i32 = load %x_131
            store %x_158, %168
            %169:i32 = load %x_136
            store %x_161, %169
            loop [b: $B34, c: $B35] {  # loop_6
              $B34: {  # body
                %x_159:ptr<function, i32, read_write> = var
                %x_162:ptr<function, i32, read_write> = var
                %172:i32 = load %x_161
                %173:bool = lt %172, 10i
                %174:i32 = load %x_161
                %175:bool = lte %174, %x_126
                %176:bool = and %173, %175
                if %176 [t: $B36, f: $B37] {  # if_6
                  $B36: {  # true
                    exit_if  # if_6
                  }
                  $B37: {  # false
                    exit_loop  # loop_6
                  }
                }
                continue  # -> $B35
              }
              $B35: {  # continuing
                %177:i32 = load %x_158
                %178:i32 = add %177, 1i
                store %x_159, %178
                %179:i32 = load %x_161
                %180:i32 = add %179, 1i
                store %x_162, %180
                %181:i32 = load %x_158
                %182:ptr<function, i32, read_write> = access %temp, %181
                %183:i32 = load %x_161
                %184:ptr<function, i32, read_write> = access %data, %183
                %185:i32 = load %184
                store %182, %185
                %186:i32 = load %x_159
                store %x_158, %186
                %187:i32 = load %x_162
                store %x_161, %187
                next_iteration  # -> $B34
              }
            }
            %188:i32 = load %x_119
            store %x_171, %188
            loop [b: $B38, c: $B39] {  # loop_7
              $B38: {  # body
                %x_172:ptr<function, i32, read_write> = var
                %190:i32 = load %x_171
                %191:bool = lte %190, %x_129
                if %191 [t: $B40, f: $B41] {  # if_7
                  $B40: {  # true
                    exit_if  # if_7
                  }
                  $B41: {  # false
                    exit_loop  # loop_7
                  }
                }
                continue  # -> $B39
              }
              $B39: {  # continuing
                %192:i32 = load %x_171
                %193:ptr<function, i32, read_write> = access %data, %192
                %194:i32 = load %x_171
                %195:ptr<function, i32, read_write> = access %temp, %194
                %196:i32 = load %195
                store %193, %196
                %197:i32 = load %x_171
                %198:i32 = add %197, 1i
                store %x_172, %198
                %199:i32 = load %x_172
                store %x_171, %199
                next_iteration  # -> $B38
              }
            }
            continue  # -> $B25
          }
          $B25: {  # continuing
            store %x_119, %x_120
            next_iteration  # -> $B24
          }
        }
        continue  # -> $B21
      }
      $B21: {  # continuing
        %200:i32 = load %x_112
        %201:i32 = mul 2i, %200
        store %x_113, %201
        %202:i32 = load %x_113
        store %x_112, %202
        next_iteration  # -> $B20
      }
    }
    %x_181:ptr<function, i32, read_write> = var
    %x_199:ptr<function, f32, read_write> = var
    %x_261:ptr<function, f32, read_write> = var
    %206:f32 = load_vector_element %gl_FragCoord, 1u
    %207:i32 = call %tint_f32_to_i32, %206
    store %x_181, %207
    %208:i32 = load %x_181
    %209:bool = lt %208, 30i
    if %209 [t: $B42, f: $B43] {  # if_8
      $B42: {  # true
        %210:ptr<function, i32, read_write> = access %data, 0i
        %211:i32 = load %210
        %212:f32 = convert %211
        %213:f32 = mul %212, 0.10000000149011611938f
        %214:f32 = add 0.5f, %213
        store %x_190, %214
        %215:f32 = load %x_190
        store %x_263, %215
        exit_if  # if_8
      }
      $B43: {  # false
        %x_208:ptr<function, f32, read_write> = var
        %x_260:ptr<function, f32, read_write> = var
        %218:i32 = load %x_181
        %219:bool = lt %218, 60i
        if %219 [t: $B44, f: $B45] {  # if_9
          $B44: {  # true
            %220:ptr<function, i32, read_write> = access %data, 1i
            %221:i32 = load %220
            %222:f32 = convert %221
            %223:f32 = mul %222, 0.10000000149011611938f
            %224:f32 = add 0.5f, %223
            store %x_199, %224
            %225:f32 = load %x_199
            store %x_262, %225
            exit_if  # if_9
          }
          $B45: {  # false
            %x_217:ptr<function, f32, read_write> = var
            %x_259:ptr<function, f32, read_write> = var
            %228:i32 = load %x_181
            %229:bool = lt %228, 90i
            if %229 [t: $B46, f: $B47] {  # if_10
              $B46: {  # true
                %230:ptr<function, i32, read_write> = access %data, 2i
                %231:i32 = load %230
                %232:f32 = convert %231
                %233:f32 = mul %232, 0.10000000149011611938f
                %234:f32 = add 0.5f, %233
                store %x_208, %234
                %235:f32 = load %x_208
                store %x_261, %235
                exit_if  # if_10
              }
              $B47: {  # false
                %236:i32 = load %x_181
                %237:bool = lt %236, 120i
                if %237 [t: $B48, f: $B49] {  # if_11
                  $B48: {  # true
                    %238:ptr<function, i32, read_write> = access %data, 3i
                    %239:i32 = load %238
                    %240:f32 = convert %239
                    %241:f32 = mul %240, 0.10000000149011611938f
                    %242:f32 = add 0.5f, %241
                    store %x_217, %242
                    %243:f32 = load %x_217
                    store %x_260, %243
                    exit_if  # if_11
                  }
                  $B49: {  # false
                    %x_230:ptr<function, f32, read_write> = var
                    %x_258:ptr<function, f32, read_write> = var
                    %246:i32 = load %x_181
                    %247:bool = lt %246, 150i
                    if %247 [t: $B50, f: $B51] {  # if_12
                      $B50: {  # true
                        store %continue_execution, false
                        exit_if  # if_12
                      }
                      $B51: {  # false
                        %x_239:ptr<function, f32, read_write> = var
                        %x_257:ptr<function, f32, read_write> = var
                        %250:i32 = load %x_181
                        %251:bool = lt %250, 180i
                        if %251 [t: $B52, f: $B53] {  # if_13
                          $B52: {  # true
                            %252:ptr<function, i32, read_write> = access %data, 5i
                            %253:i32 = load %252
                            %254:f32 = convert %253
                            %255:f32 = mul %254, 0.10000000149011611938f
                            %256:f32 = add 0.5f, %255
                            store %x_230, %256
                            %257:f32 = load %x_230
                            store %x_259, %257
                            exit_if  # if_13
                          }
                          $B53: {  # false
                            %x_248:ptr<function, f32, read_write> = var
                            %x_256:ptr<function, f32, read_write> = var
                            %260:i32 = load %x_181
                            %261:bool = lt %260, 210i
                            if %261 [t: $B54, f: $B55] {  # if_14
                              $B54: {  # true
                                %262:ptr<function, i32, read_write> = access %data, 6i
                                %263:i32 = load %262
                                %264:f32 = convert %263
                                %265:f32 = mul %264, 0.10000000149011611938f
                                %266:f32 = add 0.5f, %265
                                store %x_239, %266
                                %267:f32 = load %x_239
                                store %x_258, %267
                                exit_if  # if_14
                              }
                              $B55: {  # false
                                %268:i32 = load %x_181
                                %269:bool = lt %268, 240i
                                if %269 [t: $B56, f: $B57] {  # if_15
                                  $B56: {  # true
                                    %270:ptr<function, i32, read_write> = access %data, 7i
                                    %271:i32 = load %270
                                    %272:f32 = convert %271
                                    %273:f32 = mul %272, 0.10000000149011611938f
                                    %274:f32 = add 0.5f, %273
                                    store %x_248, %274
                                    %275:f32 = load %x_248
                                    store %x_257, %275
                                    exit_if  # if_15
                                  }
                                  $B57: {  # false
                                    %276:i32 = load %x_181
                                    %277:bool = lt %276, 270i
                                    if %277 [t: $B58, f: $B59] {  # if_16
                                      $B58: {  # true
                                        exit_if  # if_16
                                      }
                                      $B59: {  # false
                                        store %continue_execution, false
                                        exit_if  # if_16
                                      }
                                    }
                                    %278:ptr<function, i32, read_write> = access %data, 8i
                                    %279:i32 = load %278
                                    %280:f32 = convert %279
                                    %281:f32 = mul %280, 0.10000000149011611938f
                                    %282:f32 = add 0.5f, %281
                                    store %x_256, %282
                                    %283:f32 = load %x_256
                                    store %x_257, %283
                                    exit_if  # if_15
                                  }
                                }
                                %284:f32 = load %x_257
                                store %x_258, %284
                                exit_if  # if_14
                              }
                            }
                            %285:f32 = load %x_258
                            store %x_259, %285
                            exit_if  # if_13
                          }
                        }
                        exit_if  # if_12
                      }
                    }
                    %286:f32 = load %x_259
                    store %x_260, %286
                    exit_if  # if_11
                  }
                }
                %287:f32 = load %x_260
                store %x_261, %287
                exit_if  # if_10
              }
            }
            %288:f32 = load %x_261
            store %x_262, %288
            exit_if  # if_9
          }
        }
        %289:f32 = load %x_262
        store %x_263, %289
        exit_if  # if_8
      }
    }
    %290:f32 = load %x_263
    %291:f32 = load %x_263
    %292:f32 = load %x_263
    %293:vec4<f32> = construct %290, %291, %292, 1.0f
    store %x_GLF_color, %293
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
  $B60: {
    store %gl_FragCoord, %gl_FragCoord_param
    %296:void = call %main_1
    %297:vec4<f32> = load %x_GLF_color
    %298:main_out = construct %297
    %299:bool = load %continue_execution
    %300:bool = eq %299, false
    if %300 [t: $B61] {  # if_17
      $B61: {  # true
        terminate_invocation
      }
    }
    ret %298
  }
}
%tint_f32_to_i32 = func(%value:f32):i32 {
  $B62: {
    %302:i32 = convert %value
    %303:bool = gte %value, -2147483648.0f
    %304:i32 = select -2147483648i, %302, %303
    %305:bool = lte %value, 2147483520.0f
    %306:i32 = select 2147483647i, %304, %305
    ret %306
  }
}

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