SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = 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
  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %map:ptr<private, array<i32, 256>, read_write> = var
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void -> %b2 {
  %b2 = block {
    %pos:ptr<function, vec2<f32>, read_write> = var
    %ipos:ptr<function, vec2<i32>, read_write> = var
    %i:ptr<function, i32, read_write> = var
    %p:ptr<function, vec2<i32>, read_write> = var
    %canwalk:ptr<function, bool, read_write> = var
    %v:ptr<function, i32, read_write> = var
    %directions:ptr<function, i32, read_write> = var
    %j:ptr<function, i32, read_write> = var
    %d:ptr<function, i32, read_write> = var
    %15:vec4<f32> = load %gl_FragCoord
    %16:vec2<f32> = swizzle %15, xy
    %17:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
    %18:vec2<f32> = load %17
    %19:vec2<f32> = div %16, %18
    store %pos, %19
    %20:f32 = load_vector_element %pos, 0u
    %21:f32 = mul %20, 16.0f
    %22:i32 = convert %21
    %23:f32 = load_vector_element %pos, 1u
    %24:f32 = mul %23, 16.0f
    %25:i32 = convert %24
    %26:vec2<i32> = construct %22, %25
    store %ipos, %26
    store %i, 0i
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %27:i32 = load %i
        %28:bool = lt %27, 256i
        if %28 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        %x_80:i32 = load %i
        %30:ptr<private, i32, read_write> = access %map, %x_80
        store %30, 0i
        continue %b4
      }
      %b4 = block {  # continuing
        %31:i32 = load %i
        %32:i32 = add %31, 1i
        store %i, %32
        next_iteration %b3
      }
    }
    store %p, vec2<i32>(0i)
    store %canwalk, true
    store %v, 0i
    loop [b: %b7, c: %b8] {  # loop_2
      %b7 = block {  # body
        %x_104:ptr<function, bool, read_write> = var
        %x_105:ptr<function, bool, read_write> = var
        %x_124:ptr<function, bool, read_write> = var
        %x_125:ptr<function, bool, read_write> = var
        %x_144:ptr<function, bool, read_write> = var
        %x_145:ptr<function, bool, read_write> = var
        %x_164:ptr<function, bool, read_write> = var
        %x_165:ptr<function, bool, read_write> = var
        %41:i32 = load %v
        %42:i32 = add %41, 1i
        store %v, %42
        store %directions, 0i
        %43:i32 = load_vector_element %p, 0u
        %x_92:bool = gt %43, 0i
        store %x_105, %x_92
        if %x_92 [t: %b9] {  # if_2
          %b9 = block {  # true
            %45:i32 = load_vector_element %p, 0u
            %46:i32 = sub %45, 2i
            %47:i32 = load_vector_element %p, 1u
            %48:i32 = mul %47, 16i
            %49:i32 = add %46, %48
            %50:ptr<private, i32, read_write> = access %map, %49
            %51:i32 = load %50
            %52:bool = eq %51, 0i
            store %x_104, %52
            %53:bool = load %x_104
            store %x_105, %53
            exit_if  # if_2
          }
        }
        %54:bool = load %x_105
        if %54 [t: %b10] {  # if_3
          %b10 = block {  # true
            %55:i32 = load %directions
            %56:i32 = add %55, 1i
            store %directions, %56
            exit_if  # if_3
          }
        }
        %57:i32 = load_vector_element %p, 1u
        %x_112:bool = gt %57, 0i
        store %x_125, %x_112
        if %x_112 [t: %b11] {  # if_4
          %b11 = block {  # true
            %59:i32 = load_vector_element %p, 0u
            %60:i32 = load_vector_element %p, 1u
            %61:i32 = sub %60, 2i
            %62:i32 = mul %61, 16i
            %63:i32 = add %59, %62
            %64:ptr<private, i32, read_write> = access %map, %63
            %65:i32 = load %64
            %66:bool = eq %65, 0i
            store %x_124, %66
            %67:bool = load %x_124
            store %x_125, %67
            exit_if  # if_4
          }
        }
        %68:bool = load %x_125
        if %68 [t: %b12] {  # if_5
          %b12 = block {  # true
            %69:i32 = load %directions
            %70:i32 = add %69, 1i
            store %directions, %70
            exit_if  # if_5
          }
        }
        %71:i32 = load_vector_element %p, 0u
        %x_132:bool = lt %71, 14i
        store %x_145, %x_132
        if %x_132 [t: %b13] {  # if_6
          %b13 = block {  # true
            %73:i32 = load_vector_element %p, 0u
            %74:i32 = add %73, 2i
            %75:i32 = load_vector_element %p, 1u
            %76:i32 = mul %75, 16i
            %77:i32 = add %74, %76
            %78:ptr<private, i32, read_write> = access %map, %77
            %79:i32 = load %78
            %80:bool = eq %79, 0i
            store %x_144, %80
            %81:bool = load %x_144
            store %x_145, %81
            exit_if  # if_6
          }
        }
        %82:bool = load %x_145
        if %82 [t: %b14] {  # if_7
          %b14 = block {  # true
            %83:i32 = load %directions
            %84:i32 = add %83, 1i
            store %directions, %84
            exit_if  # if_7
          }
        }
        %85:i32 = load_vector_element %p, 1u
        %x_152:bool = lt %85, 14i
        store %x_165, %x_152
        if %x_152 [t: %b15] {  # if_8
          %b15 = block {  # true
            %87:i32 = load_vector_element %p, 0u
            %88:i32 = load_vector_element %p, 1u
            %89:i32 = add %88, 2i
            %90:i32 = mul %89, 16i
            %91:i32 = add %87, %90
            %92:ptr<private, i32, read_write> = access %map, %91
            %93:i32 = load %92
            %94:bool = eq %93, 0i
            store %x_164, %94
            %95:bool = load %x_164
            store %x_165, %95
            exit_if  # if_8
          }
        }
        %96:bool = load %x_165
        if %96 [t: %b16] {  # if_9
          %b16 = block {  # true
            %97:i32 = load %directions
            %98:i32 = add %97, 1i
            store %directions, %98
            exit_if  # if_9
          }
        }
        %x_229:ptr<function, bool, read_write> = var
        %x_230:ptr<function, bool, read_write> = var
        %x_242:ptr<function, bool, read_write> = var
        %x_243:ptr<function, bool, read_write> = var
        %x_281:ptr<function, bool, read_write> = var
        %x_282:ptr<function, bool, read_write> = var
        %x_295:ptr<function, bool, read_write> = var
        %x_296:ptr<function, bool, read_write> = var
        %x_335:ptr<function, bool, read_write> = var
        %x_336:ptr<function, bool, read_write> = var
        %x_348:ptr<function, bool, read_write> = var
        %x_349:ptr<function, bool, read_write> = var
        %x_387:ptr<function, bool, read_write> = var
        %x_388:ptr<function, bool, read_write> = var
        %x_400:ptr<function, bool, read_write> = var
        %x_401:ptr<function, bool, read_write> = var
        %115:i32 = load %directions
        %116:bool = eq %115, 0i
        if %116 [t: %b17, f: %b18] {  # if_10
          %b17 = block {  # true
            store %canwalk, false
            store %i, 0i
            loop [b: %b19, c: %b20] {  # loop_3
              %b19 = block {  # body
                %117:i32 = load %i
                %118:bool = lt %117, 8i
                if %118 [t: %b21, f: %b22] {  # if_11
                  %b21 = block {  # true
                    exit_if  # if_11
                  }
                  %b22 = block {  # false
                    exit_loop  # loop_3
                  }
                }
                store %j, 0i
                loop [b: %b23, c: %b24] {  # loop_4
                  %b23 = block {  # body
                    %119:i32 = load %j
                    %120:bool = lt %119, 8i
                    if %120 [t: %b25, f: %b26] {  # if_12
                      %b25 = block {  # true
                        exit_if  # if_12
                      }
                      %b26 = block {  # false
                        exit_loop  # loop_4
                      }
                    }
                    %121:i32 = load %j
                    %122:i32 = mul %121, 2i
                    %123:i32 = load %i
                    %124:i32 = mul %123, 2i
                    %125:i32 = mul %124, 16i
                    %126:i32 = add %122, %125
                    %127:ptr<private, i32, read_write> = access %map, %126
                    %128:i32 = load %127
                    %129:bool = eq %128, 0i
                    if %129 [t: %b27] {  # if_13
                      %b27 = block {  # true
                        %130:i32 = load %j
                        %131:i32 = mul %130, 2i
                        store_vector_element %p, 0u, %131
                        %132:i32 = load %i
                        %133:i32 = mul %132, 2i
                        store_vector_element %p, 1u, %133
                        store %canwalk, true
                        exit_if  # if_13
                      }
                    }
                    continue %b24
                  }
                  %b24 = block {  # continuing
                    %134:i32 = load %j
                    %135:i32 = add %134, 1i
                    store %j, %135
                    next_iteration %b23
                  }
                }
                continue %b20
              }
              %b20 = block {  # continuing
                %136:i32 = load %i
                %137:i32 = add %136, 1i
                store %i, %137
                next_iteration %b19
              }
            }
            %x_211:i32 = load_vector_element %p, 0u
            %x_213:i32 = load_vector_element %p, 1u
            %140:i32 = mul %x_213, 16i
            %141:i32 = add %x_211, %140
            %142:ptr<private, i32, read_write> = access %map, %141
            store %142, 1i
            exit_if  # if_10
          }
          %b18 = block {  # false
            %143:i32 = load %v
            %144:i32 = load %directions
            %145:i32 = mod %143, %144
            store %d, %145
            %146:i32 = load %v
            %147:i32 = load %directions
            %148:i32 = add %146, %147
            store %v, %148
            %149:i32 = load %d
            %x_224:bool = gte %149, 0i
            store %x_230, %x_224
            if %x_224 [t: %b28] {  # if_14
              %b28 = block {  # true
                %151:i32 = load_vector_element %p, 0u
                %152:bool = gt %151, 0i
                store %x_229, %152
                %153:bool = load %x_229
                store %x_230, %153
                exit_if  # if_14
              }
            }
            %154:bool = load %x_230
            store %x_243, %154
            %155:bool = load %x_230
            if %155 [t: %b29] {  # if_15
              %b29 = block {  # true
                %156:i32 = load_vector_element %p, 0u
                %157:i32 = sub %156, 2i
                %158:i32 = load_vector_element %p, 1u
                %159:i32 = mul %158, 16i
                %160:i32 = add %157, %159
                %161:ptr<private, i32, read_write> = access %map, %160
                %162:i32 = load %161
                %163:bool = eq %162, 0i
                store %x_242, %163
                %164:bool = load %x_242
                store %x_243, %164
                exit_if  # if_15
              }
            }
            %165:bool = load %x_243
            if %165 [t: %b30] {  # if_16
              %b30 = block {  # true
                %166:i32 = load %d
                %167:i32 = sub %166, 1i
                store %d, %167
                %x_249:i32 = load_vector_element %p, 0u
                %x_251:i32 = load_vector_element %p, 1u
                %170:i32 = mul %x_251, 16i
                %171:i32 = add %x_249, %170
                %172:ptr<private, i32, read_write> = access %map, %171
                store %172, 1i
                %x_256:i32 = load_vector_element %p, 0u
                %x_259:i32 = load_vector_element %p, 1u
                %175:i32 = sub %x_256, 1i
                %176:i32 = mul %x_259, 16i
                %177:i32 = add %175, %176
                %178:ptr<private, i32, read_write> = access %map, %177
                store %178, 1i
                %x_264:i32 = load_vector_element %p, 0u
                %x_267:i32 = load_vector_element %p, 1u
                %181:i32 = sub %x_264, 2i
                %182:i32 = mul %x_267, 16i
                %183:i32 = add %181, %182
                %184:ptr<private, i32, read_write> = access %map, %183
                store %184, 1i
                %185:i32 = load_vector_element %p, 0u
                %186:i32 = sub %185, 2i
                store_vector_element %p, 0u, %186
                exit_if  # if_16
              }
            }
            %187:i32 = load %d
            %x_276:bool = gte %187, 0i
            store %x_282, %x_276
            if %x_276 [t: %b31] {  # if_17
              %b31 = block {  # true
                %189:i32 = load_vector_element %p, 1u
                %190:bool = gt %189, 0i
                store %x_281, %190
                %191:bool = load %x_281
                store %x_282, %191
                exit_if  # if_17
              }
            }
            %192:bool = load %x_282
            store %x_296, %192
            %193:bool = load %x_282
            if %193 [t: %b32] {  # if_18
              %b32 = block {  # true
                %x_286:i32 = load_vector_element %p, 0u
                %x_288:i32 = load_vector_element %p, 1u
                %x_291:array<i32, 256> = load %map
                store %map, array<i32, 256>(0i)
                store %map, %x_291
                %197:i32 = sub %x_288, 2i
                %198:i32 = mul %197, 16i
                %199:i32 = add %x_286, %198
                %200:ptr<private, i32, read_write> = access %map, %199
                %201:i32 = load %200
                %202:bool = eq %201, 0i
                store %x_295, %202
                %203:bool = load %x_295
                store %x_296, %203
                exit_if  # if_18
              }
            }
            %204:bool = load %x_296
            if %204 [t: %b33] {  # if_19
              %b33 = block {  # true
                %205:i32 = load %d
                %206:i32 = sub %205, 1i
                store %d, %206
                %x_302:i32 = load_vector_element %p, 0u
                %x_304:i32 = load_vector_element %p, 1u
                %209:i32 = mul %x_304, 16i
                %210:i32 = add %x_302, %209
                %211:ptr<private, i32, read_write> = access %map, %210
                store %211, 1i
                %x_309:i32 = load_vector_element %p, 0u
                %x_311:i32 = load_vector_element %p, 1u
                %214:i32 = sub %x_311, 1i
                %215:i32 = mul %214, 16i
                %216:i32 = add %x_309, %215
                %217:ptr<private, i32, read_write> = access %map, %216
                store %217, 1i
                %x_317:i32 = load_vector_element %p, 0u
                %x_319:i32 = load_vector_element %p, 1u
                %x_321:array<i32, 256> = load %map
                store %map, array<i32, 256>(0i)
                store %map, %x_321
                %221:i32 = sub %x_319, 2i
                %222:i32 = mul %221, 16i
                %223:i32 = add %x_317, %222
                %224:ptr<private, i32, read_write> = access %map, %223
                store %224, 1i
                %225:i32 = load_vector_element %p, 1u
                %226:i32 = sub %225, 2i
                store_vector_element %p, 1u, %226
                exit_if  # if_19
              }
            }
            %227:i32 = load %d
            %x_330:bool = gte %227, 0i
            store %x_336, %x_330
            if %x_330 [t: %b34] {  # if_20
              %b34 = block {  # true
                %229:i32 = load_vector_element %p, 0u
                %230:bool = lt %229, 14i
                store %x_335, %230
                %231:bool = load %x_335
                store %x_336, %231
                exit_if  # if_20
              }
            }
            %232:bool = load %x_336
            store %x_349, %232
            %233:bool = load %x_336
            if %233 [t: %b35] {  # if_21
              %b35 = block {  # true
                %234:i32 = load_vector_element %p, 0u
                %235:i32 = add %234, 2i
                %236:i32 = load_vector_element %p, 1u
                %237:i32 = mul %236, 16i
                %238:i32 = add %235, %237
                %239:ptr<private, i32, read_write> = access %map, %238
                %240:i32 = load %239
                %241:bool = eq %240, 0i
                store %x_348, %241
                %242:bool = load %x_348
                store %x_349, %242
                exit_if  # if_21
              }
            }
            %243:bool = load %x_349
            if %243 [t: %b36] {  # if_22
              %b36 = block {  # true
                %244:i32 = load %d
                %245:i32 = sub %244, 1i
                store %d, %245
                %x_355:i32 = load_vector_element %p, 0u
                %x_357:i32 = load_vector_element %p, 1u
                %248:i32 = mul %x_357, 16i
                %249:i32 = add %x_355, %248
                %250:ptr<private, i32, read_write> = access %map, %249
                store %250, 1i
                %x_362:i32 = load_vector_element %p, 0u
                %x_365:i32 = load_vector_element %p, 1u
                %253:i32 = add %x_362, 1i
                %254:i32 = mul %x_365, 16i
                %255:i32 = add %253, %254
                %256:ptr<private, i32, read_write> = access %map, %255
                store %256, 1i
                %x_370:i32 = load_vector_element %p, 0u
                %x_373:i32 = load_vector_element %p, 1u
                %259:i32 = add %x_370, 2i
                %260:i32 = mul %x_373, 16i
                %261:i32 = add %259, %260
                %262:ptr<private, i32, read_write> = access %map, %261
                store %262, 1i
                %263:i32 = load_vector_element %p, 0u
                %264:i32 = add %263, 2i
                store_vector_element %p, 0u, %264
                exit_if  # if_22
              }
            }
            %265:i32 = load %d
            %x_382:bool = gte %265, 0i
            store %x_388, %x_382
            if %x_382 [t: %b37] {  # if_23
              %b37 = block {  # true
                %267:i32 = load_vector_element %p, 1u
                %268:bool = lt %267, 14i
                store %x_387, %268
                %269:bool = load %x_387
                store %x_388, %269
                exit_if  # if_23
              }
            }
            %270:bool = load %x_388
            store %x_401, %270
            %271:bool = load %x_388
            if %271 [t: %b38] {  # if_24
              %b38 = block {  # true
                %272:i32 = load_vector_element %p, 0u
                %273:i32 = load_vector_element %p, 1u
                %274:i32 = add %273, 2i
                %275:i32 = mul %274, 16i
                %276:i32 = add %272, %275
                %277:ptr<private, i32, read_write> = access %map, %276
                %278:i32 = load %277
                %279:bool = eq %278, 0i
                store %x_400, %279
                %280:bool = load %x_400
                store %x_401, %280
                exit_if  # if_24
              }
            }
            %281:bool = load %x_401
            if %281 [t: %b39] {  # if_25
              %b39 = block {  # true
                %282:i32 = load %d
                %283:i32 = sub %282, 1i
                store %d, %283
                %x_407:i32 = load_vector_element %p, 0u
                %x_409:i32 = load_vector_element %p, 1u
                %286:i32 = mul %x_409, 16i
                %287:i32 = add %x_407, %286
                %288:ptr<private, i32, read_write> = access %map, %287
                store %288, 1i
                %x_414:i32 = load_vector_element %p, 0u
                %x_416:i32 = load_vector_element %p, 1u
                %291:i32 = add %x_416, 1i
                %292:i32 = mul %291, 16i
                %293:i32 = add %x_414, %292
                %294:ptr<private, i32, read_write> = access %map, %293
                store %294, 1i
                %x_422:i32 = load_vector_element %p, 0u
                %x_424:i32 = load_vector_element %p, 1u
                %297:i32 = add %x_424, 2i
                %298:i32 = mul %297, 16i
                %299:i32 = add %x_422, %298
                %300:ptr<private, i32, read_write> = access %map, %299
                store %300, 1i
                %301:i32 = load_vector_element %p, 1u
                %302:i32 = add %301, 2i
                store_vector_element %p, 1u, %302
                exit_if  # if_25
              }
            }
            exit_if  # if_10
          }
        }
        %303:i32 = load_vector_element %ipos, 1u
        %304:i32 = mul %303, 16i
        %305:i32 = load_vector_element %ipos, 0u
        %306:i32 = add %304, %305
        %307:ptr<private, i32, read_write> = access %map, %306
        %308:i32 = load %307
        %309:bool = eq %308, 1i
        if %309 [t: %b40] {  # if_26
          %b40 = block {  # true
            store %x_GLF_color, vec4<f32>(1.0f)
            ret
          }
        }
        continue %b8
      }
      %b8 = block {  # continuing
        %x_444:bool = load %canwalk
        %311:bool = eq %x_444, false
        break_if %311 %b7
      }
    }
    store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b41 {
  %b41 = block {
    store %gl_FragCoord, %gl_FragCoord_param
    %314:void = call %main_1
    %315:vec4<f32> = load %x_GLF_color
    %316:main_out = construct %315
    ret %316
  }
}

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