SKIP: FAILED

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

buf0 = struct @align(4) {
  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
}

buf1 = struct @align(4) {
  zero: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_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
  %continue_execution:ptr<private, bool, read_write> = var, true
}

%main_1 = func():void {
  $B2: {
    %v0:ptr<function, vec2<f32>, read_write> = var
    %v1:ptr<function, vec4<f32>, read_write> = var
    %x_57:ptr<function, vec4<f32>, read_write> = var
    %9:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
    %10:f32 = load %9
    %x_32:f32 = let %10
    %12:vec2<f32> = construct %x_32, %x_32
    store %v0, %12
    %13:f32 = load_vector_element %v0, 0u
    %x_35:f32 = let %13
    %15:vec4<f32> = construct %x_35, %x_35, %x_35, %x_35
    %x_36:vec4<f32> = let %15
    store %v1, %x_36
    %17:ptr<uniform, f32, read> = access %x_9, 0u
    %18:f32 = load %17
    %x_38:f32 = let %18
    %20:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
    %21:f32 = load %20
    %x_40:f32 = let %21
    %23:bool = eq %x_38, %x_40
    %24:bool = eq %23, false
    if %24 [t: $B3, f: $B4] {  # if_1
      $B3: {  # true
        %25:ptr<uniform, f32, read> = access %x_9, 0u
        %26:f32 = load %25
        %x_46:f32 = let %26
        %28:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
        %29:f32 = load %28
        %x_48:f32 = let %29
        %31:bool = eq %x_46, %x_48
        if %31 [t: $B5] {  # if_2
          $B5: {  # true
            ret
          }
        }
        %32:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
        %33:f32 = load %32
        %x_53:f32 = let %33
        %35:f32 = access %x_36, 1u
        %36:f32 = access %x_36, 2u
        %37:vec2<f32> = construct %35, %36
        %38:vec2<f32> = let %37
        %39:vec2<f32> = construct %x_53, %x_53
        %40:vec2<f32> = sub %38, %39
        %x_56:vec2<f32> = let %40
        %42:f32 = access %x_36, 0u
        %43:f32 = access %x_56, 0u
        %44:f32 = access %x_56, 1u
        %45:f32 = access %x_36, 3u
        %46:vec4<f32> = construct %42, %43, %44, %45
        store %x_57, %46
        %47:vec4<f32> = load %x_57
        store %v1, %47
        exit_if  # if_1
      }
      $B4: {  # false
        store %continue_execution, false
        exit_if  # if_1
      }
    }
    %48:vec4<f32> = load %x_57
    store %x_GLF_color, %48
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B6: {
    %50:void = call %main_1
    %51:vec4<f32> = load %x_GLF_color
    %52:main_out = construct %51
    %53:bool = load %continue_execution
    %54:bool = eq %53, false
    if %54 [t: $B7] {  # if_3
      $B7: {  # true
        terminate_invocation
      }
    }
    ret %52
  }
}

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