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
  %continue_execution:ptr<private, bool, read_write> = var, true
}

%func_ = func():void {
  $B2: {
    %5:ptr<uniform, f32, read> = access %x_6, 0u
    %6:f32 = load %5
    %7:bool = gt 1.0f, %6
    if %7 [t: $B3] {  # if_1
      $B3: {  # true
        store %continue_execution, false
        exit_if  # if_1
      }
    }
    ret
  }
}
%main_1 = func():void {
  $B4: {
    store %x_GLF_color, vec4<f32>(0.0f)
    loop [b: $B5, c: $B6] {  # loop_1
      $B5: {  # body
        %9:void = call %func_
        if false [t: $B7, f: $B8] {  # if_2
          $B7: {  # true
            exit_if  # if_2
          }
          $B8: {  # false
            exit_loop  # loop_1
          }
        }
        continue  # -> $B6
      }
      $B6: {  # continuing
        next_iteration  # -> $B5
      }
    }
    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B9: {
    %11:void = call %main_1
    %12:vec4<f32> = load %x_GLF_color
    %13:main_out = construct %12
    %14:bool = load %continue_execution
    %15:bool = eq %14, false
    if %15 [t: $B10] {  # if_3
      $B10: {  # true
        terminate_invocation
      }
    }
    ret %13
  }
}

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