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_66:ptr<function, i32, read_write> = var
    %x_66_phi:ptr<function, i32, read_write> = var
    %x_69_phi:ptr<function, i32, read_write> = var
    %x_52:vec4<f32> = load %gl_FragCoord
    %10:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
    %x_55:vec2<f32> = load %10
    %12:f32 = access %x_52, 0u
    %13:f32 = access %x_52, 1u
    %14:vec2<f32> = construct %12, %13
    %x_56:vec2<f32> = div %14, %x_55
    %16:f32 = access %x_56, 0u
    %17:f32 = mul %16, 10.0f
    %18:i32 = convert %17
    %19:f32 = access %x_56, 1u
    %20:f32 = mul %19, 10.0f
    %21:i32 = convert %20
    %22:i32 = mul %21, 10i
    %x_64:i32 = add %18, %22
    store %x_66_phi, 100i
    store %x_69_phi, 0i
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %x_67:ptr<function, i32, read_write> = var
        %x_70:ptr<function, i32, read_write> = var
        %26:i32 = load %x_66_phi
        store %x_66, %26
        %x_69:i32 = load %x_69_phi
        %28:bool = lt %x_69, %x_64
        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_66
        %30:i32 = bitcast %29
        %31:i32 = mul 4i, %30
        %32:i32 = load %x_66
        %33:i32 = bitcast %32
        %34:i32 = sub 1000i, %33
        %35:i32 = mul %31, %34
        %36:i32 = div %35, 1000i
        store %x_67, %36
        %37:i32 = add %x_69, 1i
        store %x_70, %37
        %38:i32 = load %x_67
        store %x_66_phi, %38
        %39:i32 = load %x_70
        store %x_69_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))
    %40:i32 = load %x_66
    %41:i32 = mod %40, 16i
    %42:i32 = bitcast %41
    %43:ptr<function, vec4<f32>, read_write> = access %indexable, %42
    %x_78:vec4<f32> = load %43
    store %x_GLF_color, %x_78
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b7 {
  %b7 = block {
    store %gl_FragCoord, %gl_FragCoord_param
    %47:void = call %main_1
    %48:vec4<f32> = load %x_GLF_color
    %49:main_out = construct %48
    ret %49
  }
}

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