SKIP: FAILED

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

buf1 = struct @align(4) {
  x_GLF_uniform_int_values:array<strided_arr, 4> @offset(0)
}

strided_arr_1 = struct @align(4) {
  el:f32 @offset(0)
}

buf0 = struct @align(4) {
  x_GLF_uniform_float_values:array<strided_arr_1, 3> @offset(0)
}

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

%b1 = block {  # root
  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
  %x_8: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 {
    %sums:ptr<function, array<f32, 2>, read_write> = var
    %a:ptr<function, i32, read_write> = var
    %b:ptr<function, i32, read_write> = var
    %c:ptr<function, i32, read_write> = var
    %d:ptr<function, i32, read_write> = var
    %indexable:ptr<function, mat2x2<f32>, read_write> = var
    %indexable_1:ptr<function, mat2x2<f32>, read_write> = var
    %x_158:ptr<function, bool, read_write> = var
    %x_159:ptr<function, bool, read_write> = var
    %14:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %x_16:i32 = load %14
    %16:ptr<function, f32, read_write> = access %sums, %x_16
    %17:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
    %18:f32 = load %17
    %19:f32 = negation %18
    store %16, %19
    %20:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %x_18:i32 = load %20
    %22:ptr<function, f32, read_write> = access %sums, %x_18
    %23:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
    %24:f32 = load %23
    %25:f32 = negation %24
    store %22, %25
    %26:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %27:i32 = load %26
    store %a, %27
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %28:i32 = load %a
        %29:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %30:i32 = load %29
        %31:bool = lt %28, %30
        if %31 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        %32:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %33:i32 = load %32
        store %b, %33
        loop [b: %b7, c: %b8] {  # loop_2
          %b7 = block {  # body
            %34:i32 = load %b
            %35:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
            %36:i32 = load %35
            %37:bool = lt %34, %36
            if %37 [t: %b9, f: %b10] {  # if_2
              %b9 = block {  # true
                exit_if  # if_2
              }
              %b10 = block {  # false
                exit_loop  # loop_2
              }
            }
            %38:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
            %39:i32 = load %38
            store %c, %39
            loop [b: %b11, c: %b12] {  # loop_3
              %b11 = block {  # body
                %40:i32 = load %c
                %41:i32 = load %a
                %42:bool = lte %40, %41
                if %42 [t: %b13, f: %b14] {  # if_3
                  %b13 = block {  # true
                    exit_if  # if_3
                  }
                  %b14 = block {  # false
                    exit_loop  # loop_3
                  }
                }
                %43:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
                %44:i32 = load %43
                store %d, %44
                loop [b: %b15, c: %b16] {  # loop_4
                  %b15 = block {  # body
                    %45:i32 = load %d
                    %46:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
                    %47:i32 = load %46
                    %48:bool = lt %45, %47
                    if %48 [t: %b17, f: %b18] {  # if_4
                      %b17 = block {  # true
                        exit_if  # if_4
                      }
                      %b18 = block {  # false
                        exit_loop  # loop_4
                      }
                    }
                    %x_31:i32 = load %a
                    %50:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
                    %51:i32 = load %50
                    %x_125:f32 = convert %51
                    %x_33:i32 = load %c
                    %54:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
                    %x_34:i32 = load %54
                    %56:vec2<f32> = construct %x_125, 0.0f
                    %57:vec2<f32> = construct 0.0f, %x_125
                    %58:mat2x2<f32> = construct %56, %57
                    store %indexable, %58
                    %59:ptr<function, f32, read_write> = access %sums, %x_31
                    %60:ptr<function, vec2<f32>, read_write> = access %indexable, %x_33
                    %61:f32 = load_vector_element %60, %x_34
                    store %59, %61
                    %x_35:i32 = load %a
                    %63:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
                    %64:i32 = load %63
                    %x_134:f32 = convert %64
                    %x_37:i32 = load %c
                    %67:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
                    %x_38:i32 = load %67
                    %69:vec2<f32> = construct %x_134, 0.0f
                    %70:vec2<f32> = construct 0.0f, %x_134
                    %71:mat2x2<f32> = construct %69, %70
                    store %indexable_1, %71
                    %72:ptr<function, f32, read_write> = access %sums, %x_35
                    %73:ptr<function, f32, read_write> = access %sums, %x_35
                    %74:f32 = load %73
                    %75:ptr<function, vec2<f32>, read_write> = access %indexable_1, %x_37
                    %76:f32 = load_vector_element %75, %x_38
                    %77:f32 = add %74, %76
                    store %72, %77
                    continue %b16
                  }
                  %b16 = block {  # continuing
                    %78:i32 = load %d
                    %79:i32 = add %78, 1i
                    store %d, %79
                    next_iteration %b15
                  }
                }
                continue %b12
              }
              %b12 = block {  # continuing
                %80:i32 = load %c
                %81:i32 = add %80, 1i
                store %c, %81
                next_iteration %b11
              }
            }
            continue %b8
          }
          %b8 = block {  # continuing
            %82:i32 = load %b
            %83:i32 = add %82, 1i
            store %b, %83
            next_iteration %b7
          }
        }
        continue %b4
      }
      %b4 = block {  # continuing
        %84:i32 = load %a
        %85:i32 = add %84, 1i
        store %a, %85
        next_iteration %b3
      }
    }
    %86:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %87:i32 = load %86
    %88:ptr<function, f32, read_write> = access %sums, %87
    %89:f32 = load %88
    %90:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
    %91:f32 = load %90
    %x_150:bool = eq %89, %91
    store %x_159, %x_150
    if %x_150 [t: %b19] {  # if_5
      %b19 = block {  # true
        %93:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
        %94:i32 = load %93
        %95:ptr<function, f32, read_write> = access %sums, %94
        %96:f32 = load %95
        %97:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
        %98:f32 = load %97
        %99:bool = eq %96, %98
        store %x_158, %99
        %100:bool = load %x_158
        store %x_159, %100
        exit_if  # if_5
      }
    }
    %101:bool = load %x_159
    if %101 [t: %b20, f: %b21] {  # if_6
      %b20 = block {  # true
        %102:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
        %103:i32 = load %102
        %104:f32 = convert %103
        %105:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %106:i32 = load %105
        %107:f32 = convert %106
        %108:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %109:i32 = load %108
        %110:f32 = convert %109
        %111:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
        %112:i32 = load %111
        %113:f32 = convert %112
        %114:vec4<f32> = construct %104, %107, %110, %113
        store %x_GLF_color, %114
        exit_if  # if_6
      }
      %b21 = block {  # false
        %115:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %116:i32 = load %115
        %117:f32 = convert %116
        %118:vec4<f32> = construct %117
        store %x_GLF_color, %118
        exit_if  # if_6
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b22 {
  %b22 = block {
    %120:void = call %main_1
    %121:vec4<f32> = load %x_GLF_color
    %122:main_out = construct %121
    ret %122
  }
}

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