SKIP: FAILED

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

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

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

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

%pointInTriangle_vf2_vf2_vf2_vf2_ = func(%p:ptr<function, vec2<f32>, read_write>, %a:ptr<function, vec2<f32>, read_write>, %b:ptr<function, vec2<f32>, read_write>, %c:ptr<function, vec2<f32>, read_write>):i32 {
  $B2: {
    %x_78:ptr<function, f32, read_write> = var
    %x_79:ptr<function, f32, read_write> = var
    %x_80:ptr<function, f32, read_write> = var
    %param:ptr<function, vec2<f32>, read_write> = var
    %param_1:ptr<function, vec2<f32>, read_write> = var
    %param_2:ptr<function, vec2<f32>, read_write> = var
    %param_3:ptr<function, vec2<f32>, read_write> = var
    %param_4:ptr<function, vec2<f32>, read_write> = var
    %param_5:ptr<function, vec2<f32>, read_write> = var
    %x_147:ptr<function, bool, read_write> = var
    %x_148:ptr<function, bool, read_write> = var
    %x_203:ptr<function, bool, read_write> = var
    %x_204:ptr<function, bool, read_write> = var
    %23:f32 = load_vector_element %b, 0u
    %x_93:f32 = let %23
    %25:f32 = load_vector_element %a, 0u
    %x_94:f32 = let %25
    %27:f32 = load_vector_element %b, 1u
    %x_97:f32 = let %27
    %29:f32 = load_vector_element %a, 1u
    %x_98:f32 = let %29
    %31:f32 = load_vector_element %p, 0u
    %32:f32 = load_vector_element %a, 0u
    %33:f32 = sub %31, %32
    %34:f32 = load_vector_element %p, 1u
    %35:f32 = load_vector_element %a, 1u
    %36:f32 = sub %34, %35
    %37:vec2<f32> = construct %33, %36
    store %param, %37
    %38:f32 = sub %x_93, %x_94
    %39:f32 = sub %x_97, %x_98
    %40:vec2<f32> = construct %38, %39
    store %param_1, %40
    %41:f32 = load_vector_element %param, 0u
    %42:f32 = load_vector_element %param_1, 1u
    %43:f32 = mul %41, %42
    %44:f32 = load_vector_element %param_1, 0u
    %45:f32 = load_vector_element %param, 1u
    %46:f32 = mul %44, %45
    %47:f32 = sub %43, %46
    %x_111:f32 = let %47
    store %x_80, %x_111
    %49:f32 = load_vector_element %c, 0u
    %x_120:f32 = let %49
    %51:f32 = load_vector_element %b, 0u
    %x_121:f32 = let %51
    %53:f32 = load_vector_element %c, 1u
    %x_124:f32 = let %53
    %55:f32 = load_vector_element %b, 1u
    %x_125:f32 = let %55
    %57:f32 = load_vector_element %p, 0u
    %58:f32 = load_vector_element %b, 0u
    %59:f32 = sub %57, %58
    %60:f32 = load_vector_element %p, 1u
    %61:f32 = load_vector_element %b, 1u
    %62:f32 = sub %60, %61
    %63:vec2<f32> = construct %59, %62
    store %param_2, %63
    %64:f32 = sub %x_120, %x_121
    %65:f32 = sub %x_124, %x_125
    %66:vec2<f32> = construct %64, %65
    store %param_3, %66
    %67:f32 = load_vector_element %param_2, 0u
    %68:f32 = load_vector_element %param_3, 1u
    %69:f32 = mul %67, %68
    %70:f32 = load_vector_element %param_3, 0u
    %71:f32 = load_vector_element %param_2, 1u
    %72:f32 = mul %70, %71
    %73:f32 = sub %69, %72
    %x_138:f32 = let %73
    store %x_79, %x_138
    %75:bool = lt %x_111, 0.0f
    %x_139:bool = let %75
    %77:bool = lt %x_138, 0.0f
    %78:bool = and %x_139, %77
    %x_141:bool = let %78
    store %x_148, %x_141
    %80:bool = eq %x_141, false
    if %80 [t: $B3] {  # if_1
      $B3: {  # true
        %81:bool = gte %x_111, 0.0f
        %82:bool = gte %x_138, 0.0f
        %83:bool = and %81, %82
        store %x_147, %83
        %84:bool = load %x_147
        store %x_148, %84
        exit_if  # if_1
      }
    }
    %x_153:ptr<function, i32, read_write> = var
    %86:bool = load %x_148
    %87:bool = eq %86, false
    if %87 [t: $B4] {  # if_2
      $B4: {  # true
        store %x_153, 0i
        loop [b: $B5, c: $B6] {  # loop_1
          $B5: {  # body
            %x_164:ptr<function, i32, read_write> = var
            %x_154:ptr<function, i32, read_write> = var
            %90:ptr<uniform, vec2<f32>, read> = access %x_11, 0u
            %91:f32 = load_vector_element %90, 1u
            %92:i32 = call %tint_f32_to_i32, %91
            %x_160:i32 = let %92
            %95:i32 = load %x_153
            %96:bool = lt %95, %x_160
            if %96 [t: $B7, f: $B8] {  # if_3
              $B7: {  # true
                exit_if  # if_3
              }
              $B8: {  # false
                exit_loop  # loop_1
              }
            }
            store %x_GLF_color, vec4<f32>(1.0f)
            store %x_164, 0i
            loop [b: $B9, c: $B10] {  # loop_2
              $B9: {  # body
                %x_165:ptr<function, i32, read_write> = var
                %98:i32 = load %x_164
                %99:bool = lt %98, %x_160
                if %99 [t: $B11, f: $B12] {  # if_4
                  $B11: {  # true
                    exit_if  # if_4
                  }
                  $B12: {  # false
                    exit_loop  # loop_2
                  }
                }
                store %x_GLF_color, vec4<f32>(1.0f)
                continue  # -> $B10
              }
              $B10: {  # continuing
                %100:i32 = load %x_164
                %101:i32 = add %100, 1i
                store %x_165, %101
                %102:i32 = load %x_165
                store %x_164, %102
                next_iteration  # -> $B9
              }
            }
            continue  # -> $B6
          }
          $B6: {  # continuing
            %103:i32 = load %x_153
            %104:i32 = add %103, 1i
            store %x_154, %104
            %105:i32 = load %x_154
            store %x_153, %105
            next_iteration  # -> $B5
          }
        }
        ret 0i
      }
    }
    %106:f32 = load_vector_element %a, 0u
    %x_178:f32 = let %106
    %108:f32 = load_vector_element %c, 0u
    %x_179:f32 = let %108
    %110:f32 = load_vector_element %a, 1u
    %x_181:f32 = let %110
    %112:f32 = load_vector_element %c, 1u
    %x_182:f32 = let %112
    %114:f32 = load_vector_element %p, 0u
    %115:f32 = load_vector_element %c, 0u
    %116:f32 = sub %114, %115
    %117:f32 = load_vector_element %p, 1u
    %118:f32 = load_vector_element %c, 1u
    %119:f32 = sub %117, %118
    %120:vec2<f32> = construct %116, %119
    store %param_4, %120
    %121:f32 = sub %x_178, %x_179
    %122:f32 = sub %x_181, %x_182
    %123:vec2<f32> = construct %121, %122
    store %param_5, %123
    %124:f32 = load_vector_element %param_4, 0u
    %125:f32 = load_vector_element %param_5, 1u
    %126:f32 = mul %124, %125
    %127:f32 = load_vector_element %param_5, 0u
    %128:f32 = load_vector_element %param_4, 1u
    %129:f32 = mul %127, %128
    %130:f32 = sub %126, %129
    %x_195:f32 = let %130
    store %x_78, %x_195
    %132:bool = lt %x_195, 0.0f
    %133:bool = and %x_139, %132
    %x_197:bool = let %133
    store %x_204, %x_197
    %135:bool = eq %x_197, false
    if %135 [t: $B13] {  # if_5
      $B13: {  # true
        %136:bool = gte %x_111, 0.0f
        %137:bool = gte %x_195, 0.0f
        %138:bool = and %136, %137
        store %x_203, %138
        %139:bool = load %x_203
        store %x_204, %139
        exit_if  # if_5
      }
    }
    %140:bool = load %x_204
    %141:bool = eq %140, false
    if %141 [t: $B14] {  # if_6
      $B14: {  # true
        ret 0i
      }
    }
    ret 1i
  }
}
%main_1 = func():void {
  $B15: {
    %param_6:ptr<function, vec2<f32>, read_write> = var
    %param_7:ptr<function, vec2<f32>, read_write> = var
    %param_8:ptr<function, vec2<f32>, read_write> = var
    %param_9:ptr<function, vec2<f32>, read_write> = var
    %147:vec4<f32> = load %gl_FragCoord
    %148:vec2<f32> = swizzle %147, xy
    %149:ptr<uniform, vec2<f32>, read> = access %x_19, 0u
    %150:vec2<f32> = load %149
    %151:vec2<f32> = div %148, %150
    store %param_6, %151
    store %param_7, vec2<f32>(0.69999998807907104492f, 0.30000001192092895508f)
    store %param_8, vec2<f32>(0.5f, 0.89999997615814208984f)
    store %param_9, vec2<f32>(0.10000000149011611938f, 0.40000000596046447754f)
    %152:i32 = call %pointInTriangle_vf2_vf2_vf2_vf2_, %param_6, %param_7, %param_8, %param_9
    %x_65:i32 = let %152
    %154:bool = eq %x_65, 1i
    if %154 [t: $B16, f: $B17] {  # if_7
      $B16: {  # true
        %155:ptr<uniform, vec2<f32>, read> = access %x_11, 0u
        %156:f32 = load_vector_element %155, 1u
        %157:ptr<uniform, vec2<f32>, read> = access %x_11, 0u
        %158:f32 = load_vector_element %157, 0u
        %159:bool = gte %156, %158
        if %159 [t: $B18] {  # if_8
          $B18: {  # true
            store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
            exit_if  # if_8
          }
        }
        exit_if  # if_7
      }
      $B17: {  # false
        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
        exit_if  # if_7
      }
    }
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
  $B19: {
    store %gl_FragCoord, %gl_FragCoord_param
    %162:void = call %main_1
    %163:vec4<f32> = load %x_GLF_color
    %164:main_out = construct %163
    ret %164
  }
}
%tint_f32_to_i32 = func(%value:f32):i32 {
  $B20: {
    %166:i32 = convert %value
    %167:bool = gte %value, -2147483648.0f
    %168:i32 = select -2147483648i, %166, %167
    %169:bool = lte %value, 2147483520.0f
    %170:i32 = select 2147483647i, %168, %169
    ret %170
  }
}

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