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_190:ptr<function, f32, read_write> = var
    %x_262:ptr<function, f32, read_write> = var
    %x_63_phi:ptr<function, i32, read_write> = var
    %x_103_phi:ptr<function, i32, read_write> = var
    %x_112_phi:ptr<function, i32, read_write> = var
    %x_263_phi:ptr<function, f32, read_write> = var
    %14:ptr<uniform, vec2<f32>, read> = access %x_8, 0u
    %15:f32 = load_vector_element %14, 0u
    %x_60:f32 = let %15
    %17:i32 = call %tint_f32_to_i32, %x_60
    %x_61:i32 = let %17
    store %x_63_phi, %x_61
    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_phi:ptr<function, i32, read_write> = var
        %31:i32 = load %x_63_phi
        %x_63:i32 = let %31
        %33:array<i32, 10> = load %data
        %x_68:array<i32, 10> = let %33
        store %data, array<i32, 10>(0i)
        store %data, %x_68
        %35:i32 = add %x_63, 1i
        %x_69:i32 = let %35
        store %x_64_phi, %x_69
        switch %x_63 [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
            %37:ptr<function, i32, read_write> = access %data, %x_63
            store %37, -5i
            %38:i32 = add %x_63, 1i
            store %x_100, %38
            %39:i32 = load %x_100
            store %x_64_phi, %39
            exit_switch  # switch_1
          }
          $B6: {  # case
            %40:ptr<function, i32, read_write> = access %data, %x_63
            store %40, -4i
            %41:i32 = add %x_63, 1i
            store %x_98, %41
            %42:i32 = load %x_98
            store %x_64_phi, %42
            exit_switch  # switch_1
          }
          $B7: {  # case
            %43:ptr<function, i32, read_write> = access %data, %x_63
            store %43, -3i
            %44:i32 = add %x_63, 1i
            store %x_96, %44
            %45:i32 = load %x_96
            store %x_64_phi, %45
            exit_switch  # switch_1
          }
          $B8: {  # case
            %46:ptr<function, i32, read_write> = access %data, %x_63
            store %46, -2i
            %47:i32 = add %x_63, 1i
            store %x_94, %47
            %48:i32 = load %x_94
            store %x_64_phi, %48
            exit_switch  # switch_1
          }
          $B9: {  # case
            %49:ptr<function, i32, read_write> = access %data, %x_63
            store %49, -1i
            %50:i32 = add %x_63, 1i
            store %x_92, %50
            %51:i32 = load %x_92
            store %x_64_phi, %51
            exit_switch  # switch_1
          }
          $B10: {  # case
            %52:ptr<function, i32, read_write> = access %data, %x_63
            store %52, 0i
            %53:i32 = add %x_63, 1i
            store %x_90, %53
            %54:i32 = load %x_90
            store %x_64_phi, %54
            exit_switch  # switch_1
          }
          $B11: {  # case
            %55:ptr<function, i32, read_write> = access %data, %x_63
            store %55, 1i
            %56:i32 = add %x_63, 1i
            store %x_88, %56
            %57:i32 = load %x_88
            store %x_64_phi, %57
            exit_switch  # switch_1
          }
          $B12: {  # case
            %58:ptr<function, i32, read_write> = access %data, %x_63
            store %58, 2i
            %59:i32 = add %x_63, 1i
            store %x_86, %59
            %60:i32 = load %x_86
            store %x_64_phi, %60
            exit_switch  # switch_1
          }
          $B13: {  # case
            %61:ptr<function, i32, read_write> = access %data, %x_63
            store %61, 3i
            %62:i32 = add %x_63, 1i
            store %x_84, %62
            %63:i32 = load %x_84
            store %x_64_phi, %63
            exit_switch  # switch_1
          }
          $B14: {  # case
            %64:ptr<function, i32, read_write> = access %data, %x_63
            store %64, 4i
            %65:i32 = add %x_63, 1i
            store %x_82, %65
            %66:i32 = load %x_82
            store %x_64_phi, %66
            exit_switch  # switch_1
          }
          $B15: {  # case
            exit_switch  # switch_1
          }
        }
        %67:i32 = load %x_64_phi
        %x_64:i32 = let %67
        continue  # -> $B4
      }
      $B4: {  # continuing
        store %x_63_phi, %x_64
        %69:bool = lt %x_64, 10i
        %70:bool = eq %69, false
        break_if %70  # -> [t: exit_loop loop_1, f: $B3]
      }
    }
    store %x_103_phi, 0i
    loop [b: $B16, c: $B17] {  # loop_2
      $B16: {  # body
        %x_104:ptr<function, i32, read_write> = var
        %72:i32 = load %x_103_phi
        %x_103:i32 = let %72
        %74:bool = lt %x_103, 10i
        if %74 [t: $B18, f: $B19] {  # if_1
          $B18: {  # true
            exit_if  # if_1
          }
          $B19: {  # false
            exit_loop  # loop_2
          }
        }
        continue  # -> $B17
      }
      $B17: {  # continuing
        %75:ptr<function, i32, read_write> = access %data, %x_103
        %76:i32 = load %75
        %x_109:i32 = let %76
        %78:ptr<function, i32, read_write> = access %temp, %x_103
        store %78, %x_109
        %79:i32 = add %x_103, 1i
        store %x_104, %79
        %80:i32 = load %x_104
        store %x_103_phi, %80
        next_iteration  # -> $B16
      }
    }
    store %x_112_phi, 1i
    loop [b: $B20, c: $B21] {  # loop_3
      $B20: {  # body
        %x_113:ptr<function, i32, read_write> = var
        %x_119_phi:ptr<function, i32, read_write> = var
        %83:i32 = load %x_112_phi
        %x_112:i32 = let %83
        %85:bool = lte %x_112, 9i
        if %85 [t: $B22, f: $B23] {  # if_2
          $B22: {  # true
            exit_if  # if_2
          }
          $B23: {  # false
            exit_loop  # loop_3
          }
        }
        store %x_119_phi, 0i
        loop [b: $B24, c: $B25] {  # loop_4
          $B24: {  # body
            %x_131:ptr<function, i32, read_write> = var
            %x_136:ptr<function, i32, read_write> = var
            %x_131_phi:ptr<function, i32, read_write> = var
            %x_134_phi:ptr<function, i32, read_write> = var
            %x_136_phi:ptr<function, i32, read_write> = var
            %x_158_phi:ptr<function, i32, read_write> = var
            %x_161_phi:ptr<function, i32, read_write> = var
            %x_171_phi:ptr<function, i32, read_write> = var
            %94:i32 = load %x_119_phi
            %x_119:i32 = let %94
            %96:bool = lt %x_119, 9i
            if %96 [t: $B26, f: $B27] {  # if_3
              $B26: {  # true
                exit_if  # if_3
              }
              $B27: {  # false
                exit_loop  # loop_4
              }
            }
            %97:i32 = add %x_119, %x_112
            %x_125:i32 = let %97
            %99:i32 = sub %x_125, 1i
            %x_126:i32 = let %99
            %101:i32 = mul 2i, %x_112
            %102:i32 = add %x_119, %101
            %x_120:i32 = let %102
            %104:i32 = sub %x_120, 1i
            %105:i32 = min %104, 9i
            %x_129:i32 = let %105
            store %x_131_phi, %x_119
            store %x_134_phi, %x_125
            store %x_136_phi, %x_119
            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_phi:ptr<function, i32, read_write> = var
                %x_137_phi:ptr<function, i32, read_write> = var
                %111:i32 = load %x_131_phi
                store %x_131, %111
                %112:i32 = load %x_134_phi
                %x_134:i32 = let %112
                %114:i32 = load %x_136_phi
                store %x_136, %114
                %115:i32 = load %x_136
                %116:bool = lte %115, %x_126
                %117:bool = lte %x_134, %x_129
                %118:bool = and %116, %117
                if %118 [t: $B30, f: $B31] {  # if_4
                  $B30: {  # true
                    exit_if  # if_4
                  }
                  $B31: {  # false
                    exit_loop  # loop_5
                  }
                }
                %119:i32 = load %x_136
                %x_143_save:i32 = let %119
                %121:ptr<function, i32, read_write> = access %data, %x_143_save
                %122:i32 = load %121
                %x_144:i32 = let %122
                %x_145_save:i32 = let %x_134
                %125:ptr<function, i32, read_write> = access %data, %x_145_save
                %126:i32 = load %125
                %x_146:i32 = let %126
                %128:i32 = load %x_131
                %129:i32 = add %128, 1i
                %130:i32 = bitcast %129
                %x_132:i32 = let %130
                %132:bool = lt %x_144, %x_146
                if %132 [t: $B32, f: $B33] {  # if_5
                  $B32: {  # true
                    %133:i32 = load %x_136
                    %134:i32 = add %133, 1i
                    %135:i32 = bitcast %134
                    store %x_151, %135
                    %136:ptr<function, i32, read_write> = access %data, %x_143_save
                    %137:i32 = load %136
                    %x_152:i32 = let %137
                    %139:i32 = load %x_131
                    %140:ptr<function, i32, read_write> = access %temp, %139
                    store %140, %x_152
                    store %x_135_phi, %x_134
                    %141:i32 = load %x_151
                    store %x_137_phi, %141
                    exit_if  # if_5
                  }
                  $B33: {  # false
                    %142:i32 = add %x_134, 1i
                    store %x_154, %142
                    %143:ptr<function, i32, read_write> = access %data, %x_145_save
                    %144:i32 = load %143
                    %x_155:i32 = let %144
                    %146:i32 = load %x_131
                    %147:ptr<function, i32, read_write> = access %temp, %146
                    store %147, %x_155
                    %148:i32 = load %x_154
                    store %x_135_phi, %148
                    %149:i32 = load %x_136
                    store %x_137_phi, %149
                    exit_if  # if_5
                  }
                }
                %150:i32 = load %x_135_phi
                %x_135:i32 = let %150
                %152:i32 = load %x_137_phi
                %x_137:i32 = let %152
                continue  # -> $B29
              }
              $B29: {  # continuing
                store %x_131_phi, %x_132
                store %x_134_phi, %x_135
                store %x_136_phi, %x_137
                next_iteration  # -> $B28
              }
            }
            %154:i32 = load %x_131
            store %x_158_phi, %154
            %155:i32 = load %x_136
            store %x_161_phi, %155
            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
                %158:i32 = load %x_158_phi
                %x_158:i32 = let %158
                %160:i32 = load %x_161_phi
                %x_161:i32 = let %160
                %162:bool = lt %x_161, 10i
                %163:bool = lte %x_161, %x_126
                %164:bool = and %162, %163
                if %164 [t: $B36, f: $B37] {  # if_6
                  $B36: {  # true
                    exit_if  # if_6
                  }
                  $B37: {  # false
                    exit_loop  # loop_6
                  }
                }
                continue  # -> $B35
              }
              $B35: {  # continuing
                %165:i32 = add %x_158, 1i
                store %x_159, %165
                %166:i32 = add %x_161, 1i
                store %x_162, %166
                %167:ptr<function, i32, read_write> = access %data, %x_161
                %168:i32 = load %167
                %x_168:i32 = let %168
                %170:ptr<function, i32, read_write> = access %temp, %x_158
                store %170, %x_168
                %171:i32 = load %x_159
                store %x_158_phi, %171
                %172:i32 = load %x_162
                store %x_161_phi, %172
                next_iteration  # -> $B34
              }
            }
            store %x_171_phi, %x_119
            loop [b: $B38, c: $B39] {  # loop_7
              $B38: {  # body
                %x_172:ptr<function, i32, read_write> = var
                %174:i32 = load %x_171_phi
                %x_171:i32 = let %174
                %176:bool = lte %x_171, %x_129
                if %176 [t: $B40, f: $B41] {  # if_7
                  $B40: {  # true
                    exit_if  # if_7
                  }
                  $B41: {  # false
                    exit_loop  # loop_7
                  }
                }
                continue  # -> $B39
              }
              $B39: {  # continuing
                %177:ptr<function, i32, read_write> = access %temp, %x_171
                %178:i32 = load %177
                %x_177:i32 = let %178
                %180:ptr<function, i32, read_write> = access %data, %x_171
                store %180, %x_177
                %181:i32 = add %x_171, 1i
                store %x_172, %181
                %182:i32 = load %x_172
                store %x_171_phi, %182
                next_iteration  # -> $B38
              }
            }
            continue  # -> $B25
          }
          $B25: {  # continuing
            store %x_119_phi, %x_120
            next_iteration  # -> $B24
          }
        }
        continue  # -> $B21
      }
      $B21: {  # continuing
        %183:i32 = mul 2i, %x_112
        store %x_113, %183
        %184:i32 = load %x_113
        store %x_112_phi, %184
        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
    %x_262_phi:ptr<function, f32, read_write> = var
    %189:f32 = load_vector_element %gl_FragCoord, 1u
    %x_180:f32 = let %189
    %191:i32 = call %tint_f32_to_i32, %x_180
    store %x_181, %191
    %192:i32 = load %x_181
    %193:bool = lt %192, 30i
    if %193 [t: $B42, f: $B43] {  # if_8
      $B42: {  # true
        %194:ptr<function, i32, read_write> = access %data, 0i
        %195:i32 = load %194
        %x_187:i32 = let %195
        %197:f32 = convert %x_187
        %198:f32 = mul %197, 0.10000000149011611938f
        %199:f32 = add 0.5f, %198
        store %x_190, %199
        %200:f32 = load %x_190
        store %x_263_phi, %200
        exit_if  # if_8
      }
      $B43: {  # false
        %x_208:ptr<function, f32, read_write> = var
        %x_260:ptr<function, f32, read_write> = var
        %x_261_phi:ptr<function, f32, read_write> = var
        %204:i32 = load %x_181
        %205:bool = lt %204, 60i
        if %205 [t: $B44, f: $B45] {  # if_9
          $B44: {  # true
            %206:ptr<function, i32, read_write> = access %data, 1i
            %207:i32 = load %206
            %x_196:i32 = let %207
            %209:f32 = convert %x_196
            %210:f32 = mul %209, 0.10000000149011611938f
            %211:f32 = add 0.5f, %210
            store %x_199, %211
            %212:f32 = load %x_199
            store %x_262_phi, %212
            exit_if  # if_9
          }
          $B45: {  # false
            %x_217:ptr<function, f32, read_write> = var
            %x_259:ptr<function, f32, read_write> = var
            %x_260_phi:ptr<function, f32, read_write> = var
            %216:i32 = load %x_181
            %217:bool = lt %216, 90i
            if %217 [t: $B46, f: $B47] {  # if_10
              $B46: {  # true
                %218:ptr<function, i32, read_write> = access %data, 2i
                %219:i32 = load %218
                %x_205:i32 = let %219
                %221:f32 = convert %x_205
                %222:f32 = mul %221, 0.10000000149011611938f
                %223:f32 = add 0.5f, %222
                store %x_208, %223
                %224:f32 = load %x_208
                store %x_261_phi, %224
                exit_if  # if_10
              }
              $B47: {  # false
                %225:i32 = load %x_181
                %226:bool = lt %225, 120i
                if %226 [t: $B48, f: $B49] {  # if_11
                  $B48: {  # true
                    %227:ptr<function, i32, read_write> = access %data, 3i
                    %228:i32 = load %227
                    %x_214:i32 = let %228
                    %230:f32 = convert %x_214
                    %231:f32 = mul %230, 0.10000000149011611938f
                    %232:f32 = add 0.5f, %231
                    store %x_217, %232
                    %233:f32 = load %x_217
                    store %x_260_phi, %233
                    exit_if  # if_11
                  }
                  $B49: {  # false
                    %x_230:ptr<function, f32, read_write> = var
                    %x_258:ptr<function, f32, read_write> = var
                    %x_259_phi:ptr<function, f32, read_write> = var
                    %237:i32 = load %x_181
                    %238:bool = lt %237, 150i
                    if %238 [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
                        %x_258_phi:ptr<function, f32, read_write> = var
                        %242:i32 = load %x_181
                        %243:bool = lt %242, 180i
                        if %243 [t: $B52, f: $B53] {  # if_13
                          $B52: {  # true
                            %244:ptr<function, i32, read_write> = access %data, 5i
                            %245:i32 = load %244
                            %x_227:i32 = let %245
                            %247:f32 = convert %x_227
                            %248:f32 = mul %247, 0.10000000149011611938f
                            %249:f32 = add 0.5f, %248
                            store %x_230, %249
                            %250:f32 = load %x_230
                            store %x_259_phi, %250
                            exit_if  # if_13
                          }
                          $B53: {  # false
                            %x_248:ptr<function, f32, read_write> = var
                            %x_256:ptr<function, f32, read_write> = var
                            %x_257_phi:ptr<function, f32, read_write> = var
                            %254:i32 = load %x_181
                            %255:bool = lt %254, 210i
                            if %255 [t: $B54, f: $B55] {  # if_14
                              $B54: {  # true
                                %256:ptr<function, i32, read_write> = access %data, 6i
                                %257:i32 = load %256
                                %x_236:i32 = let %257
                                %259:f32 = convert %x_236
                                %260:f32 = mul %259, 0.10000000149011611938f
                                %261:f32 = add 0.5f, %260
                                store %x_239, %261
                                %262:f32 = load %x_239
                                store %x_258_phi, %262
                                exit_if  # if_14
                              }
                              $B55: {  # false
                                %263:i32 = load %x_181
                                %264:bool = lt %263, 240i
                                if %264 [t: $B56, f: $B57] {  # if_15
                                  $B56: {  # true
                                    %265:ptr<function, i32, read_write> = access %data, 7i
                                    %266:i32 = load %265
                                    %x_245:i32 = let %266
                                    %268:f32 = convert %x_245
                                    %269:f32 = mul %268, 0.10000000149011611938f
                                    %270:f32 = add 0.5f, %269
                                    store %x_248, %270
                                    %271:f32 = load %x_248
                                    store %x_257_phi, %271
                                    exit_if  # if_15
                                  }
                                  $B57: {  # false
                                    %272:i32 = load %x_181
                                    %273:bool = lt %272, 270i
                                    if %273 [t: $B58, f: $B59] {  # if_16
                                      $B58: {  # true
                                        exit_if  # if_16
                                      }
                                      $B59: {  # false
                                        store %continue_execution, false
                                        exit_if  # if_16
                                      }
                                    }
                                    %274:ptr<function, i32, read_write> = access %data, 8i
                                    %275:i32 = load %274
                                    %x_253:i32 = let %275
                                    %277:f32 = convert %x_253
                                    %278:f32 = mul %277, 0.10000000149011611938f
                                    %279:f32 = add 0.5f, %278
                                    store %x_256, %279
                                    %280:f32 = load %x_256
                                    store %x_257_phi, %280
                                    exit_if  # if_15
                                  }
                                }
                                %281:f32 = load %x_257_phi
                                store %x_257, %281
                                %282:f32 = load %x_257
                                store %x_258_phi, %282
                                exit_if  # if_14
                              }
                            }
                            %283:f32 = load %x_258_phi
                            store %x_258, %283
                            %284:f32 = load %x_258
                            store %x_259_phi, %284
                            exit_if  # if_13
                          }
                        }
                        %285:f32 = load %x_259_phi
                        store %x_259, %285
                        exit_if  # if_12
                      }
                    }
                    %286:f32 = load %x_259
                    store %x_260_phi, %286
                    exit_if  # if_11
                  }
                }
                %287:f32 = load %x_260_phi
                store %x_260, %287
                %288:f32 = load %x_260
                store %x_261_phi, %288
                exit_if  # if_10
              }
            }
            %289:f32 = load %x_261_phi
            store %x_261, %289
            %290:f32 = load %x_261
            store %x_262_phi, %290
            exit_if  # if_9
          }
        }
        %291:f32 = load %x_262_phi
        store %x_262, %291
        %292:f32 = load %x_262
        store %x_263_phi, %292
        exit_if  # if_8
      }
    }
    %293:f32 = load %x_263_phi
    %x_263:f32 = let %293
    %295:vec4<f32> = construct %x_263, %x_263, %x_263, 1.0f
    store %x_GLF_color, %295
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
  $B60: {
    store %gl_FragCoord, %gl_FragCoord_param
    %298:void = call %main_1
    %299:vec4<f32> = load %x_GLF_color
    %300:main_out = construct %299
    %301:bool = load %continue_execution
    %302:bool = eq %301, false
    if %302 [t: $B61] {  # if_17
      $B61: {  # true
        terminate_invocation
      }
    }
    ret %300
  }
}
%tint_f32_to_i32 = func(%value:f32):i32 {
  $B62: {
    %304:i32 = convert %value
    %305:bool = gte %value, -2147483648.0f
    %306:i32 = select -2147483648i, %304, %305
    %307:bool = lte %value, 2147483520.0f
    %308:i32 = select 2147483647i, %306, %307
    ret %308
  }
}

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