SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
  one:i32 @offset(0)
}

S = struct @align(4) {
  x:i32 @offset(0)
  y:i32 @offset(4)
}

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

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

%func_struct_S_i1_i11_ = func(%arg:ptr<function, S, read_write>):void -> %b2 {
  %b2 = block {
    %5:ptr<function, i32, read_write> = access %arg, 1u
    store %5, 1i
    ret
  }
}
%main_1 = func():void -> %b3 {
  %b3 = block {
    %a:ptr<function, f32, read_write> = var
    %b:ptr<function, array<S, 2>, read_write> = var
    %param:ptr<function, S, read_write> = var
    store %a, 5.0f
    loop [b: %b4, c: %b5] {  # loop_1
      %b4 = block {  # body
        %10:ptr<uniform, i32, read> = access %x_10, 0u
        %x_43:i32 = load %10
        %12:ptr<function, i32, read_write> = access %b, %x_43, 0u
        store %12, 1i
        %13:ptr<function, i32, read_write> = access %b, 1i, 0u
        %x_46:i32 = load %13
        %15:bool = eq %x_46, 1i
        if %15 [t: %b6] {  # if_1
          %b6 = block {  # true
            %16:ptr<uniform, i32, read> = access %x_10, 0u
            %x_51:i32 = load %16
            %18:bool = eq %x_51, 1i
            if %18 [t: %b7] {  # if_2
              %b7 = block {  # true
                exit_loop  # loop_1
              }
            }
            %19:ptr<function, S, read_write> = access %b, 1i
            %x_56:S = load %19
            store %param, %x_56
            %21:void = call %func_struct_S_i1_i11_, %param
            %x_58:S = load %param
            %23:ptr<function, S, read_write> = access %b, 1i
            store %23, %x_58
            %24:ptr<function, i32, read_write> = access %b, 1i, 1u
            %x_61:i32 = load %24
            %26:f32 = convert %x_61
            store %a, %26
            exit_if  # if_1
          }
        }
        store %a, 0.0f
        continue %b5
      }
      %b5 = block {  # continuing
        break_if true %b4
      }
    }
    %x_63:f32 = load %a
    %28:bool = eq %x_63, 5.0f
    if %28 [t: %b8, f: %b9] {  # if_3
      %b8 = block {  # true
        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
        exit_if  # if_3
      }
      %b9 = block {  # false
        store %x_GLF_color, vec4<f32>(0.0f)
        exit_if  # if_3
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b10 {
  %b10 = block {
    %30:void = call %main_1
    %31:vec4<f32> = load %x_GLF_color
    %32:main_out = construct %31
    ret %32
  }
}

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