SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(16) {
  sequence:vec4<i32> @offset(0)
}

main_out = struct @align(16) {
  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
}

$B1: {  # root
  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void {
  $B2: {
    %a:ptr<function, vec4<i32>, read_write> = var
    %i:ptr<function, i32, read_write> = var
    %sum:ptr<function, i32, read_write> = var
    store %a, vec4<i32>(0i)
    store %i, 0i
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %7:i32 = load %i
        %x_40:i32 = let %7
        %9:ptr<uniform, vec4<i32>, read> = access %x_7, 0u
        %10:i32 = load_vector_element %9, 3u
        %x_42:i32 = let %10
        %12:i32 = add %x_42, 1i
        %13:bool = lt %x_40, %12
        if %13 [t: $B5, f: $B6] {  # if_1
          $B5: {  # true
            exit_if  # if_1
          }
          $B6: {  # false
            exit_loop  # loop_1
          }
        }
        %14:i32 = load %i
        %x_46:i32 = let %14
        %16:ptr<uniform, vec4<i32>, read> = access %x_7, 0u
        %17:i32 = load_vector_element %16, 0u
        %x_48:i32 = let %17
        %19:i32 = load %i
        %x_49:i32 = let %19
        %21:ptr<uniform, vec4<i32>, read> = access %x_7, 0u
        %22:i32 = max %x_46, %x_48
        %23:i32 = min %22, %x_49
        %24:i32 = load_vector_element %21, %23
        %x_52:i32 = let %24
        %26:bool = eq %x_52, 1i
        if %26 [t: $B7, f: $B8] {  # if_2
          $B7: {  # true
            %27:i32 = load %i
            %x_57:i32 = let %27
            store_vector_element %a, %x_57, 5i
            exit_if  # if_2
          }
          $B8: {  # false
            %29:i32 = load %i
            %x_59:i32 = let %29
            %31:i32 = load %i
            %x_60:i32 = let %31
            store_vector_element %a, %x_59, %x_60
            exit_if  # if_2
          }
        }
        continue  # -> $B4
      }
      $B4: {  # continuing
        %33:i32 = load %i
        %x_62:i32 = let %33
        %35:i32 = add %x_62, 1i
        store %i, %35
        next_iteration  # -> $B3
      }
    }
    %36:i32 = load_vector_element %a, 0u
    %x_65:i32 = let %36
    %38:i32 = load_vector_element %a, 1u
    %x_67:i32 = let %38
    %40:i32 = load_vector_element %a, 2u
    %x_70:i32 = let %40
    %42:i32 = load_vector_element %a, 3u
    %x_73:i32 = let %42
    %44:i32 = add %x_65, %x_67
    %45:i32 = add %44, %x_70
    %46:i32 = add %45, %x_73
    store %sum, %46
    %47:i32 = load %sum
    %x_75:i32 = let %47
    %49:bool = eq %x_75, 10i
    if %49 [t: $B9, f: $B10] {  # if_3
      $B9: {  # true
        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
        exit_if  # if_3
      }
      $B10: {  # false
        store %x_GLF_color, vec4<f32>(0.0f)
        exit_if  # if_3
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B11: {
    %51:void = call %main_1
    %52:vec4<f32> = load %x_GLF_color
    %53:main_out = construct %52
    ret %53
  }
}

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