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_71:ptr<function, i32, read_write> = var
    %x_71_phi:ptr<function, i32, read_write> = var
    %x_74_phi:ptr<function, i32, read_write> = var
    %x_54:vec4<f32> = load %gl_FragCoord
    %10:f32 = access %x_54, 0u
    %11:f32 = access %x_54, 1u
    %x_55:vec2<f32> = construct %10, %11
    %13:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
    %x_58:vec2<f32> = load %13
    %15:vec2<f32> = div %x_55, %x_58
    %x_61:vec2<f32> = mul %15, 8.0f
    %x_62:vec2<f32> = floor %x_61
    %18:f32 = access %x_62, 0u
    %19:i32 = convert %18
    %20:i32 = mul %19, 8i
    %21:f32 = access %x_62, 1u
    %22:i32 = convert %21
    %x_69:i32 = add %20, %22
    store %x_71_phi, 0i
    store %x_74_phi, %x_69
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %x_85:ptr<function, i32, read_write> = var
        %x_86:ptr<function, i32, read_write> = var
        %x_75_phi:ptr<function, i32, read_write> = var
        %27:i32 = load %x_71_phi
        store %x_71, %27
        %x_74:i32 = load %x_74_phi
        %29:bool = gt %x_74, 1i
        if %29 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        %30:i32 = and %x_74, 1i
        %31:bool = eq %30, 1i
        if %31 [t: %b7, f: %b8] {  # if_2
          %b7 = block {  # true
            %32:i32 = mul 3i, %x_74
            %33:i32 = add %32, 1i
            store %x_85, %33
            %34:i32 = load %x_85
            store %x_75_phi, %34
            exit_if  # if_2
          }
          %b8 = block {  # false
            %35:i32 = div %x_74, 2i
            store %x_86, %35
            %36:i32 = load %x_86
            store %x_75_phi, %36
            exit_if  # if_2
          }
        }
        %x_75:i32 = load %x_75_phi
        continue %b4
      }
      %b4 = block {  # continuing
        %38:i32 = load %x_71
        %39:i32 = add %38, 1i
        %40:i32 = bitcast %39
        store %x_71_phi, %40
        store %x_74_phi, %x_75
        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_88:array<vec4<f32>, 16> = load %indexable
    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f))
    store %indexable, %x_88
    %42:array<vec4<f32>, 16> = construct vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), %x_54, vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
    %x_89:vec4<f32> = access %42, 1u
    %44:vec4<f32> = construct 0.0f, 8.0f, %x_55
    %45:vec4<f32> = construct %x_61, 0.5f, 1.0f
    %x_90:array<vec4<f32>, 16> = construct vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), %44, vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), %45
    %47:i32 = load %x_71
    %48:i32 = mod %47, 16i
    %49:i32 = bitcast %48
    %50:ptr<function, vec4<f32>, read_write> = access %indexable, %49
    %x_92:vec4<f32> = load %50
    store %x_GLF_color, %x_92
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b9 {
  %b9 = block {
    store %gl_FragCoord, %gl_FragCoord_param
    %54:void = call %main_1
    %55:vec4<f32> = load %x_GLF_color
    %56:main_out = construct %55
    ret %56
  }
}

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