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_102:ptr<function, i32, read_write> = var
    %x_111:ptr<function, i32, read_write> = var
    %x_189:ptr<function, f32, read_write> = var
    %x_261:ptr<function, f32, read_write> = var
    %x_262: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_99:ptr<function, i32, read_write> = var
        %x_97:ptr<function, i32, read_write> = var
        %x_95:ptr<function, i32, read_write> = var
        %x_93:ptr<function, i32, read_write> = var
        %x_91:ptr<function, i32, read_write> = var
        %x_89:ptr<function, i32, read_write> = var
        %x_87:ptr<function, i32, read_write> = var
        %x_85:ptr<function, i32, read_write> = var
        %x_83:ptr<function, i32, read_write> = var
        %x_81:ptr<function, i32, read_write> = var
        %x_64:ptr<function, i32, read_write> = var
        %29:i32 = load %x_63
        %30:i32 = add %29, 1i
        store %x_64, %30
        %31:i32 = load %x_63
        switch %31 [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
            %32:i32 = load %x_63
            %33:ptr<function, i32, read_write> = access %data, %32
            store %33, -5i
            %34:i32 = load %x_63
            %35:i32 = add %34, 1i
            store %x_99, %35
            %36:i32 = load %x_99
            store %x_64, %36
            exit_switch  # switch_1
          }
          $B6: {  # case
            %37:i32 = load %x_63
            %38:ptr<function, i32, read_write> = access %data, %37
            store %38, -4i
            %39:i32 = load %x_63
            %40:i32 = add %39, 1i
            store %x_97, %40
            %41:i32 = load %x_97
            store %x_64, %41
            exit_switch  # switch_1
          }
          $B7: {  # case
            %42:i32 = load %x_63
            %43:ptr<function, i32, read_write> = access %data, %42
            store %43, -3i
            %44:i32 = load %x_63
            %45:i32 = add %44, 1i
            store %x_95, %45
            %46:i32 = load %x_95
            store %x_64, %46
            exit_switch  # switch_1
          }
          $B8: {  # case
            %47:i32 = load %x_63
            %48:ptr<function, i32, read_write> = access %data, %47
            store %48, -2i
            %49:i32 = load %x_63
            %50:i32 = add %49, 1i
            store %x_93, %50
            %51:i32 = load %x_93
            store %x_64, %51
            exit_switch  # switch_1
          }
          $B9: {  # case
            %52:i32 = load %x_63
            %53:ptr<function, i32, read_write> = access %data, %52
            store %53, -1i
            %54:i32 = load %x_63
            %55:i32 = add %54, 1i
            store %x_91, %55
            %56:i32 = load %x_91
            store %x_64, %56
            exit_switch  # switch_1
          }
          $B10: {  # case
            %57:i32 = load %x_63
            %58:ptr<function, i32, read_write> = access %data, %57
            store %58, 0i
            %59:i32 = load %x_63
            %60:i32 = add %59, 1i
            store %x_89, %60
            %61:i32 = load %x_89
            store %x_64, %61
            exit_switch  # switch_1
          }
          $B11: {  # case
            %62:i32 = load %x_63
            %63:ptr<function, i32, read_write> = access %data, %62
            store %63, 1i
            %64:i32 = load %x_63
            %65:i32 = add %64, 1i
            store %x_87, %65
            %66:i32 = load %x_87
            store %x_64, %66
            exit_switch  # switch_1
          }
          $B12: {  # case
            %67:i32 = load %x_63
            %68:ptr<function, i32, read_write> = access %data, %67
            store %68, 2i
            %69:i32 = load %x_63
            %70:i32 = add %69, 1i
            store %x_85, %70
            %71:i32 = load %x_85
            store %x_64, %71
            exit_switch  # switch_1
          }
          $B13: {  # case
            %72:i32 = load %x_63
            %73:ptr<function, i32, read_write> = access %data, %72
            store %73, 3i
            %74:i32 = load %x_63
            %75:i32 = add %74, 1i
            store %x_83, %75
            %76:i32 = load %x_83
            store %x_64, %76
            exit_switch  # switch_1
          }
          $B14: {  # case
            %77:i32 = load %x_63
            %78:ptr<function, i32, read_write> = access %data, %77
            store %78, 4i
            %79:i32 = load %x_63
            %80:i32 = add %79, 1i
            store %x_81, %80
            %81:i32 = load %x_81
            store %x_64, %81
            exit_switch  # switch_1
          }
          $B15: {  # case
            exit_switch  # switch_1
          }
        }
        continue  # -> $B4
      }
      $B4: {  # continuing
        %82:i32 = load %x_64
        store %x_63, %82
        %83:i32 = load %x_64
        %84:bool = lt %83, 10i
        %85:bool = eq %84, false
        break_if %85  # -> [t: exit_loop loop_1, f: $B3]
      }
    }
    store %x_102, 0i
    loop [b: $B16, c: $B17] {  # loop_2
      $B16: {  # body
        %x_103:ptr<function, i32, read_write> = var
        %87:i32 = load %x_102
        %88:bool = lt %87, 10i
        if %88 [t: $B18, f: $B19] {  # if_1
          $B18: {  # true
            exit_if  # if_1
          }
          $B19: {  # false
            exit_loop  # loop_2
          }
        }
        continue  # -> $B17
      }
      $B17: {  # continuing
        %89:i32 = load %x_102
        %90:ptr<function, i32, read_write> = access %temp, %89
        %91:i32 = load %x_102
        %92:ptr<function, i32, read_write> = access %data, %91
        %93:i32 = load %92
        store %90, %93
        %94:i32 = load %x_102
        %95:i32 = add %94, 1i
        store %x_103, %95
        %96:i32 = load %x_103
        store %x_102, %96
        next_iteration  # -> $B16
      }
    }
    store %x_111, 1i
    loop [b: $B20, c: $B21] {  # loop_3
      $B20: {  # body
        %x_118:ptr<function, i32, read_write> = var
        %x_112:ptr<function, i32, read_write> = var
        %99:i32 = load %x_111
        %100:bool = lte %99, 9i
        if %100 [t: $B22, f: $B23] {  # if_2
          $B22: {  # true
            exit_if  # if_2
          }
          $B23: {  # false
            exit_loop  # loop_3
          }
        }
        store %x_118, 0i
        loop [b: $B24, c: $B25] {  # loop_4
          $B24: {  # body
            %x_130:ptr<function, i32, read_write> = var
            %x_133:ptr<function, i32, read_write> = var
            %x_135:ptr<function, i32, read_write> = var
            %x_157:ptr<function, i32, read_write> = var
            %x_160:ptr<function, i32, read_write> = var
            %x_170:ptr<function, i32, read_write> = var
            %107:i32 = load %x_118
            %108:bool = lt %107, 9i
            if %108 [t: $B26, f: $B27] {  # if_3
              $B26: {  # true
                exit_if  # if_3
              }
              $B27: {  # false
                exit_loop  # loop_4
              }
            }
            %109:i32 = load %x_118
            %110:i32 = load %x_111
            %111:i32 = add %109, %110
            %x_124:i32 = let %111
            %113:i32 = sub %x_124, 1i
            %x_125:i32 = let %113
            %115:i32 = load %x_118
            %116:i32 = load %x_111
            %117:i32 = mul 2i, %116
            %118:i32 = add %115, %117
            %x_119:i32 = let %118
            %120:i32 = sub %x_119, 1i
            %121:i32 = min %120, 9i
            %x_128:i32 = let %121
            %123:i32 = load %x_118
            store %x_130, %123
            store %x_133, %x_124
            %124:i32 = load %x_118
            store %x_135, %124
            loop [b: $B28, c: $B29] {  # loop_5
              $B28: {  # body
                %x_150:ptr<function, i32, read_write> = var
                %x_153:ptr<function, i32, read_write> = var
                %x_134:ptr<function, i32, read_write> = var
                %x_136:ptr<function, i32, read_write> = var
                %129:i32 = load %x_135
                %130:bool = lte %129, %x_125
                %131:i32 = load %x_133
                %132:bool = lte %131, %x_128
                %133:bool = and %130, %132
                if %133 [t: $B30, f: $B31] {  # if_4
                  $B30: {  # true
                    exit_if  # if_4
                  }
                  $B31: {  # false
                    exit_loop  # loop_5
                  }
                }
                %134:i32 = load %x_135
                %x_142_save:i32 = let %134
                %136:i32 = load %x_133
                %x_144_save:i32 = let %136
                %138:i32 = load %x_130
                %139:i32 = add %138, 1i
                %x_131:i32 = let %139
                %141:i32 = load %x_135
                %142:ptr<function, i32, read_write> = access %data, %141
                %143:i32 = load %142
                %144:i32 = load %x_133
                %145:ptr<function, i32, read_write> = access %data, %144
                %146:i32 = load %145
                %147:bool = lt %143, %146
                if %147 [t: $B32, f: $B33] {  # if_5
                  $B32: {  # true
                    %148:i32 = load %x_135
                    %149:i32 = add %148, 1i
                    store %x_150, %149
                    %150:i32 = load %x_130
                    %151:ptr<function, i32, read_write> = access %temp, %150
                    %152:ptr<function, i32, read_write> = access %data, %x_142_save
                    %153:i32 = load %152
                    store %151, %153
                    %154:i32 = load %x_133
                    store %x_134, %154
                    %155:i32 = load %x_150
                    store %x_136, %155
                    exit_if  # if_5
                  }
                  $B33: {  # false
                    %156:i32 = load %x_133
                    %157:i32 = add %156, 1i
                    store %x_153, %157
                    %158:i32 = load %x_130
                    %159:ptr<function, i32, read_write> = access %temp, %158
                    %160:ptr<function, i32, read_write> = access %data, %x_144_save
                    %161:i32 = load %160
                    store %159, %161
                    %162:i32 = load %x_153
                    store %x_134, %162
                    %163:i32 = load %x_135
                    store %x_136, %163
                    exit_if  # if_5
                  }
                }
                continue  # -> $B29
              }
              $B29: {  # continuing
                store %x_130, %x_131
                %164:i32 = load %x_134
                store %x_133, %164
                %165:i32 = load %x_136
                store %x_135, %165
                next_iteration  # -> $B28
              }
            }
            %166:i32 = load %x_130
            store %x_157, %166
            %167:i32 = load %x_135
            store %x_160, %167
            loop [b: $B34, c: $B35] {  # loop_6
              $B34: {  # body
                %x_158:ptr<function, i32, read_write> = var
                %x_161:ptr<function, i32, read_write> = var
                %170:i32 = load %x_160
                %171:bool = lt %170, 10i
                %172:i32 = load %x_160
                %173:bool = lte %172, %x_125
                %174:bool = and %171, %173
                if %174 [t: $B36, f: $B37] {  # if_6
                  $B36: {  # true
                    exit_if  # if_6
                  }
                  $B37: {  # false
                    exit_loop  # loop_6
                  }
                }
                continue  # -> $B35
              }
              $B35: {  # continuing
                %175:i32 = load %x_157
                %176:i32 = add %175, 1i
                store %x_158, %176
                %177:i32 = load %x_160
                %178:i32 = add %177, 1i
                store %x_161, %178
                %179:i32 = load %x_157
                %180:ptr<function, i32, read_write> = access %temp, %179
                %181:i32 = load %x_160
                %182:ptr<function, i32, read_write> = access %data, %181
                %183:i32 = load %182
                store %180, %183
                %184:i32 = load %x_158
                store %x_157, %184
                %185:i32 = load %x_161
                store %x_160, %185
                next_iteration  # -> $B34
              }
            }
            %186:i32 = load %x_118
            store %x_170, %186
            loop [b: $B38, c: $B39] {  # loop_7
              $B38: {  # body
                %x_171:ptr<function, i32, read_write> = var
                %188:i32 = load %x_170
                %189:bool = lte %188, %x_128
                if %189 [t: $B40, f: $B41] {  # if_7
                  $B40: {  # true
                    exit_if  # if_7
                  }
                  $B41: {  # false
                    exit_loop  # loop_7
                  }
                }
                continue  # -> $B39
              }
              $B39: {  # continuing
                %190:i32 = load %x_170
                %191:ptr<function, i32, read_write> = access %data, %190
                %192:i32 = load %x_170
                %193:ptr<function, i32, read_write> = access %temp, %192
                %194:i32 = load %193
                store %191, %194
                %195:i32 = load %x_170
                %196:i32 = add %195, 1i
                store %x_171, %196
                %197:i32 = load %x_171
                store %x_170, %197
                next_iteration  # -> $B38
              }
            }
            continue  # -> $B25
          }
          $B25: {  # continuing
            store %x_118, %x_119
            next_iteration  # -> $B24
          }
        }
        continue  # -> $B21
      }
      $B21: {  # continuing
        %198:i32 = load %x_111
        %199:i32 = mul 2i, %198
        store %x_112, %199
        %200:i32 = load %x_112
        store %x_111, %200
        next_iteration  # -> $B20
      }
    }
    %x_180:ptr<function, i32, read_write> = var
    %x_198:ptr<function, f32, read_write> = var
    %x_260:ptr<function, f32, read_write> = var
    %204:f32 = load_vector_element %gl_FragCoord, 1u
    %205:i32 = call %tint_f32_to_i32, %204
    store %x_180, %205
    %206:i32 = load %x_180
    %207:bool = lt %206, 30i
    if %207 [t: $B42, f: $B43] {  # if_8
      $B42: {  # true
        %208:ptr<function, i32, read_write> = access %data, 0i
        %209:i32 = load %208
        %210:f32 = convert %209
        %211:f32 = mul %210, 0.10000000149011611938f
        %212:f32 = add 0.5f, %211
        store %x_189, %212
        %213:f32 = load %x_189
        store %x_262, %213
        exit_if  # if_8
      }
      $B43: {  # false
        %x_207:ptr<function, f32, read_write> = var
        %x_259:ptr<function, f32, read_write> = var
        %216:i32 = load %x_180
        %217:bool = lt %216, 60i
        if %217 [t: $B44, f: $B45] {  # if_9
          $B44: {  # true
            %218:ptr<function, i32, read_write> = access %data, 1i
            %219:i32 = load %218
            %220:f32 = convert %219
            %221:f32 = mul %220, 0.10000000149011611938f
            %222:f32 = add 0.5f, %221
            store %x_198, %222
            %223:f32 = load %x_198
            store %x_261, %223
            exit_if  # if_9
          }
          $B45: {  # false
            %x_216:ptr<function, f32, read_write> = var
            %x_258:ptr<function, f32, read_write> = var
            %226:i32 = load %x_180
            %227:bool = lt %226, 90i
            if %227 [t: $B46, f: $B47] {  # if_10
              $B46: {  # true
                %228:ptr<function, i32, read_write> = access %data, 2i
                %229:i32 = load %228
                %230:f32 = convert %229
                %231:f32 = mul %230, 0.10000000149011611938f
                %232:f32 = add 0.5f, %231
                store %x_207, %232
                %233:f32 = load %x_207
                store %x_260, %233
                exit_if  # if_10
              }
              $B47: {  # false
                %234:i32 = load %x_180
                %235:bool = lt %234, 120i
                if %235 [t: $B48, f: $B49] {  # if_11
                  $B48: {  # true
                    %236:ptr<function, i32, read_write> = access %data, 3i
                    %237:i32 = load %236
                    %238:f32 = convert %237
                    %239:f32 = mul %238, 0.10000000149011611938f
                    %240:f32 = add 0.5f, %239
                    store %x_216, %240
                    %241:f32 = load %x_216
                    store %x_259, %241
                    exit_if  # if_11
                  }
                  $B49: {  # false
                    %x_229:ptr<function, f32, read_write> = var
                    %x_257:ptr<function, f32, read_write> = var
                    %244:i32 = load %x_180
                    %245:bool = lt %244, 150i
                    if %245 [t: $B50, f: $B51] {  # if_12
                      $B50: {  # true
                        store %continue_execution, false
                        exit_if  # if_12
                      }
                      $B51: {  # false
                        %x_238:ptr<function, f32, read_write> = var
                        %x_256:ptr<function, f32, read_write> = var
                        %248:i32 = load %x_180
                        %249:bool = lt %248, 180i
                        if %249 [t: $B52, f: $B53] {  # if_13
                          $B52: {  # true
                            %250:ptr<function, i32, read_write> = access %data, 5i
                            %251:i32 = load %250
                            %252:f32 = convert %251
                            %253:f32 = mul %252, 0.10000000149011611938f
                            %254:f32 = add 0.5f, %253
                            store %x_229, %254
                            %255:f32 = load %x_229
                            store %x_258, %255
                            exit_if  # if_13
                          }
                          $B53: {  # false
                            %x_247:ptr<function, f32, read_write> = var
                            %x_255:ptr<function, f32, read_write> = var
                            %258:i32 = load %x_180
                            %259:bool = lt %258, 210i
                            if %259 [t: $B54, f: $B55] {  # if_14
                              $B54: {  # true
                                %260:ptr<function, i32, read_write> = access %data, 6i
                                %261:i32 = load %260
                                %262:f32 = convert %261
                                %263:f32 = mul %262, 0.10000000149011611938f
                                %264:f32 = add 0.5f, %263
                                store %x_238, %264
                                %265:f32 = load %x_238
                                store %x_257, %265
                                exit_if  # if_14
                              }
                              $B55: {  # false
                                %266:i32 = load %x_180
                                %267:bool = lt %266, 240i
                                if %267 [t: $B56, f: $B57] {  # if_15
                                  $B56: {  # true
                                    %268:ptr<function, i32, read_write> = access %data, 7i
                                    %269:i32 = load %268
                                    %270:f32 = convert %269
                                    %271:f32 = mul %270, 0.10000000149011611938f
                                    %272:f32 = add 0.5f, %271
                                    store %x_247, %272
                                    %273:f32 = load %x_247
                                    store %x_256, %273
                                    exit_if  # if_15
                                  }
                                  $B57: {  # false
                                    %274:i32 = load %x_180
                                    %275:bool = lt %274, 270i
                                    if %275 [t: $B58, f: $B59] {  # if_16
                                      $B58: {  # true
                                        exit_if  # if_16
                                      }
                                      $B59: {  # false
                                        store %continue_execution, false
                                        exit_if  # if_16
                                      }
                                    }
                                    %276:ptr<function, i32, read_write> = access %data, 8i
                                    %277:i32 = load %276
                                    %278:f32 = convert %277
                                    %279:f32 = mul %278, 0.10000000149011611938f
                                    %280:f32 = add 0.5f, %279
                                    store %x_255, %280
                                    %281:f32 = load %x_255
                                    store %x_256, %281
                                    exit_if  # if_15
                                  }
                                }
                                %282:f32 = load %x_256
                                store %x_257, %282
                                exit_if  # if_14
                              }
                            }
                            %283:f32 = load %x_257
                            store %x_258, %283
                            exit_if  # if_13
                          }
                        }
                        exit_if  # if_12
                      }
                    }
                    %284:f32 = load %x_258
                    store %x_259, %284
                    exit_if  # if_11
                  }
                }
                %285:f32 = load %x_259
                store %x_260, %285
                exit_if  # if_10
              }
            }
            %286:f32 = load %x_260
            store %x_261, %286
            exit_if  # if_9
          }
        }
        %287:f32 = load %x_261
        store %x_262, %287
        exit_if  # if_8
      }
    }
    %288:f32 = load %x_262
    %289:f32 = load %x_262
    %290:f32 = load %x_262
    %291:vec4<f32> = construct %288, %289, %290, 1.0f
    store %x_GLF_color, %291
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
  $B60: {
    store %gl_FragCoord, %gl_FragCoord_param
    %294:void = call %main_1
    %295:vec4<f32> = load %x_GLF_color
    %296:main_out = construct %295
    %297:bool = load %continue_execution
    %298:bool = eq %297, false
    if %298 [t: $B61] {  # if_17
      $B61: {  # true
        terminate_invocation
      }
    }
    ret %296
  }
}
%tint_f32_to_i32 = func(%value:f32):i32 {
  $B62: {
    %300:i32 = convert %value
    %301:bool = gte %value, -2147483648.0f
    %302:i32 = select -2147483648i, %300, %301
    %303:bool = lte %value, 2147483520.0f
    %304:i32 = select 2147483647i, %302, %303
    ret %304
  }
}

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