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_145:ptr<function, bool, read_write> = var
    %x_185:ptr<function, bool, read_write> = var
    %x_146_phi:ptr<function, bool, read_write> = var
    %x_186_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_101:f32 = let %46
    %48:f32 = load_vector_element %b_1, 1u
    %x_104:f32 = let %48
    %50:f32 = load_vector_element %a_1, 1u
    %x_106: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_101
    %56:f32 = sub %x_104, %x_106
    %57:vec2<f32> = construct %55, %56
    store %param_1, %57
    %58:f32 = call %cross2d_vf2_vf2_, %param, %param_1
    %x_109:f32 = let %58
    store %pab, %x_109
    %60:f32 = load_vector_element %p, 0u
    %x_111:f32 = let %60
    %62:f32 = load_vector_element %b_1, 0u
    %x_113:f32 = let %62
    %64:f32 = load_vector_element %p, 1u
    %x_116:f32 = let %64
    %66:f32 = load_vector_element %b_1, 1u
    %x_118:f32 = let %66
    %68:f32 = load_vector_element %c, 0u
    %x_122:f32 = let %68
    %70:f32 = load_vector_element %b_1, 0u
    %x_124:f32 = let %70
    %72:f32 = load_vector_element %c, 1u
    %x_127:f32 = let %72
    %74:f32 = load_vector_element %b_1, 1u
    %x_129:f32 = let %74
    %76:f32 = sub %x_111, %x_113
    %77:f32 = sub %x_116, %x_118
    %78:vec2<f32> = construct %76, %77
    store %param_2, %78
    %79:f32 = sub %x_122, %x_124
    %80:f32 = sub %x_127, %x_129
    %81:vec2<f32> = construct %79, %80
    store %param_3, %81
    %82:f32 = call %cross2d_vf2_vf2_, %param_2, %param_3
    %x_132:f32 = let %82
    store %pbc, %x_132
    %84:f32 = load %pab
    %x_133:f32 = let %84
    %86:f32 = load %pbc
    %x_135:f32 = let %86
    %88:bool = lt %x_133, 0.0f
    %89:bool = lt %x_135, 0.0f
    %90:bool = and %88, %89
    %x_137:bool = let %90
    store %x_146_phi, %x_137
    %92:bool = eq %x_137, false
    if %92 [t: $B4] {  # if_1
      $B4: {  # true
        %93:f32 = load %pab
        %x_141:f32 = let %93
        %95:f32 = load %pbc
        %x_143:f32 = let %95
        %97:bool = gte %x_141, 0.0f
        %98:bool = gte %x_143, 0.0f
        %99:bool = and %97, %98
        store %x_145, %99
        %100:bool = load %x_145
        store %x_146_phi, %100
        exit_if  # if_1
      }
    }
    %101:bool = load %x_146_phi
    %x_146:bool = let %101
    %103:bool = eq %x_146, false
    if %103 [t: $B5] {  # if_2
      $B5: {  # true
        ret 0i
      }
    }
    %104:f32 = load_vector_element %p, 0u
    %x_151:f32 = let %104
    %106:f32 = load_vector_element %c, 0u
    %x_153:f32 = let %106
    %108:f32 = load_vector_element %p, 1u
    %x_156:f32 = let %108
    %110:f32 = load_vector_element %c, 1u
    %x_158:f32 = let %110
    %112:f32 = load_vector_element %a_1, 0u
    %x_162:f32 = let %112
    %114:f32 = load_vector_element %c, 0u
    %x_164:f32 = let %114
    %116:f32 = load_vector_element %a_1, 1u
    %x_167:f32 = let %116
    %118:f32 = load_vector_element %c, 1u
    %x_169:f32 = let %118
    %120:f32 = sub %x_151, %x_153
    %121:f32 = sub %x_156, %x_158
    %122:vec2<f32> = construct %120, %121
    store %param_4, %122
    %123:f32 = sub %x_162, %x_164
    %124:f32 = sub %x_167, %x_169
    %125:vec2<f32> = construct %123, %124
    store %param_5, %125
    %126:f32 = call %cross2d_vf2_vf2_, %param_4, %param_5
    %x_172:f32 = let %126
    store %pca, %x_172
    %128:f32 = load %pab
    %x_173:f32 = let %128
    %130:f32 = load %pca
    %x_175:f32 = let %130
    %132:bool = lt %x_173, 0.0f
    %133:bool = lt %x_175, 0.0f
    %134:bool = and %132, %133
    %x_177:bool = let %134
    store %x_186_phi, %x_177
    %136:bool = eq %x_177, false
    if %136 [t: $B6] {  # if_3
      $B6: {  # true
        %137:f32 = load %pab
        %x_181:f32 = let %137
        %139:f32 = load %pca
        %x_183:f32 = let %139
        %141:bool = gte %x_181, 0.0f
        %142:bool = gte %x_183, 0.0f
        %143:bool = and %141, %142
        store %x_185, %143
        %144:bool = load %x_185
        store %x_186_phi, %144
        exit_if  # if_3
      }
    }
    %145:bool = load %x_186_phi
    %x_186:bool = let %145
    %147:bool = eq %x_186, 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.  *
********************************************************************
