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

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

buf1 = 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, buf0, read> = var @binding_point(0, 0)
  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
  %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
    %e:ptr<function, i32, read_write> = var
    %f:ptr<function, i32, read_write> = var
    %g:ptr<function, i32, read_write> = var
    %h:ptr<function, i32, read_write> = var
    %i:ptr<function, i32, read_write> = var
    %j:ptr<function, i32, read_write> = var
    %x_215:ptr<function, bool, read_write> = var
    %x_216_phi:ptr<function, bool, read_write> = var
    %18:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %x_20:i32 = load %18
    %20:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
    %x_110:f32 = load %20
    %22:ptr<function, f32, read_write> = access %sums, %x_20
    store %22, %x_110
    %23:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %x_22:i32 = load %23
    %25:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
    %x_114:f32 = load %25
    %27:ptr<function, f32, read_write> = access %sums, %x_22
    store %27, %x_114
    %28:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %x_23:i32 = load %28
    store %a, %x_23
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %x_24:i32 = load %a
        %31:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %x_25:i32 = load %31
        %33:bool = lt %x_24, %x_25
        if %33 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        %34:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
        %x_26:i32 = load %34
        store %b, %x_26
        loop [b: %b7, c: %b8] {  # loop_2
          %b7 = block {  # body
            %x_27:i32 = load %b
            %37:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
            %x_28:i32 = load %37
            %39:bool = lt %x_27, %x_28
            if %39 [t: %b9, f: %b10] {  # if_2
              %b9 = block {  # true
                exit_if  # if_2
              }
              %b10 = block {  # false
                exit_loop  # loop_2
              }
            }
            %40:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
            %x_29:i32 = load %40
            store %c, %x_29
            loop [b: %b11, c: %b12] {  # loop_3
              %b11 = block {  # body
                %x_30:i32 = load %c
                %43:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
                %x_31:i32 = load %43
                %45:bool = lte %x_30, %x_31
                if %45 [t: %b13, f: %b14] {  # if_3
                  %b13 = block {  # true
                    exit_if  # if_3
                  }
                  %b14 = block {  # false
                    exit_loop  # loop_3
                  }
                }
                %46:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
                %x_32:i32 = load %46
                store %d, %x_32
                loop [b: %b15, c: %b16] {  # loop_4
                  %b15 = block {  # body
                    %x_33:i32 = load %d
                    %49:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
                    %x_34:i32 = load %49
                    %51:bool = lt %x_33, %x_34
                    if %51 [t: %b17, f: %b18] {  # if_4
                      %b17 = block {  # true
                        exit_if  # if_4
                      }
                      %b18 = block {  # false
                        exit_loop  # loop_4
                      }
                    }
                    %52:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
                    %x_35:i32 = load %52
                    store %e, %x_35
                    loop [b: %b19, c: %b20] {  # loop_5
                      %b19 = block {  # body
                        %x_36:i32 = load %e
                        %55:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
                        %x_37:i32 = load %55
                        %57:bool = lte %x_36, %x_37
                        if %57 [t: %b21, f: %b22] {  # if_5
                          %b21 = block {  # true
                            exit_if  # if_5
                          }
                          %b22 = block {  # false
                            exit_loop  # loop_5
                          }
                        }
                        %58:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
                        %x_38:i32 = load %58
                        store %f, %x_38
                        loop [b: %b23, c: %b24] {  # loop_6
                          %b23 = block {  # body
                            %x_39:i32 = load %f
                            %61:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
                            %x_40:i32 = load %61
                            %63:bool = lt %x_39, %x_40
                            if %63 [t: %b25, f: %b26] {  # if_6
                              %b25 = block {  # true
                                exit_if  # if_6
                              }
                              %b26 = block {  # false
                                exit_loop  # loop_6
                              }
                            }
                            %64:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
                            %x_41:i32 = load %64
                            store %g, %x_41
                            loop [b: %b27, c: %b28] {  # loop_7
                              %b27 = block {  # body
                                %x_42:i32 = load %g
                                %67:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
                                %x_43:i32 = load %67
                                %69:bool = lt %x_42, %x_43
                                if %69 [t: %b29, f: %b30] {  # if_7
                                  %b29 = block {  # true
                                    exit_if  # if_7
                                  }
                                  %b30 = block {  # false
                                    exit_loop  # loop_7
                                  }
                                }
                                %70:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
                                %x_44:i32 = load %70
                                store %h, %x_44
                                loop [b: %b31, c: %b32] {  # loop_8
                                  %b31 = block {  # body
                                    %x_45:i32 = load %h
                                    %73:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
                                    %x_46:i32 = load %73
                                    %75:bool = lt %x_45, %x_46
                                    if %75 [t: %b33, f: %b34] {  # if_8
                                      %b33 = block {  # true
                                        exit_if  # if_8
                                      }
                                      %b34 = block {  # false
                                        exit_loop  # loop_8
                                      }
                                    }
                                    %76:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
                                    %x_47:i32 = load %76
                                    store %i, %x_47
                                    loop [b: %b35, c: %b36] {  # loop_9
                                      %b35 = block {  # body
                                        %x_48:i32 = load %i
                                        %79:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
                                        %x_49:i32 = load %79
                                        %81:bool = lt %x_48, %x_49
                                        if %81 [t: %b37, f: %b38] {  # if_9
                                          %b37 = block {  # true
                                            exit_if  # if_9
                                          }
                                          %b38 = block {  # false
                                            exit_loop  # loop_9
                                          }
                                        }
                                        %82:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
                                        %x_50:i32 = load %82
                                        store %j, %x_50
                                        loop [b: %b39, c: %b40] {  # loop_10
                                          %b39 = block {  # body
                                            %x_51:i32 = load %j
                                            %85:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
                                            %x_52:i32 = load %85
                                            %87:bool = gt %x_51, %x_52
                                            if %87 [t: %b41, f: %b42] {  # if_10
                                              %b41 = block {  # true
                                                exit_if  # if_10
                                              }
                                              %b42 = block {  # false
                                                exit_loop  # loop_10
                                              }
                                            }
                                            %x_53:i32 = load %a
                                            %89:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
                                            %x_197:f32 = load %89
                                            %91:ptr<function, f32, read_write> = access %sums, %x_53
                                            %x_199:f32 = load %91
                                            %93:ptr<function, f32, read_write> = access %sums, %x_53
                                            %94:f32 = add %x_199, %x_197
                                            store %93, %94
                                            continue %b40
                                          }
                                          %b40 = block {  # continuing
                                            %x_54:i32 = load %j
                                            %96:i32 = sub %x_54, 1i
                                            store %j, %96
                                            next_iteration %b39
                                          }
                                        }
                                        continue %b36
                                      }
                                      %b36 = block {  # continuing
                                        %x_56:i32 = load %i
                                        %98:i32 = add %x_56, 1i
                                        store %i, %98
                                        next_iteration %b35
                                      }
                                    }
                                    continue %b32
                                  }
                                  %b32 = block {  # continuing
                                    %x_58:i32 = load %h
                                    %100:i32 = add %x_58, 1i
                                    store %h, %100
                                    next_iteration %b31
                                  }
                                }
                                continue %b28
                              }
                              %b28 = block {  # continuing
                                %x_60:i32 = load %g
                                %102:i32 = add %x_60, 1i
                                store %g, %102
                                next_iteration %b27
                              }
                            }
                            continue %b24
                          }
                          %b24 = block {  # continuing
                            %x_62:i32 = load %f
                            %104:i32 = add %x_62, 1i
                            store %f, %104
                            next_iteration %b23
                          }
                        }
                        continue %b20
                      }
                      %b20 = block {  # continuing
                        %x_64:i32 = load %e
                        %106:i32 = add %x_64, 1i
                        store %e, %106
                        next_iteration %b19
                      }
                    }
                    continue %b16
                  }
                  %b16 = block {  # continuing
                    %x_66:i32 = load %d
                    %108:i32 = add %x_66, 1i
                    store %d, %108
                    next_iteration %b15
                  }
                }
                continue %b12
              }
              %b12 = block {  # continuing
                %x_68:i32 = load %c
                %110:i32 = add %x_68, 1i
                store %c, %110
                next_iteration %b11
              }
            }
            continue %b8
          }
          %b8 = block {  # continuing
            %x_70:i32 = load %b
            %112:i32 = add %x_70, 1i
            store %b, %112
            next_iteration %b7
          }
        }
        continue %b4
      }
      %b4 = block {  # continuing
        %x_72:i32 = load %a
        %114:i32 = add %x_72, 1i
        store %a, %114
        next_iteration %b3
      }
    }
    %115:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %x_74:i32 = load %115
    %117:ptr<function, f32, read_write> = access %sums, %x_74
    %x_204:f32 = load %117
    %119:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
    %x_206:f32 = load %119
    %x_207:bool = eq %x_204, %x_206
    store %x_216_phi, %x_207
    if %x_207 [t: %b43] {  # if_11
      %b43 = block {  # true
        %122:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
        %x_75:i32 = load %122
        %124:ptr<function, f32, read_write> = access %sums, %x_75
        %x_212:f32 = load %124
        %126:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
        %x_214:f32 = load %126
        %128:bool = eq %x_212, %x_214
        store %x_215, %128
        %129:bool = load %x_215
        store %x_216_phi, %129
        exit_if  # if_11
      }
    }
    %x_216:bool = load %x_216_phi
    if %x_216 [t: %b44, f: %b45] {  # if_12
      %b44 = block {  # true
        %131:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
        %x_76:i32 = load %131
        %133:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %x_77:i32 = load %133
        %135:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %x_78:i32 = load %135
        %137:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
        %x_79:i32 = load %137
        %139:f32 = convert %x_76
        %140:f32 = convert %x_77
        %141:f32 = convert %x_78
        %142:f32 = convert %x_79
        %143:vec4<f32> = construct %139, %140, %141, %142
        store %x_GLF_color, %143
        exit_if  # if_12
      }
      %b45 = block {  # false
        %144:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %x_80:i32 = load %144
        %x_230:f32 = convert %x_80
        %147:vec4<f32> = construct %x_230, %x_230, %x_230, %x_230
        store %x_GLF_color, %147
        exit_if  # if_12
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b46 {
  %b46 = block {
    %149:void = call %main_1
    %150:vec4<f32> = load %x_GLF_color
    %151:main_out = construct %150
    ret %151
  }
}

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