SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(16) {
  matrix_a_uni:mat4x4<f32> @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: {
    %x:ptr<function, i32, read_write> = var
    %matrix_u:ptr<function, vec4<f32>, read_write> = var
    %b:ptr<function, i32, read_write> = var
    %matrix_b:ptr<function, vec4<f32>, read_write> = var
    %x_42:ptr<function, vec4<f32>, read_write> = var
    store %x, 4i
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %9:i32 = load %x
        %x_10:i32 = let %9
        %11:bool = gte %x_10, 1i
        if %11 [t: $B5, f: $B6] {  # if_1
          $B5: {  # true
            exit_if  # if_1
          }
          $B6: {  # false
            exit_loop  # loop_1
          }
        }
        %12:i32 = load %x
        %x_11:i32 = let %12
        store_vector_element %matrix_u, %x_11, 1.0f
        continue  # -> $B4
      }
      $B4: {  # continuing
        %14:i32 = load %x
        %x_12:i32 = let %14
        %16:i32 = sub %x_12, 1i
        store %x, %16
        next_iteration  # -> $B3
      }
    }
    store %b, 4i
    loop [b: $B7, c: $B8] {  # loop_2
      $B7: {  # body
        %17:ptr<uniform, vec4<f32>, read> = access %x_8, 0u, 0i
        %18:f32 = load_vector_element %17, 0u
        %x_55:f32 = let %18
        %20:bool = lt %x_55, -1.0f
        if %20 [t: $B9, f: $B10] {  # if_2
          $B9: {  # true
            exit_if  # if_2
          }
          $B10: {  # false
            exit_loop  # loop_2
          }
        }
        %21:i32 = load %b
        %x_14:i32 = let %21
        %23:i32 = load %b
        %x_15:i32 = let %23
        %25:bool = gt %x_15, 1i
        if %25 [t: $B11, f: $B12] {  # if_3
          $B11: {  # true
            %26:vec4<f32> = load %matrix_b
            %x_62:vec4<f32> = let %26
            %28:vec4<f32> = load %matrix_b
            %x_63:vec4<f32> = let %28
            %30:vec4<f32> = min %x_62, %x_63
            store %x_42, %30
            exit_if  # if_3
          }
          $B12: {  # false
            %31:vec4<f32> = load %matrix_u
            %x_65:vec4<f32> = let %31
            store %x_42, %x_65
            exit_if  # if_3
          }
        }
        %33:f32 = load_vector_element %x_42, 1u
        %x_67:f32 = let %33
        store_vector_element %matrix_b, %x_14, %x_67
        continue  # -> $B8
      }
      $B8: {  # continuing
        %35:i32 = load %b
        %x_16:i32 = let %35
        %37:i32 = sub %x_16, 1i
        store %b, %37
        next_iteration  # -> $B7
      }
    }
    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B13: {
    %39:void = call %main_1
    %40:vec4<f32> = load %x_GLF_color
    %41:main_out = construct %40
    ret %41
  }
}

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