SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(4) {
  one:f32 @offset(0)
}

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

$B1: {  # root
  %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: {
    %f:ptr<function, f32, read_write> = var
    %a:ptr<function, i32, read_write> = var
    %b:ptr<function, i32, read_write> = var
    %c:ptr<function, i32, read_write> = var
    %i:ptr<function, i32, read_write> = var
    %v:ptr<function, vec3<f32>, read_write> = var
    %10:ptr<uniform, f32, read> = access %x_6, 0u
    %11:f32 = load %10
    store %f, %11
    store %a, 1i
    store %b, 0i
    store %c, 1i
    store %i, 0i
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %12:i32 = load %i
        %13:bool = lt %12, 3i
        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_50:i32 = let %14
        %16:f32 = load %f
        %17:f32 = let %16
        %18:i32 = load %i
        %19:f32 = convert %18
        %20:f32 = add %17, %19
        store_vector_element %v, %x_50, %20
        continue  # -> $B4
      }
      $B4: {  # continuing
        %21:i32 = load %i
        %22:i32 = add %21, 1i
        store %i, %22
        next_iteration  # -> $B3
      }
    }
    %23:ptr<uniform, f32, read> = access %x_6, 0u
    %24:f32 = load %23
    %25:bool = eq %24, 1.0f
    if %25 [t: $B7] {  # if_2
      $B7: {  # true
        loop [b: $B8, c: $B9] {  # loop_2
          $B8: {  # body
            store %x_GLF_color, vec4<f32>(0.0f)
            continue  # -> $B9
          }
          $B9: {  # continuing
            %26:i32 = load %c
            %x_67:i32 = let %26
            %28:i32 = load %a
            %x_68:i32 = let %28
            %30:i32 = load %b
            %x_69:i32 = let %30
            %32:i32 = or %x_68, %x_69
            %33:i32 = and %x_67, %32
            %34:bool = eq %33, 0i
            %35:bool = eq %34, false
            break_if %35  # -> [t: exit_loop loop_2, f: $B8]
          }
        }
        %36:ptr<uniform, f32, read> = access %x_6, 0u
        %37:f32 = load %36
        %38:bool = eq %37, 1.0f
        if %38 [t: $B10] {  # if_3
          $B10: {  # true
            store %x_GLF_color, vec4<f32>(1.0f)
            exit_if  # if_3
          }
        }
        exit_if  # if_2
      }
    }
    %39:f32 = load_vector_element %v, 0u
    %40:bool = eq %39, 1.0f
    %41:f32 = select 0.0f, 1.0f, %40
    %42:f32 = let %41
    %43:f32 = load_vector_element %v, 1u
    %44:bool = eq %43, 2.0f
    %45:f32 = select 1.0f, 0.0f, %44
    %46:f32 = let %45
    %47:f32 = load_vector_element %v, 2u
    %48:bool = eq %47, 3.0f
    %49:f32 = select 1.0f, 0.0f, %48
    %50:vec3<f32> = construct %42, %46, %49
    %51:vec3<f32> = swizzle %50, xyz
    %52:f32 = load_vector_element %x_GLF_color, 3u
    %53:vec4<f32> = construct %51, %52
    store %x_GLF_color, %53
    store_vector_element %x_GLF_color, 3u, 1.0f
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B11: {
    %55:void = call %main_1
    %56:vec4<f32> = load %x_GLF_color
    %57:main_out = construct %56
    ret %57
  }
}

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