SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 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: {  # 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: {
    %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
    %9:vec4<f32> = load %gl_FragCoord
    %x_52:vec4<f32> = let %9
    %11:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
    %12:vec2<f32> = load %11
    %x_55:vec2<f32> = let %12
    %14:f32 = access %x_52, 0u
    %15:f32 = access %x_52, 1u
    %16:vec2<f32> = construct %14, %15
    %17:vec2<f32> = div %16, %x_55
    %x_56:vec2<f32> = let %17
    %19:f32 = access %x_56, 0u
    %20:f32 = mul %19, 10.0f
    %21:i32 = call %tint_f32_to_i32, %20
    %23:i32 = let %21
    %24:f32 = access %x_56, 1u
    %25:f32 = mul %24, 10.0f
    %26:i32 = call %tint_f32_to_i32, %25
    %27:i32 = mul %26, 10i
    %28:i32 = add %23, %27
    %x_64:i32 = let %28
    store %x_66_phi, 100i
    store %x_69_phi, 0i
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %x_67:ptr<function, i32, read_write> = var
        %x_70:ptr<function, i32, read_write> = var
        %32:i32 = load %x_66_phi
        store %x_66, %32
        %33:i32 = load %x_69_phi
        %x_69:i32 = let %33
        %35:bool = lt %x_69, %x_64
        if %35 [t: $B5, f: $B6] {  # if_1
          $B5: {  # true
            exit_if  # if_1
          }
          $B6: {  # false
            exit_loop  # loop_1
          }
        }
        continue  # -> $B4
      }
      $B4: {  # continuing
        %36:i32 = load %x_66
        %37:i32 = bitcast %36
        %38:i32 = mul 4i, %37
        %39:i32 = let %38
        %40:i32 = load %x_66
        %41:i32 = bitcast %40
        %42:i32 = sub 1000i, %41
        %43:i32 = mul %39, %42
        %44:i32 = call %tint_div_i32, %43, 1000i
        store %x_67, %44
        %46:i32 = add %x_69, 1i
        store %x_70, %46
        %47:i32 = load %x_67
        store %x_66_phi, %47
        %48:i32 = load %x_70
        store %x_69_phi, %48
        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))
    %49:i32 = load %x_66
    %50:i32 = call %tint_mod_i32, %49, 16i
    %52:i32 = bitcast %50
    %53:ptr<function, vec4<f32>, read_write> = access %indexable, %52
    %54:vec4<f32> = load %53
    %x_78:vec4<f32> = let %54
    store %x_GLF_color, %x_78
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
  $B7: {
    store %gl_FragCoord, %gl_FragCoord_param
    %58:void = call %main_1
    %59:vec4<f32> = load %x_GLF_color
    %60:main_out = construct %59
    ret %60
  }
}
%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
  $B8: {
    %63:bool = eq %rhs, 0i
    %64:bool = eq %lhs, -2147483648i
    %65:bool = eq %rhs, -1i
    %66:bool = and %64, %65
    %67:bool = or %63, %66
    %68:i32 = select %rhs, 1i, %67
    %69:i32 = div %lhs, %68
    ret %69
  }
}
%tint_mod_i32 = func(%lhs_1:i32, %rhs_1:i32):i32 {  # %lhs_1: 'lhs', %rhs_1: 'rhs'
  $B9: {
    %72:bool = eq %rhs_1, 0i
    %73:bool = eq %lhs_1, -2147483648i
    %74:bool = eq %rhs_1, -1i
    %75:bool = and %73, %74
    %76:bool = or %72, %75
    %77:i32 = select %rhs_1, 1i, %76
    %78:i32 = let %77
    %79:i32 = div %lhs_1, %78
    %80:i32 = mul %79, %78
    %81:i32 = sub %lhs_1, %80
    ret %81
  }
}
%tint_f32_to_i32 = func(%value:f32):i32 {
  $B10: {
    %83:i32 = convert %value
    %84:bool = gte %value, -2147483648.0f
    %85:i32 = select -2147483648i, %83, %84
    %86:bool = lte %value, 2147483520.0f
    %87:i32 = select 2147483647i, %85, %86
    ret %87
  }
}

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