SKIP: FAILED

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

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

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

%main_1 = func():void {
  $B2: {
    %highSigned:ptr<function, i32, read_write> = var
    %highUnsigned:ptr<function, u32, read_write> = var
    %i:ptr<function, i32, read_write> = var
    %data:ptr<function, array<i32, 2>, read_write> = var
    %i_1:ptr<function, u32, read_write> = var
    %x_78:ptr<function, bool, read_write> = var
    %x_79:ptr<function, bool, read_write> = var
    store %highSigned, 1i
    store %highUnsigned, 2u
    store %i, 0i
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %11:i32 = load %i
        %12:i32 = let %11
        %13:i32 = load %highSigned
        %14:i32 = min 10i, %13
        %15:ptr<uniform, i32, read> = access %x_8, 0u
        %16:i32 = load %15
        %17:i32 = add %14, %16
        %18:bool = lt %12, %17
        if %18 [t: $B5, f: $B6] {  # if_1
          $B5: {  # true
            exit_if  # if_1
          }
          $B6: {  # false
            exit_loop  # loop_1
          }
        }
        %19:i32 = load %i
        %x_50:i32 = let %19
        %21:ptr<function, i32, read_write> = access %data, %x_50
        store %21, 5i
        continue  # -> $B4
      }
      $B4: {  # continuing
        %22:i32 = load %i
        %23:i32 = add %22, 1i
        store %i, %23
        next_iteration  # -> $B3
      }
    }
    store %i_1, 1u
    loop [b: $B7, c: $B8] {  # loop_2
      $B7: {  # body
        %24:u32 = load %i_1
        %25:u32 = let %24
        %26:u32 = load %highUnsigned
        %27:u32 = min 10u, %26
        %28:u32 = let %27
        %29:ptr<uniform, i32, read> = access %x_8, 0u
        %30:i32 = load %29
        %31:u32 = bitcast %30
        %32:u32 = add %28, %31
        %33:bool = lt %25, %32
        if %33 [t: $B9, f: $B10] {  # if_2
          $B9: {  # true
            exit_if  # if_2
          }
          $B10: {  # false
            exit_loop  # loop_2
          }
        }
        %34:u32 = load %i_1
        %x_67:u32 = let %34
        %36:ptr<function, i32, read_write> = access %data, %x_67
        store %36, 6i
        continue  # -> $B8
      }
      $B8: {  # continuing
        %37:u32 = load %i_1
        %38:u32 = add %37, 1u
        store %i_1, %38
        next_iteration  # -> $B7
      }
    }
    %39:ptr<function, i32, read_write> = access %data, 0i
    %40:i32 = load %39
    %41:bool = eq %40, 5i
    %x_73:bool = let %41
    store %x_79, %x_73
    if %x_73 [t: $B11] {  # if_3
      $B11: {  # true
        %43:ptr<function, i32, read_write> = access %data, 1i
        %44:i32 = load %43
        %45:bool = eq %44, 6i
        store %x_78, %45
        %46:bool = load %x_78
        store %x_79, %46
        exit_if  # if_3
      }
    }
    %47:bool = load %x_79
    if %47 [t: $B12, f: $B13] {  # if_4
      $B12: {  # true
        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
        exit_if  # if_4
      }
      $B13: {  # false
        store %x_GLF_color, vec4<f32>(0.0f)
        exit_if  # if_4
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B14: {
    %49:void = call %main_1
    %50:vec4<f32> = load %x_GLF_color
    %51:main_out = construct %50
    ret %51
  }
}

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