SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 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 = block {  # 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 {
  %b2 = block {
    %f:ptr<function, f32, read_write> = var
    store %f, 1.0f
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %5:f32 = load %f
        %6:ptr<uniform, f32, read> = access %x_6, 0u
        %7:f32 = load %6
        %8:f32 = add %5, %7
        store %f, %8
        continue %b4
      }
      %b4 = block {  # continuing
        %x_34:f32 = load %f
        %10:ptr<uniform, f32, read> = access %x_6, 0u
        %x_36:f32 = load %10
        %12:f32 = add 9.0f, %x_36
        %13:f32 = clamp %x_34, 8.0f, %12
        %14:bool = gt 10.0f, %13
        %15:bool = eq %14, false
        break_if %15 %b3
      }
    }
    %16:f32 = load %f
    %17:bool = eq %16, 10.0f
    if %17 [t: %b5, f: %b6] {  # if_1
      %b5 = block {  # true
        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
        exit_if  # if_1
      }
      %b6 = block {  # false
        store %x_GLF_color, vec4<f32>(0.0f)
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b7 {
  %b7 = block {
    %19:void = call %main_1
    %20:vec4<f32> = load %x_GLF_color
    %21:main_out = construct %20
    ret %21
  }
}

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