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_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void -> %b2 {
  %b2 = block {
    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
    %x_69:ptr<function, i32, read_write> = var
    %x_69_phi:ptr<function, i32, read_write> = var
    %x_72_phi:ptr<function, i32, read_write> = var
    %x_55:vec4<f32> = load %gl_FragCoord
    %10:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
    %x_58:vec2<f32> = load %10
    %12:f32 = access %x_55, 0u
    %13:f32 = access %x_55, 1u
    %14:vec2<f32> = construct %12, %13
    %x_59:vec2<f32> = div %14, %x_58
    %16:f32 = access %x_59, 0u
    %17:f32 = mul %16, 10.0f
    %18:i32 = convert %17
    %19:f32 = access %x_59, 1u
    %20:f32 = mul %19, 10.0f
    %21:i32 = convert %20
    %22:i32 = mul %21, 10i
    %x_67:i32 = add %18, %22
    store %x_69_phi, 100i
    store %x_72_phi, 0i
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %x_70:ptr<function, i32, read_write> = var
        %x_73:ptr<function, i32, read_write> = var
        %26:i32 = load %x_69_phi
        store %x_69, %26
        %x_72:i32 = load %x_72_phi
        %28:bool = lt %x_72, %x_67
        if %28 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        continue %b4
      }
      %b4 = block {  # continuing
        %29:i32 = load %x_69
        %30:i32 = bitcast %29
        %31:i32 = mul 4i, %30
        %32:i32 = load %x_69
        %33:i32 = bitcast %32
        %34:i32 = sub 1000i, %33
        %35:i32 = mul %31, %34
        %36:i32 = div %35, 1000i
        store %x_70, %36
        %37:i32 = add %x_72, 1i
        store %x_73, %37
        %38:i32 = load %x_70
        store %x_69_phi, %38
        %39:i32 = load %x_73
        store %x_72_phi, %39
        next_iteration %b3
      }
    }
    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
    %x_80:array<vec4<f32>, 16> = load %indexable
    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f))
    store %indexable, %x_80
    %x_81:vec2<f32> = let vec2<f32>(1.0f, 0.5f)
    %42:i32 = load %x_69
    %43:i32 = mod %42, 16i
    %44:i32 = bitcast %43
    %45:ptr<function, vec4<f32>, read_write> = access %indexable, %44
    %x_83:vec4<f32> = load %45
    store %x_GLF_color, %x_83
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b7 {
  %b7 = block {
    store %gl_FragCoord, %gl_FragCoord_param
    %49:void = call %main_1
    %50:vec4<f32> = load %x_GLF_color
    %51:main_out = construct %50
    ret %51
  }
}

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