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_79:f32 = let %7
    %9:f32 = load_vector_element %b, 1u
    %x_81:f32 = let %9
    %11:f32 = load_vector_element %b, 0u
    %x_84:f32 = let %11
    %13:f32 = load_vector_element %a, 1u
    %x_86:f32 = let %13
    %15:f32 = mul %x_79, %x_81
    %16:f32 = mul %x_84, %x_86
    %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: {
    %x_90:ptr<function, bool, read_write> = var, false
    %x_91:ptr<function, i32, read_write> = var
    %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_140:ptr<function, bool, read_write> = var
    %x_168:ptr<function, bool, read_write> = var
    %x_141_phi:ptr<function, bool, read_write> = var
    %x_169_phi:ptr<function, bool, read_write> = var
    %x_173_phi:ptr<function, i32, read_write> = var
    switch 0u [c: (default, $B4)] {  # switch_1
      $B4: {  # case
        %39:f32 = load_vector_element %p, 0u
        %x_95:f32 = let %39
        %41:f32 = load_vector_element %a_1, 0u
        %x_97:f32 = let %41
        %43:f32 = load_vector_element %p, 1u
        %x_100:f32 = let %43
        %45:f32 = load_vector_element %a_1, 1u
        %x_102:f32 = let %45
        %47:f32 = load_vector_element %b_1, 0u
        %x_106:f32 = let %47
        %49:f32 = load_vector_element %a_1, 0u
        %x_107:f32 = let %49
        %51:f32 = load_vector_element %b_1, 1u
        %x_110:f32 = let %51
        %53:f32 = load_vector_element %a_1, 1u
        %x_111:f32 = let %53
        %55:f32 = sub %x_95, %x_97
        %56:f32 = sub %x_100, %x_102
        %57:vec2<f32> = construct %55, %56
        store %param, %57
        %58:f32 = sub %x_106, %x_107
        %59:f32 = sub %x_110, %x_111
        %60:vec2<f32> = construct %58, %59
        store %param_1, %60
        %61:f32 = call %cross2d_vf2_vf2_, %param, %param_1
        %x_114:f32 = let %61
        store %pab, %x_114
        %63:f32 = load_vector_element %p, 0u
        %x_115:f32 = let %63
        %65:f32 = load_vector_element %b_1, 0u
        %x_116:f32 = let %65
        %67:f32 = load_vector_element %p, 1u
        %x_118:f32 = let %67
        %69:f32 = load_vector_element %b_1, 1u
        %x_119:f32 = let %69
        %71:f32 = load_vector_element %c, 0u
        %x_123:f32 = let %71
        %73:f32 = load_vector_element %b_1, 0u
        %x_124:f32 = let %73
        %75:f32 = load_vector_element %c, 1u
        %x_127:f32 = let %75
        %77:f32 = load_vector_element %b_1, 1u
        %x_128:f32 = let %77
        %79:f32 = sub %x_115, %x_116
        %80:f32 = sub %x_118, %x_119
        %81:vec2<f32> = construct %79, %80
        store %param_2, %81
        %82:f32 = sub %x_123, %x_124
        %83:f32 = sub %x_127, %x_128
        %84:vec2<f32> = construct %82, %83
        store %param_3, %84
        %85:f32 = call %cross2d_vf2_vf2_, %param_2, %param_3
        %x_131:f32 = let %85
        store %pbc, %x_131
        %87:bool = lt %x_114, 0.0f
        %88:bool = lt %x_131, 0.0f
        %89:bool = and %87, %88
        %x_134:bool = let %89
        store %x_141_phi, %x_134
        %91:bool = eq %x_134, false
        if %91 [t: $B5] {  # if_1
          $B5: {  # true
            %92:bool = gte %x_114, 0.0f
            %93:bool = gte %x_131, 0.0f
            %94:bool = and %92, %93
            store %x_140, %94
            %95:bool = load %x_140
            store %x_141_phi, %95
            exit_if  # if_1
          }
        }
        %96:bool = load %x_141_phi
        %x_141:bool = let %96
        %98:bool = eq %x_141, false
        if %98 [t: $B6] {  # if_2
          $B6: {  # true
            store %x_90, true
            store %x_91, 0i
            store %x_173_phi, 0i
            exit_switch  # switch_1
          }
        }
        %99:f32 = load_vector_element %p, 0u
        %x_145:f32 = let %99
        %101:f32 = load_vector_element %c, 0u
        %x_146:f32 = let %101
        %103:f32 = load_vector_element %p, 1u
        %x_148:f32 = let %103
        %105:f32 = load_vector_element %c, 1u
        %x_149:f32 = let %105
        %107:f32 = load_vector_element %a_1, 0u
        %x_152:f32 = let %107
        %109:f32 = load_vector_element %c, 0u
        %x_153:f32 = let %109
        %111:f32 = load_vector_element %a_1, 1u
        %x_155:f32 = let %111
        %113:f32 = load_vector_element %c, 1u
        %x_156:f32 = let %113
        %115:f32 = sub %x_145, %x_146
        %116:f32 = sub %x_148, %x_149
        %117:vec2<f32> = construct %115, %116
        store %param_4, %117
        %118:f32 = sub %x_152, %x_153
        %119:f32 = sub %x_155, %x_156
        %120:vec2<f32> = construct %118, %119
        store %param_5, %120
        %121:f32 = call %cross2d_vf2_vf2_, %param_4, %param_5
        %x_159:f32 = let %121
        store %pca, %x_159
        %123:bool = lt %x_114, 0.0f
        %124:bool = lt %x_159, 0.0f
        %125:bool = and %123, %124
        %x_162:bool = let %125
        store %x_169_phi, %x_162
        %127:bool = eq %x_162, false
        if %127 [t: $B7] {  # if_3
          $B7: {  # true
            %128:bool = gte %x_114, 0.0f
            %129:bool = gte %x_159, 0.0f
            %130:bool = and %128, %129
            store %x_168, %130
            %131:bool = load %x_168
            store %x_169_phi, %131
            exit_if  # if_3
          }
        }
        %132:bool = load %x_169_phi
        %x_169:bool = let %132
        %134:bool = eq %x_169, false
        if %134 [t: $B8] {  # if_4
          $B8: {  # true
            store %x_90, true
            store %x_91, 0i
            store %x_173_phi, 0i
            exit_switch  # switch_1
          }
        }
        store %x_90, true
        store %x_91, 1i
        store %x_173_phi, 1i
        exit_switch  # switch_1
      }
    }
    %135:i32 = load %x_173_phi
    %x_173:i32 = let %135
    ret %x_173
  }
}
%main_1 = func():void {
  $B9: {
    %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
    %143:vec4<f32> = load %gl_FragCoord
    %x_67:vec4<f32> = let %143
    %145:ptr<uniform, vec2<f32>, read> = access %x_24, 0u
    %146:vec2<f32> = load %145
    %x_70:vec2<f32> = let %146
    %148:f32 = access %x_67, 0u
    %149:f32 = access %x_67, 1u
    %150:vec2<f32> = construct %148, %149
    %151:vec2<f32> = div %150, %x_70
    %x_71:vec2<f32> = let %151
    store %pos, %x_71
    store %param_6, %x_71
    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)
    %153:i32 = call %pointInTriangle_vf2_vf2_vf2_vf2_, %param_6, %param_7, %param_8, %param_9
    %x_72:i32 = let %153
    %155:bool = eq %x_72, 1i
    if %155 [t: $B10, f: $B11] {  # if_5
      $B10: {  # true
        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
        exit_if  # if_5
      }
      $B11: {  # 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 {
  $B12: {
    store %gl_FragCoord, %gl_FragCoord_param
    %158:void = call %main_1
    %159:vec4<f32> = load %x_GLF_color
    %160:main_out = construct %159
    ret %160
  }
}

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