SKIP: FAILED

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

buf0 = struct @align(4) {
  x_GLF_uniform_int_values:array<strided_arr, 6> @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 {
    %arr:ptr<function, array<i32, 3>, read_write> = var
    %index:ptr<function, i32, read_write> = var
    %x_76:ptr<function, bool, read_write> = var
    %x_77:ptr<function, bool, read_write> = var
    %x_86:ptr<function, bool, read_write> = var
    %x_87:ptr<function, bool, read_write> = var
    %10:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
    %11:i32 = load %10
    %12:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
    %13:i32 = load %12
    %14:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %15:i32 = load %14
    %16:array<i32, 3> = construct %11, %13, %15
    store %arr, %16
    store %index, 1i
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %x_51:ptr<function, bool, read_write> = var
        %x_52:ptr<function, bool, read_write> = var
        store %x_52, true
        if true [t: %b5] {  # if_1
          %b5 = block {  # true
            %19:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
            %20:i32 = load %19
            %21:bool = eq %20, 1i
            %22:i32 = load %index
            %23:bool = lte %22, 1i
            %24:bool = and %21, %23
            %25:bool = eq %24, false
            store %x_51, %25
            %26:bool = load %x_51
            store %x_52, %26
            exit_if  # if_1
          }
        }
        %27:bool = load %x_52
        %28:bool = eq %27, false
        if %28 [t: %b6, f: %b7] {  # if_2
          %b6 = block {  # true
            exit_if  # if_2
          }
          %b7 = block {  # false
            exit_loop  # loop_1
          }
        }
        %x_55:i32 = load %index
        %x_56_save:i32 = let %x_55
        %31:ptr<function, i32, read_write> = access %arr, %x_56_save
        %32:ptr<function, i32, read_write> = access %arr, %x_55
        %33:i32 = load %32
        %34:i32 = add %33, 1i
        store %31, %34
        %35:i32 = load %index
        %36:i32 = add %35, 1i
        store %index, %36
        continue %b4
      }
      %b4 = block {  # continuing
        next_iteration %b3
      }
    }
    %37:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %38:i32 = load %37
    %39:ptr<function, i32, read_write> = access %arr, %38
    %40:i32 = load %39
    %41:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
    %42:i32 = load %41
    %x_67:bool = eq %40, %42
    store %x_77, %x_67
    if %x_67 [t: %b8] {  # if_3
      %b8 = block {  # true
        %44:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %45:i32 = load %44
        %46:ptr<function, i32, read_write> = access %arr, %45
        %47:i32 = load %46
        %48:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
        %49:i32 = load %48
        %50:bool = eq %47, %49
        store %x_76, %50
        %51:bool = load %x_76
        store %x_77, %51
        exit_if  # if_3
      }
    }
    %52:bool = load %x_77
    store %x_87, %52
    %53:bool = load %x_77
    if %53 [t: %b9] {  # if_4
      %b9 = block {  # true
        %54:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
        %55:i32 = load %54
        %56:ptr<function, i32, read_write> = access %arr, %55
        %57:i32 = load %56
        %58:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
        %59:i32 = load %58
        %60:bool = eq %57, %59
        store %x_86, %60
        %61:bool = load %x_86
        store %x_87, %61
        exit_if  # if_4
      }
    }
    %62:bool = load %x_87
    if %62 [t: %b10, f: %b11] {  # if_5
      %b10 = block {  # true
        %63:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %64:i32 = load %63
        %65:f32 = convert %64
        %66:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %67:i32 = load %66
        %68:f32 = convert %67
        %69:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %70:i32 = load %69
        %71:f32 = convert %70
        %72:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %73:i32 = load %72
        %74:f32 = convert %73
        %75:vec4<f32> = construct %65, %68, %71, %74
        store %x_GLF_color, %75
        exit_if  # if_5
      }
      %b11 = block {  # false
        %76:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %77:i32 = load %76
        %78:f32 = convert %77
        %79:vec4<f32> = construct %78
        store %x_GLF_color, %79
        exit_if  # if_5
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b12 {
  %b12 = block {
    %81:void = call %main_1
    %82:vec4<f32> = load %x_GLF_color
    %83:main_out = construct %82
    ret %83
  }
}

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