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, 5> @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 {
    %a:ptr<function, i32, read_write> = var
    %b:ptr<function, i32, read_write> = var
    %i:ptr<function, i32, read_write> = var
    %i_1:ptr<function, i32, read_write> = var
    %i_2:ptr<function, i32, read_write> = var
    %indexable:ptr<function, array<i32, 2>, read_write> = var
    %10:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %11:i32 = load %10
    store %a, %11
    %12:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
    %13:i32 = load %12
    store %b, %13
    %14:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %15:i32 = load %14
    %16:f32 = convert %15
    %17:vec4<f32> = construct %16
    store %x_GLF_color, %17
    %18:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %19:i32 = load %18
    store %i, %19
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %20:i32 = load %i
        %21:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %22:i32 = load %21
        %23:bool = lt %20, %22
        if %23 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        %24:i32 = load %i
        %25:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
        %26:i32 = load %25
        %27:bool = gt %24, %26
        if %27 [t: %b7] {  # if_2
          %b7 = block {  # true
            %28:i32 = load %a
            %29:i32 = add %28, 1i
            store %a, %29
            if false [t: %b8] {  # if_3
              %b8 = block {  # true
                %30:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
                %31:i32 = load %30
                store %i_1, %31
                loop [b: %b9, c: %b10] {  # loop_2
                  %b9 = block {  # body
                    %32:i32 = load %i_1
                    %33:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
                    %34:i32 = load %33
                    %35:bool = lt %32, %34
                    if %35 [t: %b11, f: %b12] {  # if_4
                      %b11 = block {  # true
                        exit_if  # if_4
                      }
                      %b12 = block {  # false
                        exit_loop  # loop_2
                      }
                    }
                    ret
                  }
                  %b10 = block {  # continuing
                    next_iteration %b9
                  }
                }
                exit_if  # if_3
              }
            }
            exit_if  # if_2
          }
        }
        continue %b4
      }
      %b4 = block {  # continuing
        %36:i32 = load %i
        %37:i32 = add %36, 1i
        store %i, %37
        next_iteration %b3
      }
    }
    %38:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %39:i32 = load %38
    store %i_2, %39
    loop [b: %b13, c: %b14] {  # loop_3
      %b13 = block {  # body
        %40:i32 = load %i_2
        %41:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %42:i32 = load %41
        %43:bool = lt %40, %42
        if %43 [t: %b15, f: %b16] {  # if_5
          %b15 = block {  # true
            exit_if  # if_5
          }
          %b16 = block {  # false
            exit_loop  # loop_3
          }
        }
        %x_93:i32 = load %b
        %45:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
        %46:i32 = load %45
        %47:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
        %48:i32 = load %47
        %49:array<i32, 2> = construct %46, %48
        store %indexable, %49
        %50:i32 = load %a
        %51:ptr<function, i32, read_write> = access %indexable, %x_93
        %52:i32 = load %51
        %53:i32 = add %50, %52
        store %a, %53
        continue %b14
      }
      %b14 = block {  # continuing
        %54:i32 = load %i_2
        %55:i32 = add %54, 1i
        store %i_2, %55
        next_iteration %b13
      }
    }
    %56:i32 = load %a
    %57:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %58:i32 = load %57
    %59:bool = eq %56, %58
    if %59 [t: %b17] {  # if_6
      %b17 = block {  # true
        %60:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
        %61:i32 = load %60
        %62:f32 = convert %61
        %63:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
        %64:i32 = load %63
        %65:f32 = convert %64
        %66:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
        %67:i32 = load %66
        %68:f32 = convert %67
        %69:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
        %70:i32 = load %69
        %71:f32 = convert %70
        %72:vec4<f32> = construct %62, %65, %68, %71
        store %x_GLF_color, %72
        exit_if  # if_6
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b18 {
  %b18 = block {
    %74:void = call %main_1
    %75:vec4<f32> = load %x_GLF_color
    %76:main_out = construct %75
    ret %76
  }
}

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