SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 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: {  # 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: {
    %i:ptr<function, i32, read_write> = var
    %6:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
    %7:i32 = load %6
    store %i, %7
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %8:i32 = load %i
        %9:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
        %10:i32 = load %9
        %11:bool = lt %8, %10
        if %11 [t: $B5, f: $B6] {  # if_1
          $B5: {  # true
            exit_if  # if_1
          }
          $B6: {  # false
            exit_loop  # loop_1
          }
        }
        %12:i32 = load %i
        %13:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
        %14:i32 = load %13
        %15:bool = gt %12, %14
        if %15 [t: $B7] {  # if_2
          $B7: {  # true
            %16:i32 = load %a
            %x_21:i32 = let %16
            ret %x_21
          }
        }
        continue  # -> $B4
      }
      $B4: {  # continuing
        %18:i32 = load %i
        %19:i32 = add %18, 1i
        store %i, %19
        next_iteration  # -> $B3
      }
    }
    %20:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
    %21:i32 = load %20
    %x_24:i32 = let %21
    ret %x_24
  }
}
%main_1 = func():void {
  $B8: {
    %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
    %30:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
    %31:i32 = load %30
    %x_25:i32 = let %31
    %33:ptr<function, i32, read_write> = access %r, %x_25
    %34:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
    %35:i32 = load %34
    store %33, %35
    %36:ptr<uniform, i32, read> = access %x_8, 0u, 11i, 0u
    %37:i32 = load %36
    %x_27:i32 = let %37
    %39:ptr<function, i32, read_write> = access %r, %x_27
    %40:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
    %41:i32 = load %40
    store %39, %41
    %42:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
    %43:i32 = load %42
    %x_29:i32 = let %43
    %45:ptr<function, i32, read_write> = access %r, %x_29
    %46:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
    %47:i32 = load %46
    store %45, %47
    %48:ptr<uniform, i32, read> = access %x_8, 0u, 2i, 0u
    %49:i32 = load %48
    %x_31:i32 = let %49
    %51:ptr<function, i32, read_write> = access %r, %x_31
    %52:ptr<uniform, i32, read> = access %x_8, 0u, 4i, 0u
    %53:i32 = load %52
    store %51, %53
    %54:ptr<uniform, i32, read> = access %x_8, 0u, 3i, 0u
    %55:i32 = load %54
    %x_33:i32 = let %55
    %57:ptr<function, i32, read_write> = access %r, %x_33
    %58:ptr<uniform, i32, read> = access %x_8, 0u, 5i, 0u
    %59:i32 = load %58
    store %57, %59
    %60:ptr<uniform, i32, read> = access %x_8, 0u, 4i, 0u
    %61:i32 = load %60
    %x_35:i32 = let %61
    %63:ptr<function, i32, read_write> = access %r, %x_35
    %64:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
    %65:i32 = load %64
    store %63, %65
    %66:ptr<uniform, i32, read> = access %x_8, 0u, 5i, 0u
    %67:i32 = load %66
    %x_37:i32 = let %67
    %69:ptr<function, i32, read_write> = access %r, %x_37
    %70:ptr<uniform, i32, read> = access %x_8, 0u, 7i, 0u
    %71:i32 = load %70
    store %69, %71
    %72:ptr<uniform, i32, read> = access %x_8, 0u, 8i, 0u
    %73:i32 = load %72
    %x_39:i32 = let %73
    %75:ptr<function, i32, read_write> = access %r, %x_39
    %76:ptr<uniform, i32, read> = access %x_8, 0u, 8i, 0u
    %77:i32 = load %76
    store %75, %77
    %78:ptr<uniform, i32, read> = access %x_8, 0u, 9i, 0u
    %79:i32 = load %78
    %x_41:i32 = let %79
    %81:ptr<function, i32, read_write> = access %r, %x_41
    %82:ptr<uniform, i32, read> = access %x_8, 0u, 9i, 0u
    %83:i32 = load %82
    store %81, %83
    %84:ptr<uniform, i32, read> = access %x_8, 0u, 10i, 0u
    %85:i32 = load %84
    %x_43:i32 = let %85
    %87:ptr<function, i32, read_write> = access %r, %x_43
    %88:ptr<uniform, i32, read> = access %x_8, 0u, 10i, 0u
    %89:i32 = load %88
    store %87, %89
    %90:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
    %91:i32 = load %90
    store %i_1, %91
    loop [b: $B9, c: $B10] {  # loop_2
      $B9: {  # body
        %92:i32 = load %i_1
        %93:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
        %94:i32 = load %93
        %95:bool = lt %92, %94
        if %95 [t: $B11, f: $B12] {  # if_3
          $B11: {  # true
            exit_if  # if_3
          }
          $B12: {  # false
            exit_loop  # loop_2
          }
        }
        %96:i32 = load %i_1
        %x_48:i32 = let %96
        %98:ptr<function, i32, read_write> = access %a_1, %x_48
        %99:i32 = load %i_1
        store %98, %99
        %100:i32 = load %i_1
        %101:i32 = let %100
        %102:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
        %103:i32 = load %102
        %104:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
        %105:i32 = load %104
        %106:i32 = call %tint_div_i32, %103, %105
        %108:bool = lt %101, %106
        if %108 [t: $B13, f: $B14] {  # if_4
          $B13: {  # true
            %109:i32 = load %i_1
            %x_54:i32 = let %109
            %111:ptr<function, i32, read_write> = access %a_1, %x_54
            %112:i32 = load %i_1
            %113:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
            %114:i32 = load %113
            %115:i32 = add %112, %114
            store %111, %115
            %116:i32 = load %i_1
            %117:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
            %118:i32 = load %117
            %119:bool = lt %116, %118
            if %119 [t: $B15] {  # if_5
              $B15: {  # true
                continue  # -> $B10
              }
            }
            %120:i32 = load %i_1
            %x_60:i32 = let %120
            %122:ptr<function, i32, read_write> = access %a_1, %x_60
            %123:i32 = load %i_1
            %124:ptr<uniform, i32, read> = access %x_8, 0u, 8i, 0u
            %125:i32 = load %124
            %126:i32 = add %123, %125
            store %122, %126
            %127:i32 = load %i_1
            %128:ptr<function, i32, read_write> = access %a_1, %127
            %129:i32 = load %128
            store %param, %129
            %130:i32 = call %f_i1_, %param
            %x_66:i32 = let %130
            %132:ptr<uniform, i32, read> = access %x_8, 0u, 8i, 0u
            %133:i32 = load %132
            %134:bool = lt %x_66, %133
            if %134 [t: $B16] {  # if_6
              $B16: {  # true
                %135:i32 = load %i_1
                %x_68:i32 = let %135
                %x_182_save:i32 = let %x_68
                %138:ptr<function, i32, read_write> = access %a_1, %x_182_save
                %139:ptr<function, i32, read_write> = access %a_1, %x_68
                %140:i32 = load %139
                %141:i32 = sub %140, 1i
                store %138, %141
                exit_if  # if_6
              }
            }
            exit_if  # if_4
          }
          $B14: {  # false
            %142:i32 = load %i_1
            %143:ptr<function, i32, read_write> = access %a_1, %142
            %144:i32 = load %143
            store %param_1, %144
            %145:i32 = call %f_i1_, %param_1
            %x_73:i32 = let %145
            %147:ptr<uniform, i32, read> = access %x_8, 0u, 8i, 0u
            %148:i32 = load %147
            %149:bool = lt %x_73, %148
            if %149 [t: $B17] {  # if_7
              $B17: {  # true
                %150:i32 = load %i_1
                %x_75:i32 = let %150
                %152:ptr<function, i32, read_write> = access %a_1, %x_75
                %153:i32 = load %i_1
                %154:ptr<function, i32, read_write> = access %a_1, %153
                %155:i32 = load %154
                %156:ptr<uniform, i32, read> = access %x_8, 0u, 4i, 0u
                %157:i32 = load %156
                %158:i32 = add %155, %157
                store %152, %158
                exit_if  # if_7
              }
            }
            exit_if  # if_4
          }
        }
        continue  # -> $B10
      }
      $B10: {  # continuing
        %159:i32 = load %i_1
        %160:i32 = add %159, 1i
        store %i_1, %160
        next_iteration  # -> $B9
      }
    }
    %161:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
    %162:i32 = load %161
    store %i_2, %162
    loop [b: $B18, c: $B19] {  # loop_3
      $B18: {  # body
        %163:i32 = load %i_2
        %164:ptr<uniform, i32, read> = access %x_8, 0u, 6i, 0u
        %165:i32 = load %164
        %166:bool = lt %163, %165
        if %166 [t: $B20, f: $B21] {  # if_8
          $B20: {  # true
            exit_if  # if_8
          }
          $B21: {  # false
            exit_loop  # loop_3
          }
        }
        %167:i32 = load %i_2
        %168:ptr<function, i32, read_write> = access %a_1, %167
        %169:i32 = load %168
        %170:i32 = load %i_2
        %171:ptr<function, i32, read_write> = access %r, %170
        %172:i32 = load %171
        %173:bool = neq %169, %172
        if %173 [t: $B22] {  # if_9
          $B22: {  # true
            %174:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
            %175:i32 = load %174
            %176:f32 = convert %175
            %177:vec4<f32> = construct %176
            store %x_GLF_color, %177
            ret
          }
        }
        continue  # -> $B19
      }
      $B19: {  # continuing
        %178:i32 = load %i_2
        %179:i32 = add %178, 1i
        store %i_2, %179
        next_iteration  # -> $B18
      }
    }
    %180:ptr<uniform, i32, read> = access %x_8, 0u, 11i, 0u
    %181:i32 = load %180
    %182:f32 = convert %181
    %183:f32 = let %182
    %184:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
    %185:i32 = load %184
    %186:f32 = convert %185
    %187:f32 = let %186
    %188:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
    %189:i32 = load %188
    %190:f32 = convert %189
    %191:f32 = let %190
    %192:ptr<uniform, i32, read> = access %x_8, 0u, 11i, 0u
    %193:i32 = load %192
    %194:f32 = convert %193
    %195:vec4<f32> = construct %183, %187, %191, %194
    store %x_GLF_color, %195
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B23: {
    %197:void = call %main_1
    %198:vec4<f32> = load %x_GLF_color
    %199:main_out = construct %198
    ret %199
  }
}
%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
  $B24: {
    %202:bool = eq %rhs, 0i
    %203:bool = eq %lhs, -2147483648i
    %204:bool = eq %rhs, -1i
    %205:bool = and %203, %204
    %206:bool = or %202, %205
    %207:i32 = select %rhs, 1i, %206
    %208:i32 = div %lhs, %207
    ret %208
  }
}

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