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) {
  arr:array<i32, 2> @offset(0)
}

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

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

%func_struct_S_i1_2_1_i1_ = func(%s:ptr<function, S, read_write>, %x:ptr<function, i32, read_write>):i32 -> %b2 {
  %b2 = block {
    %6:ptr<function, i32, read_write> = access %s, 0u, 1i
    %7:i32 = load %x
    %8:i32 = add %7, 1i
    store %6, %8
    %9:ptr<uniform, i32, read> = access %x_9, 0u
    %10:i32 = load %9
    %11:ptr<function, i32, read_write> = access %s, 0u, %10
    %12:i32 = load %11
    %13:i32 = load %x
    %14:bool = eq %12, %13
    if %14 [t: %b3] {  # if_1
      %b3 = block {  # true
        ret -1i
      }
    }
    %x_21:i32 = load %x
    ret %x_21
  }
}
%main_1 = func():void -> %b4 {
  %b4 = block {
    %a:ptr<function, i32, read_write> = var
    %i:ptr<function, i32, read_write> = var
    %j:ptr<function, i32, read_write> = var
    %s_1:ptr<function, S, read_write> = var
    %param:ptr<function, S, read_write> = var
    %param_1:ptr<function, i32, read_write> = var
    store %a, 0i
    store %i, 0i
    loop [b: %b5, c: %b6] {  # loop_1
      %b5 = block {  # body
        %23:i32 = load %i
        %24:ptr<uniform, i32, read> = access %x_9, 0u
        %25:i32 = load %24
        %26:i32 = add 2i, %25
        %27:bool = lt %23, %26
        if %27 [t: %b7, f: %b8] {  # if_2
          %b7 = block {  # true
            exit_if  # if_2
          }
          %b8 = block {  # false
            exit_loop  # loop_1
          }
        }
        store %j, 0i
        loop [b: %b9, c: %b10] {  # loop_2
          %b9 = block {  # body
            %28:i32 = load %j
            %29:ptr<uniform, i32, read> = access %x_9, 0u
            %30:i32 = load %29
            %31:i32 = add 3i, %30
            %32:bool = lt %28, %31
            if %32 [t: %b11, f: %b12] {  # if_3
              %b11 = block {  # true
                exit_if  # if_3
              }
              %b12 = block {  # false
                exit_loop  # loop_2
              }
            }
            %x_28:i32 = load %i
            %x_29:i32 = load %j
            %35:S = load %s_1
            store %param, %35
            %36:i32 = add %x_28, %x_29
            store %param_1, %36
            %x_31:i32 = call %func_struct_S_i1_2_1_i1_, %param, %param_1
            %38:i32 = load %a
            %39:i32 = add %38, %x_31
            store %a, %39
            continue %b10
          }
          %b10 = block {  # continuing
            %40:i32 = load %j
            %41:i32 = add %40, 1i
            store %j, %41
            next_iteration %b9
          }
        }
        continue %b6
      }
      %b6 = block {  # continuing
        %42:i32 = load %i
        %43:i32 = add %42, 1i
        store %i, %43
        next_iteration %b5
      }
    }
    %44:i32 = load %a
    %45:bool = eq %44, 30i
    if %45 [t: %b13, f: %b14] {  # if_4
      %b13 = block {  # true
        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
        exit_if  # if_4
      }
      %b14 = block {  # false
        store %x_GLF_color, vec4<f32>(0.0f)
        exit_if  # if_4
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b15 {
  %b15 = block {
    %47:void = call %main_1
    %48:vec4<f32> = load %x_GLF_color
    %49:main_out = construct %48
    ret %49
  }
}

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