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, 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: {  # 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: {
    %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:ptr<function, bool, read_write> = var
    %18:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %19:i32 = load %18
    %x_20:i32 = let %19
    %21:ptr<function, f32, read_write> = access %sums, %x_20
    %22:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
    %23:f32 = load %22
    store %21, %23
    %24:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %25:i32 = load %24
    %x_22:i32 = let %25
    %27:ptr<function, f32, read_write> = access %sums, %x_22
    %28:ptr<uniform, f32, read> = access %x_8, 0u, 0i, 0u
    %29:f32 = load %28
    store %27, %29
    %30:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %31:i32 = load %30
    store %a, %31
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %32:i32 = load %a
        %33:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %34:i32 = load %33
        %35:bool = lt %32, %34
        if %35 [t: $B5, f: $B6] {  # if_1
          $B5: {  # true
            exit_if  # if_1
          }
          $B6: {  # false
            exit_loop  # loop_1
          }
        }
        %36:ptr<uniform, i32, read> = access %x_6, 0u, 5i, 0u
        %37:i32 = load %36
        store %b, %37
        loop [b: $B7, c: $B8] {  # loop_2
          $B7: {  # body
            %38:i32 = load %b
            %39:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
            %40:i32 = load %39
            %41:bool = lt %38, %40
            if %41 [t: $B9, f: $B10] {  # if_2
              $B9: {  # true
                exit_if  # if_2
              }
              $B10: {  # false
                exit_loop  # loop_2
              }
            }
            %42:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
            %43:i32 = load %42
            store %c, %43
            loop [b: $B11, c: $B12] {  # loop_3
              $B11: {  # body
                %44:i32 = load %c
                %45:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
                %46:i32 = load %45
                %47:bool = lte %44, %46
                if %47 [t: $B13, f: $B14] {  # if_3
                  $B13: {  # true
                    exit_if  # if_3
                  }
                  $B14: {  # false
                    exit_loop  # loop_3
                  }
                }
                %48:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
                %49:i32 = load %48
                store %d, %49
                loop [b: $B15, c: $B16] {  # loop_4
                  $B15: {  # body
                    %50:i32 = load %d
                    %51:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
                    %52:i32 = load %51
                    %53:bool = lt %50, %52
                    if %53 [t: $B17, f: $B18] {  # if_4
                      $B17: {  # true
                        exit_if  # if_4
                      }
                      $B18: {  # false
                        exit_loop  # loop_4
                      }
                    }
                    %54:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
                    %55:i32 = load %54
                    store %e, %55
                    loop [b: $B19, c: $B20] {  # loop_5
                      $B19: {  # body
                        %56:i32 = load %e
                        %57:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
                        %58:i32 = load %57
                        %59:bool = lte %56, %58
                        if %59 [t: $B21, f: $B22] {  # if_5
                          $B21: {  # true
                            exit_if  # if_5
                          }
                          $B22: {  # false
                            exit_loop  # loop_5
                          }
                        }
                        %60:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
                        %61:i32 = load %60
                        store %f, %61
                        loop [b: $B23, c: $B24] {  # loop_6
                          $B23: {  # body
                            %62:i32 = load %f
                            %63:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
                            %64:i32 = load %63
                            %65:bool = lt %62, %64
                            if %65 [t: $B25, f: $B26] {  # if_6
                              $B25: {  # true
                                exit_if  # if_6
                              }
                              $B26: {  # false
                                exit_loop  # loop_6
                              }
                            }
                            %66:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
                            %67:i32 = load %66
                            store %g, %67
                            loop [b: $B27, c: $B28] {  # loop_7
                              $B27: {  # body
                                %68:i32 = load %g
                                %69:ptr<uniform, i32, read> = access %x_6, 0u, 6i, 0u
                                %70:i32 = load %69
                                %71:bool = lt %68, %70
                                if %71 [t: $B29, f: $B30] {  # if_7
                                  $B29: {  # true
                                    exit_if  # if_7
                                  }
                                  $B30: {  # false
                                    exit_loop  # loop_7
                                  }
                                }
                                %72:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
                                %73:i32 = load %72
                                store %h, %73
                                loop [b: $B31, c: $B32] {  # loop_8
                                  $B31: {  # body
                                    %74:i32 = load %h
                                    %75:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
                                    %76:i32 = load %75
                                    %77:bool = lt %74, %76
                                    if %77 [t: $B33, f: $B34] {  # if_8
                                      $B33: {  # true
                                        exit_if  # if_8
                                      }
                                      $B34: {  # false
                                        exit_loop  # loop_8
                                      }
                                    }
                                    %78:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
                                    %79:i32 = load %78
                                    store %i, %79
                                    loop [b: $B35, c: $B36] {  # loop_9
                                      $B35: {  # body
                                        %80:i32 = load %i
                                        %81:ptr<uniform, i32, read> = access %x_6, 0u, 4i, 0u
                                        %82:i32 = load %81
                                        %83:bool = lt %80, %82
                                        if %83 [t: $B37, f: $B38] {  # if_9
                                          $B37: {  # true
                                            exit_if  # if_9
                                          }
                                          $B38: {  # false
                                            exit_loop  # loop_9
                                          }
                                        }
                                        %84:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
                                        %85:i32 = load %84
                                        store %j, %85
                                        loop [b: $B39, c: $B40] {  # loop_10
                                          $B39: {  # body
                                            %86:i32 = load %j
                                            %87:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
                                            %88:i32 = load %87
                                            %89:bool = gt %86, %88
                                            if %89 [t: $B41, f: $B42] {  # if_10
                                              $B41: {  # true
                                                exit_if  # if_10
                                              }
                                              $B42: {  # false
                                                exit_loop  # loop_10
                                              }
                                            }
                                            %90:i32 = load %a
                                            %x_53:i32 = let %90
                                            %92:ptr<function, f32, read_write> = access %sums, %x_53
                                            %93:i32 = load %a
                                            %94:ptr<function, f32, read_write> = access %sums, %93
                                            %95:f32 = load %94
                                            %96:ptr<uniform, f32, read> = access %x_8, 0u, 2i, 0u
                                            %97:f32 = load %96
                                            %98:f32 = add %95, %97
                                            store %92, %98
                                            continue  # -> $B40
                                          }
                                          $B40: {  # continuing
                                            %99:i32 = load %j
                                            %100:i32 = sub %99, 1i
                                            store %j, %100
                                            next_iteration  # -> $B39
                                          }
                                        }
                                        continue  # -> $B36
                                      }
                                      $B36: {  # continuing
                                        %101:i32 = load %i
                                        %102:i32 = add %101, 1i
                                        store %i, %102
                                        next_iteration  # -> $B35
                                      }
                                    }
                                    continue  # -> $B32
                                  }
                                  $B32: {  # continuing
                                    %103:i32 = load %h
                                    %104:i32 = add %103, 1i
                                    store %h, %104
                                    next_iteration  # -> $B31
                                  }
                                }
                                continue  # -> $B28
                              }
                              $B28: {  # continuing
                                %105:i32 = load %g
                                %106:i32 = add %105, 1i
                                store %g, %106
                                next_iteration  # -> $B27
                              }
                            }
                            continue  # -> $B24
                          }
                          $B24: {  # continuing
                            %107:i32 = load %f
                            %108:i32 = add %107, 1i
                            store %f, %108
                            next_iteration  # -> $B23
                          }
                        }
                        continue  # -> $B20
                      }
                      $B20: {  # continuing
                        %109:i32 = load %e
                        %110:i32 = add %109, 1i
                        store %e, %110
                        next_iteration  # -> $B19
                      }
                    }
                    continue  # -> $B16
                  }
                  $B16: {  # continuing
                    %111:i32 = load %d
                    %112:i32 = add %111, 1i
                    store %d, %112
                    next_iteration  # -> $B15
                  }
                }
                continue  # -> $B12
              }
              $B12: {  # continuing
                %113:i32 = load %c
                %114:i32 = add %113, 1i
                store %c, %114
                next_iteration  # -> $B11
              }
            }
            continue  # -> $B8
          }
          $B8: {  # continuing
            %115:i32 = load %b
            %116:i32 = add %115, 1i
            store %b, %116
            next_iteration  # -> $B7
          }
        }
        continue  # -> $B4
      }
      $B4: {  # continuing
        %117:i32 = load %a
        %118:i32 = add %117, 1i
        store %a, %118
        next_iteration  # -> $B3
      }
    }
    %119:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %120:i32 = load %119
    %121:ptr<function, f32, read_write> = access %sums, %120
    %122:f32 = load %121
    %123:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
    %124:f32 = load %123
    %125:bool = eq %122, %124
    %x_207:bool = let %125
    store %x_216, %x_207
    if %x_207 [t: $B43] {  # if_11
      $B43: {  # true
        %127:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
        %128:i32 = load %127
        %129:ptr<function, f32, read_write> = access %sums, %128
        %130:f32 = load %129
        %131:ptr<uniform, f32, read> = access %x_8, 0u, 1i, 0u
        %132:f32 = load %131
        %133:bool = eq %130, %132
        store %x_215, %133
        %134:bool = load %x_215
        store %x_216, %134
        exit_if  # if_11
      }
    }
    %135:bool = load %x_216
    if %135 [t: $B44, f: $B45] {  # if_12
      $B44: {  # true
        %136:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
        %137:i32 = load %136
        %138:f32 = convert %137
        %139:f32 = let %138
        %140:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %141:i32 = load %140
        %142:f32 = convert %141
        %143:f32 = let %142
        %144:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %145:i32 = load %144
        %146:f32 = convert %145
        %147:f32 = let %146
        %148:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
        %149:i32 = load %148
        %150:f32 = convert %149
        %151:vec4<f32> = construct %139, %143, %147, %150
        store %x_GLF_color, %151
        exit_if  # if_12
      }
      $B45: {  # false
        %152:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %153:i32 = load %152
        %154:f32 = convert %153
        %155:vec4<f32> = construct %154
        store %x_GLF_color, %155
        exit_if  # if_12
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B46: {
    %157:void = call %main_1
    %158:vec4<f32> = load %x_GLF_color
    %159:main_out = construct %158
    ret %159
  }
}

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