SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf1 = struct @align(8) {
  resolution:vec2<f32> @offset(0)
}

buf0 = struct @align(8) {
  injectionSwitch:vec2<f32> @offset(0)
}

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

$B1: {  # root
  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
  %x_9:ptr<uniform, buf1, read> = var @binding_point(0, 1)
  %x_13:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%checkSwap_f1_f1_ = func(%a:ptr<function, f32, read_write>, %b:ptr<function, f32, read_write>):bool {
  $B2: {
    %x_144:ptr<function, bool, read_write> = var
    %9:f32 = load_vector_element %gl_FragCoord, 1u
    %x_146:f32 = let %9
    %11:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
    %12:f32 = load_vector_element %11, 1u
    %x_148:f32 = let %12
    %14:f32 = div %x_148, 2.0f
    %15:bool = lt %x_146, %14
    if %15 [t: $B3, f: $B4] {  # if_1
      $B3: {  # true
        %16:f32 = load %a
        %x_154:f32 = let %16
        %18:f32 = load %b
        %x_155:f32 = let %18
        %20:bool = gt %x_154, %x_155
        store %x_144, %20
        exit_if  # if_1
      }
      $B4: {  # false
        %21:f32 = load %a
        %x_157:f32 = let %21
        %23:f32 = load %b
        %x_158:f32 = let %23
        %25:bool = lt %x_157, %x_158
        store %x_144, %25
        exit_if  # if_1
      }
    }
    %26:bool = load %x_144
    %x_160:bool = let %26
    ret %x_160
  }
}
%main_1 = func():void {
  $B5: {
    %i:ptr<function, i32, read_write> = var
    %data:ptr<function, array<f32, 10>, read_write> = var
    %i_1:ptr<function, i32, read_write> = var
    %j:ptr<function, i32, read_write> = var
    %doSwap:ptr<function, bool, read_write> = var
    %param:ptr<function, f32, read_write> = var
    %param_1:ptr<function, f32, read_write> = var
    %temp:ptr<function, f32, read_write> = var
    store %i, 0i
    loop [b: $B6, c: $B7] {  # loop_1
      $B6: {  # body
        %37:i32 = load %i
        %x_56:i32 = let %37
        %39:bool = lt %x_56, 10i
        if %39 [t: $B8, f: $B9] {  # if_2
          $B8: {  # true
            exit_if  # if_2
          }
          $B9: {  # false
            exit_loop  # loop_1
          }
        }
        %40:i32 = load %i
        %x_59:i32 = let %40
        %42:i32 = load %i
        %x_60:i32 = let %42
        %44:ptr<uniform, vec2<f32>, read> = access %x_13, 0u
        %45:f32 = load_vector_element %44, 1u
        %x_64:f32 = let %45
        %47:ptr<function, f32, read_write> = access %data, %x_59
        %48:i32 = sub 10i, %x_60
        %49:f32 = convert %48
        %50:f32 = mul %49, %x_64
        store %47, %50
        continue  # -> $B7
      }
      $B7: {  # continuing
        %51:i32 = load %i
        %x_67:i32 = let %51
        %53:i32 = add %x_67, 1i
        store %i, %53
        next_iteration  # -> $B6
      }
    }
    store %i_1, 0i
    loop [b: $B10, c: $B11] {  # loop_2
      $B10: {  # body
        %54:i32 = load %i_1
        %x_73:i32 = let %54
        %56:bool = lt %x_73, 9i
        if %56 [t: $B12, f: $B13] {  # if_3
          $B12: {  # true
            exit_if  # if_3
          }
          $B13: {  # false
            exit_loop  # loop_2
          }
        }
        store %j, 0i
        loop [b: $B14, c: $B15] {  # loop_3
          $B14: {  # body
            %57:i32 = load %j
            %x_80:i32 = let %57
            %59:bool = lt %x_80, 10i
            if %59 [t: $B16, f: $B17] {  # if_4
              $B16: {  # true
                exit_if  # if_4
              }
              $B17: {  # false
                exit_loop  # loop_3
              }
            }
            %60:i32 = load %j
            %x_83:i32 = let %60
            %62:i32 = load %i_1
            %x_84:i32 = let %62
            %64:i32 = add %x_84, 1i
            %65:bool = lt %x_83, %64
            if %65 [t: $B18] {  # if_5
              $B18: {  # true
                continue  # -> $B15
              }
            }
            %66:i32 = load %i_1
            %x_89:i32 = let %66
            %68:i32 = load %j
            %x_90:i32 = let %68
            %70:ptr<function, f32, read_write> = access %data, %x_89
            %71:f32 = load %70
            %x_92:f32 = let %71
            store %param, %x_92
            %73:ptr<function, f32, read_write> = access %data, %x_90
            %74:f32 = load %73
            %x_94:f32 = let %74
            store %param_1, %x_94
            %76:bool = call %checkSwap_f1_f1_, %param, %param_1
            %x_95:bool = let %76
            store %doSwap, %x_95
            %78:bool = load %doSwap
            %x_96:bool = let %78
            if %x_96 [t: $B19] {  # if_6
              $B19: {  # true
                %80:i32 = load %i_1
                %x_99:i32 = let %80
                %82:ptr<function, f32, read_write> = access %data, %x_99
                %83:f32 = load %82
                %x_101:f32 = let %83
                store %temp, %x_101
                %85:i32 = load %i_1
                %x_102:i32 = let %85
                %87:i32 = load %j
                %x_103:i32 = let %87
                %89:ptr<function, f32, read_write> = access %data, %x_103
                %90:f32 = load %89
                %x_105:f32 = let %90
                %92:ptr<function, f32, read_write> = access %data, %x_102
                store %92, %x_105
                %93:i32 = load %j
                %x_107:i32 = let %93
                %95:f32 = load %temp
                %x_108:f32 = let %95
                %97:ptr<function, f32, read_write> = access %data, %x_107
                store %97, %x_108
                exit_if  # if_6
              }
            }
            continue  # -> $B15
          }
          $B15: {  # continuing
            %98:i32 = load %j
            %x_110:i32 = let %98
            %100:i32 = add %x_110, 1i
            store %j, %100
            next_iteration  # -> $B14
          }
        }
        continue  # -> $B11
      }
      $B11: {  # continuing
        %101:i32 = load %i_1
        %x_112:i32 = let %101
        %103:i32 = add %x_112, 1i
        store %i_1, %103
        next_iteration  # -> $B10
      }
    }
    %104:f32 = load_vector_element %gl_FragCoord, 0u
    %x_115:f32 = let %104
    %106:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
    %107:f32 = load_vector_element %106, 0u
    %x_117:f32 = let %107
    %109:f32 = div %x_117, 2.0f
    %110:bool = lt %x_115, %109
    if %110 [t: $B20, f: $B21] {  # if_7
      $B20: {  # true
        %111:ptr<function, f32, read_write> = access %data, 0i
        %112:f32 = load %111
        %x_124:f32 = let %112
        %114:ptr<function, f32, read_write> = access %data, 5i
        %115:f32 = load %114
        %x_127:f32 = let %115
        %117:ptr<function, f32, read_write> = access %data, 9i
        %118:f32 = load %117
        %x_130:f32 = let %118
        %120:f32 = div %x_124, 10.0f
        %121:f32 = div %x_127, 10.0f
        %122:f32 = div %x_130, 10.0f
        %123:vec4<f32> = construct %120, %121, %122, 1.0f
        store %x_GLF_color, %123
        exit_if  # if_7
      }
      $B21: {  # false
        %124:ptr<function, f32, read_write> = access %data, 5i
        %125:f32 = load %124
        %x_134:f32 = let %125
        %127:ptr<function, f32, read_write> = access %data, 9i
        %128:f32 = load %127
        %x_137:f32 = let %128
        %130:ptr<function, f32, read_write> = access %data, 0i
        %131:f32 = load %130
        %x_140:f32 = let %131
        %133:f32 = div %x_134, 10.0f
        %134:f32 = div %x_137, 10.0f
        %135:f32 = div %x_140, 10.0f
        %136:vec4<f32> = construct %133, %134, %135, 1.0f
        store %x_GLF_color, %136
        exit_if  # if_7
      }
    }
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
  $B22: {
    store %gl_FragCoord, %gl_FragCoord_param
    %139:void = call %main_1
    %140:vec4<f32> = load %x_GLF_color
    %141:main_out = construct %140
    ret %141
  }
}

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