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, 12> @offset(0)
}

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

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

%f_i1_ = func(%a:ptr<function, i32, read_write>):i32 -> %b2 {
  %b2 = block {
    %i:ptr<function, i32, read_write> = var
    %6:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
    %x_16:i32 = load %6
    store %i, %x_16
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %x_17:i32 = load %i
        %9:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
        %x_18:i32 = load %9
        %11:bool = lt %x_17, %x_18
        if %11 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        %x_19:i32 = load %i
        %13:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
        %x_20:i32 = load %13
        %15:bool = gt %x_19, %x_20
        if %15 [t: %b7] {  # if_2
          %b7 = block {  # true
            %x_21:i32 = load %a
            ret %x_21
          }
        }
        continue %b4
      }
      %b4 = block {  # continuing
        %x_22:i32 = load %i
        %18:i32 = add %x_22, 1i
        store %i, %18
        next_iteration %b3
      }
    }
    %19:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
    %x_24:i32 = load %19
    ret %x_24
  }
}
%main_1 = func():void -> %b8 {
  %b8 = block {
    %r:ptr<function, array<i32, 10>, read_write> = var
    %i_1:ptr<function, i32, read_write> = var
    %a_1:ptr<function, array<i32, 10>, read_write> = var
    %param:ptr<function, i32, read_write> = var
    %param_1:ptr<function, i32, read_write> = var
    %i_2:ptr<function, i32, read_write> = var
    %28:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
    %x_25:i32 = load %28
    %30:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
    %x_26:i32 = load %30
    %32:ptr<function, i32, read_write> = access %r, %x_25
    store %32, %x_26
    %33:ptr<uniform, i32, read> = access %x_8, 0u, 11i, 0u
    %x_27:i32 = load %33
    %35:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
    %x_28:i32 = load %35
    %37:ptr<function, i32, read_write> = access %r, %x_27
    store %37, %x_28
    %38:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
    %x_29:i32 = load %38
    %40:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
    %x_30:i32 = load %40
    %42:ptr<function, i32, read_write> = access %r, %x_29
    store %42, %x_30
    %43:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
    %x_31:i32 = load %43
    %45:ptr<uniform, i32, read> = access %x_8, 0u, 4i, 0u
    %x_32:i32 = load %45
    %47:ptr<function, i32, read_write> = access %r, %x_31
    store %47, %x_32
    %48:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
    %x_33:i32 = load %48
    %50:ptr<uniform, i32, read> = access %x_8, 0u, 5i, 0u
    %x_34:i32 = load %50
    %52:ptr<function, i32, read_write> = access %r, %x_33
    store %52, %x_34
    %53:ptr<uniform, i32, read> = access %x_8, 0u, 4i, 0u
    %x_35:i32 = load %53
    %55:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
    %x_36:i32 = load %55
    %57:ptr<function, i32, read_write> = access %r, %x_35
    store %57, %x_36
    %58:ptr<uniform, i32, read> = access %x_8, 0u, 5i, 0u
    %x_37:i32 = load %58
    %60:ptr<uniform, i32, read> = access %x_8, 0u, 7i, 0u
    %x_38:i32 = load %60
    %62:ptr<function, i32, read_write> = access %r, %x_37
    store %62, %x_38
    %63:ptr<uniform, i32, read> = access %x_8, 0u, 8i, 0u
    %x_39:i32 = load %63
    %65:ptr<uniform, i32, read> = access %x_8, 0u, 8i, 0u
    %x_40:i32 = load %65
    %67:ptr<function, i32, read_write> = access %r, %x_39
    store %67, %x_40
    %68:ptr<uniform, i32, read> = access %x_8, 0u, 9i, 0u
    %x_41:i32 = load %68
    %70:ptr<uniform, i32, read> = access %x_8, 0u, 9i, 0u
    %x_42:i32 = load %70
    %72:ptr<function, i32, read_write> = access %r, %x_41
    store %72, %x_42
    %73:ptr<uniform, i32, read> = access %x_8, 0u, 10i, 0u
    %x_43:i32 = load %73
    %75:ptr<uniform, i32, read> = access %x_8, 0u, 10i, 0u
    %x_44:i32 = load %75
    %77:ptr<function, i32, read_write> = access %r, %x_43
    store %77, %x_44
    %78:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
    %x_45:i32 = load %78
    store %i_1, %x_45
    loop [b: %b9, c: %b10] {  # loop_2
      %b9 = block {  # body
        %x_46:i32 = load %i_1
        %81:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
        %x_47:i32 = load %81
        %83:bool = lt %x_46, %x_47
        if %83 [t: %b11, f: %b12] {  # if_3
          %b11 = block {  # true
            exit_if  # if_3
          }
          %b12 = block {  # false
            exit_loop  # loop_2
          }
        }
        %x_48:i32 = load %i_1
        %x_49:i32 = load %i_1
        %86:ptr<function, i32, read_write> = access %a_1, %x_48
        store %86, %x_49
        %x_50:i32 = load %i_1
        %88:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
        %x_51:i32 = load %88
        %90:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
        %x_52:i32 = load %90
        %92:i32 = div %x_51, %x_52
        %93:bool = lt %x_50, %92
        if %93 [t: %b13, f: %b14] {  # if_4
          %b13 = block {  # true
            %x_54:i32 = load %i_1
            %x_55:i32 = load %i_1
            %96:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
            %x_56:i32 = load %96
            %98:ptr<function, i32, read_write> = access %a_1, %x_54
            %99:i32 = add %x_55, %x_56
            store %98, %99
            %x_58:i32 = load %i_1
            %101:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
            %x_59:i32 = load %101
            %103:bool = lt %x_58, %x_59
            if %103 [t: %b15] {  # if_5
              %b15 = block {  # true
                continue %b10
              }
            }
            %x_60:i32 = load %i_1
            %x_61:i32 = load %i_1
            %106:ptr<uniform, i32, read> = access %x_8, 0u, 8i, 0u
            %x_62:i32 = load %106
            %108:ptr<function, i32, read_write> = access %a_1, %x_60
            %109:i32 = add %x_61, %x_62
            store %108, %109
            %x_64:i32 = load %i_1
            %111:ptr<function, i32, read_write> = access %a_1, %x_64
            %x_65:i32 = load %111
            store %param, %x_65
            %x_66:i32 = call %f_i1_, %param
            %114:ptr<uniform, i32, read> = access %x_8, 0u, 8i, 0u
            %x_67:i32 = load %114
            %116:bool = lt %x_66, %x_67
            if %116 [t: %b16] {  # if_6
              %b16 = block {  # true
                %x_68:i32 = load %i_1
                %x_182_save:i32 = let %x_68
                %119:ptr<function, i32, read_write> = access %a_1, %x_182_save
                %x_69:i32 = load %119
                %121:ptr<function, i32, read_write> = access %a_1, %x_182_save
                %122:i32 = sub %x_69, 1i
                store %121, %122
                exit_if  # if_6
              }
            }
            exit_if  # if_4
          }
          %b14 = block {  # false
            %x_71:i32 = load %i_1
            %124:ptr<function, i32, read_write> = access %a_1, %x_71
            %x_72:i32 = load %124
            store %param_1, %x_72
            %x_73:i32 = call %f_i1_, %param_1
            %127:ptr<uniform, i32, read> = access %x_8, 0u, 8i, 0u
            %x_74:i32 = load %127
            %129:bool = lt %x_73, %x_74
            if %129 [t: %b17] {  # if_7
              %b17 = block {  # true
                %x_75:i32 = load %i_1
                %131:ptr<uniform, i32, read> = access %x_8, 0u, 4i, 0u
                %x_76:i32 = load %131
                %133:ptr<function, i32, read_write> = access %a_1, %x_75
                %x_77:i32 = load %133
                %135:ptr<function, i32, read_write> = access %a_1, %x_75
                %136:i32 = add %x_77, %x_76
                store %135, %136
                exit_if  # if_7
              }
            }
            exit_if  # if_4
          }
        }
        continue %b10
      }
      %b10 = block {  # continuing
        %x_79:i32 = load %i_1
        %138:i32 = add %x_79, 1i
        store %i_1, %138
        next_iteration %b9
      }
    }
    %139:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
    %x_81:i32 = load %139
    store %i_2, %x_81
    loop [b: %b18, c: %b19] {  # loop_3
      %b18 = block {  # body
        %x_82:i32 = load %i_2
        %142:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
        %x_83:i32 = load %142
        %144:bool = lt %x_82, %x_83
        if %144 [t: %b20, f: %b21] {  # if_8
          %b20 = block {  # true
            exit_if  # if_8
          }
          %b21 = block {  # false
            exit_loop  # loop_3
          }
        }
        %x_84:i32 = load %i_2
        %146:ptr<function, i32, read_write> = access %a_1, %x_84
        %x_85:i32 = load %146
        %x_86:i32 = load %i_2
        %149:ptr<function, i32, read_write> = access %r, %x_86
        %x_87:i32 = load %149
        %151:bool = neq %x_85, %x_87
        if %151 [t: %b22] {  # if_9
          %b22 = block {  # true
            %152:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
            %x_88:i32 = load %152
            %x_205:f32 = convert %x_88
            %155:vec4<f32> = construct %x_205, %x_205, %x_205, %x_205
            store %x_GLF_color, %155
            ret
          }
        }
        continue %b19
      }
      %b19 = block {  # continuing
        %x_89:i32 = load %i_2
        %157:i32 = add %x_89, 1i
        store %i_2, %157
        next_iteration %b18
      }
    }
    %158:ptr<uniform, i32, read> = access %x_8, 0u, 11i, 0u
    %x_91:i32 = load %158
    %160:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
    %x_92:i32 = load %160
    %162:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
    %x_93:i32 = load %162
    %164:ptr<uniform, i32, read> = access %x_8, 0u, 11i, 0u
    %x_94:i32 = load %164
    %166:f32 = convert %x_91
    %167:f32 = convert %x_92
    %168:f32 = convert %x_93
    %169:f32 = convert %x_94
    %170:vec4<f32> = construct %166, %167, %168, %169
    store %x_GLF_color, %170
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b23 {
  %b23 = block {
    %172:void = call %main_1
    %173:vec4<f32> = load %x_GLF_color
    %174:main_out = construct %173
    ret %174
  }
}

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