SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: 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
  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
  %x_24:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%cross2d_vf2_vf2_ = func(%a:ptr<function, vec2<f32>, read_write>, %b:ptr<function, vec2<f32>, read_write>):f32 {
  $B2: {
    %7:f32 = load_vector_element %a, 0u
    %x_76:f32 = let %7
    %9:f32 = load_vector_element %b, 1u
    %x_78:f32 = let %9
    %11:f32 = load_vector_element %b, 0u
    %x_81:f32 = let %11
    %13:f32 = load_vector_element %a, 1u
    %x_83:f32 = let %13
    %15:f32 = mul %x_76, %x_78
    %16:f32 = mul %x_81, %x_83
    %17:f32 = sub %15, %16
    ret %17
  }
}
%pointInTriangle_vf2_vf2_vf2_vf2_ = func(%p:ptr<function, vec2<f32>, read_write>, %a_1:ptr<function, vec2<f32>, read_write>, %b_1:ptr<function, vec2<f32>, read_write>, %c:ptr<function, vec2<f32>, read_write>):i32 {
  $B3: {
    %pab:ptr<function, f32, read_write> = var
    %param:ptr<function, vec2<f32>, read_write> = var
    %param_1:ptr<function, vec2<f32>, read_write> = var
    %pbc:ptr<function, f32, read_write> = var
    %param_2:ptr<function, vec2<f32>, read_write> = var
    %param_3:ptr<function, vec2<f32>, read_write> = var
    %pca:ptr<function, f32, read_write> = var
    %param_4:ptr<function, vec2<f32>, read_write> = var
    %param_5:ptr<function, vec2<f32>, read_write> = var
    %x_137:ptr<function, bool, read_write> = var
    %x_169:ptr<function, bool, read_write> = var
    %x_138_phi:ptr<function, bool, read_write> = var
    %x_170_phi:ptr<function, bool, read_write> = var
    %36:f32 = load_vector_element %p, 0u
    %x_88:f32 = let %36
    %38:f32 = load_vector_element %a_1, 0u
    %x_90:f32 = let %38
    %40:f32 = load_vector_element %p, 1u
    %x_93:f32 = let %40
    %42:f32 = load_vector_element %a_1, 1u
    %x_95:f32 = let %42
    %44:f32 = load_vector_element %b_1, 0u
    %x_99:f32 = let %44
    %46:f32 = load_vector_element %a_1, 0u
    %x_100:f32 = let %46
    %48:f32 = load_vector_element %b_1, 1u
    %x_103:f32 = let %48
    %50:f32 = load_vector_element %a_1, 1u
    %x_104:f32 = let %50
    %52:f32 = sub %x_88, %x_90
    %53:f32 = sub %x_93, %x_95
    %54:vec2<f32> = construct %52, %53
    store %param, %54
    %55:f32 = sub %x_99, %x_100
    %56:f32 = sub %x_103, %x_104
    %57:vec2<f32> = construct %55, %56
    store %param_1, %57
    %58:f32 = call %cross2d_vf2_vf2_, %param, %param_1
    %x_107:f32 = let %58
    store %pab, %x_107
    %60:f32 = load_vector_element %p, 0u
    %x_108:f32 = let %60
    %62:f32 = load_vector_element %b_1, 0u
    %x_109:f32 = let %62
    %64:f32 = load_vector_element %p, 1u
    %x_111:f32 = let %64
    %66:f32 = load_vector_element %b_1, 1u
    %x_112:f32 = let %66
    %68:f32 = load_vector_element %c, 0u
    %x_116:f32 = let %68
    %70:f32 = load_vector_element %b_1, 0u
    %x_117:f32 = let %70
    %72:f32 = load_vector_element %c, 1u
    %x_120:f32 = let %72
    %74:f32 = load_vector_element %b_1, 1u
    %x_121:f32 = let %74
    %76:f32 = sub %x_108, %x_109
    %77:f32 = sub %x_111, %x_112
    %78:vec2<f32> = construct %76, %77
    store %param_2, %78
    %79:f32 = sub %x_116, %x_117
    %80:f32 = sub %x_120, %x_121
    %81:vec2<f32> = construct %79, %80
    store %param_3, %81
    %82:f32 = call %cross2d_vf2_vf2_, %param_2, %param_3
    %x_124:f32 = let %82
    store %pbc, %x_124
    %84:f32 = load %pab
    %x_125:f32 = let %84
    %86:f32 = load %pbc
    %x_127:f32 = let %86
    %88:bool = lt %x_125, 0.0f
    %89:bool = lt %x_127, 0.0f
    %90:bool = and %88, %89
    %x_129:bool = let %90
    store %x_138_phi, %x_129
    %92:bool = eq %x_129, false
    if %92 [t: $B4] {  # if_1
      $B4: {  # true
        %93:f32 = load %pab
        %x_133:f32 = let %93
        %95:f32 = load %pbc
        %x_135:f32 = let %95
        %97:bool = gte %x_133, 0.0f
        %98:bool = gte %x_135, 0.0f
        %99:bool = and %97, %98
        store %x_137, %99
        %100:bool = load %x_137
        store %x_138_phi, %100
        exit_if  # if_1
      }
    }
    %101:bool = load %x_138_phi
    %x_138:bool = let %101
    %103:bool = eq %x_138, false
    if %103 [t: $B5] {  # if_2
      $B5: {  # true
        ret 0i
      }
    }
    %104:f32 = load_vector_element %p, 0u
    %x_142:f32 = let %104
    %106:f32 = load_vector_element %c, 0u
    %x_143:f32 = let %106
    %108:f32 = load_vector_element %p, 1u
    %x_145:f32 = let %108
    %110:f32 = load_vector_element %c, 1u
    %x_146:f32 = let %110
    %112:f32 = load_vector_element %a_1, 0u
    %x_149:f32 = let %112
    %114:f32 = load_vector_element %c, 0u
    %x_150:f32 = let %114
    %116:f32 = load_vector_element %a_1, 1u
    %x_152:f32 = let %116
    %118:f32 = load_vector_element %c, 1u
    %x_153:f32 = let %118
    %120:f32 = sub %x_142, %x_143
    %121:f32 = sub %x_145, %x_146
    %122:vec2<f32> = construct %120, %121
    store %param_4, %122
    %123:f32 = sub %x_149, %x_150
    %124:f32 = sub %x_152, %x_153
    %125:vec2<f32> = construct %123, %124
    store %param_5, %125
    %126:f32 = call %cross2d_vf2_vf2_, %param_4, %param_5
    %x_156:f32 = let %126
    store %pca, %x_156
    %128:f32 = load %pab
    %x_157:f32 = let %128
    %130:f32 = load %pca
    %x_159:f32 = let %130
    %132:bool = lt %x_157, 0.0f
    %133:bool = lt %x_159, 0.0f
    %134:bool = and %132, %133
    %x_161:bool = let %134
    store %x_170_phi, %x_161
    %136:bool = eq %x_161, false
    if %136 [t: $B6] {  # if_3
      $B6: {  # true
        %137:f32 = load %pab
        %x_165:f32 = let %137
        %139:f32 = load %pca
        %x_167:f32 = let %139
        %141:bool = gte %x_165, 0.0f
        %142:bool = gte %x_167, 0.0f
        %143:bool = and %141, %142
        store %x_169, %143
        %144:bool = load %x_169
        store %x_170_phi, %144
        exit_if  # if_3
      }
    }
    %145:bool = load %x_170_phi
    %x_170:bool = let %145
    %147:bool = eq %x_170, false
    if %147 [t: $B7] {  # if_4
      $B7: {  # true
        ret 0i
      }
    }
    ret 1i
  }
}
%main_1 = func():void {
  $B8: {
    %pos:ptr<function, vec2<f32>, read_write> = var
    %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
    %154:vec4<f32> = load %gl_FragCoord
    %x_63:vec4<f32> = let %154
    %156:ptr<uniform, vec2<f32>, read> = access %x_24, 0u
    %157:vec2<f32> = load %156
    %x_66:vec2<f32> = let %157
    %159:f32 = access %x_63, 0u
    %160:f32 = access %x_63, 1u
    %161:vec2<f32> = construct %159, %160
    %162:vec2<f32> = div %161, %x_66
    store %pos, %162
    %163:vec2<f32> = load %pos
    %x_68:vec2<f32> = let %163
    store %param_6, %x_68
    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)
    %165:i32 = call %pointInTriangle_vf2_vf2_vf2_vf2_, %param_6, %param_7, %param_8, %param_9
    %x_69:i32 = let %165
    %167:bool = eq %x_69, 1i
    if %167 [t: $B9, f: $B10] {  # if_5
      $B9: {  # true
        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
        exit_if  # if_5
      }
      $B10: {  # false
        store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
        exit_if  # if_5
      }
    }
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
  $B11: {
    store %gl_FragCoord, %gl_FragCoord_param
    %170:void = call %main_1
    %171:vec4<f32> = load %x_GLF_color
    %172:main_out = construct %171
    ret %172
  }
}

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