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_141:ptr<function, bool, read_write> = var
    %x_168:ptr<function, bool, read_write> = var
    %x_169:ptr<function, bool, read_write> = var
    %x_173:ptr<function, i32, read_write> = var
    switch 0u [c: (default, $B4)] {  # switch_1
      $B4: {  # case
        %39:f32 = load_vector_element %b_1, 0u
        %x_106:f32 = let %39
        %41:f32 = load_vector_element %a_1, 0u
        %x_107:f32 = let %41
        %43:f32 = load_vector_element %b_1, 1u
        %x_110:f32 = let %43
        %45:f32 = load_vector_element %a_1, 1u
        %x_111:f32 = let %45
        %47:f32 = load_vector_element %p, 0u
        %48:f32 = load_vector_element %a_1, 0u
        %49:f32 = sub %47, %48
        %50:f32 = load_vector_element %p, 1u
        %51:f32 = load_vector_element %a_1, 1u
        %52:f32 = sub %50, %51
        %53:vec2<f32> = construct %49, %52
        store %param, %53
        %54:f32 = sub %x_106, %x_107
        %55:f32 = sub %x_110, %x_111
        %56:vec2<f32> = construct %54, %55
        store %param_1, %56
        %57:f32 = call %cross2d_vf2_vf2_, %param, %param_1
        %x_114:f32 = let %57
        store %pab, %x_114
        %59:f32 = load_vector_element %c, 0u
        %x_123:f32 = let %59
        %61:f32 = load_vector_element %b_1, 0u
        %x_124:f32 = let %61
        %63:f32 = load_vector_element %c, 1u
        %x_127:f32 = let %63
        %65:f32 = load_vector_element %b_1, 1u
        %x_128:f32 = let %65
        %67:f32 = load_vector_element %p, 0u
        %68:f32 = load_vector_element %b_1, 0u
        %69:f32 = sub %67, %68
        %70:f32 = load_vector_element %p, 1u
        %71:f32 = load_vector_element %b_1, 1u
        %72:f32 = sub %70, %71
        %73:vec2<f32> = construct %69, %72
        store %param_2, %73
        %74:f32 = sub %x_123, %x_124
        %75:f32 = sub %x_127, %x_128
        %76:vec2<f32> = construct %74, %75
        store %param_3, %76
        %77:f32 = call %cross2d_vf2_vf2_, %param_2, %param_3
        %x_131:f32 = let %77
        store %pbc, %x_131
        %79:bool = lt %x_114, 0.0f
        %80:bool = lt %x_131, 0.0f
        %81:bool = and %79, %80
        %x_134:bool = let %81
        store %x_141, %x_134
        %83:bool = eq %x_134, false
        if %83 [t: $B5] {  # if_1
          $B5: {  # true
            %84:bool = gte %x_114, 0.0f
            %85:bool = gte %x_131, 0.0f
            %86:bool = and %84, %85
            store %x_140, %86
            %87:bool = load %x_140
            store %x_141, %87
            exit_if  # if_1
          }
        }
        %88:bool = load %x_141
        %89:bool = eq %88, false
        if %89 [t: $B6] {  # if_2
          $B6: {  # true
            store %x_90, true
            store %x_91, 0i
            store %x_173, 0i
            exit_switch  # switch_1
          }
        }
        %90:f32 = load_vector_element %a_1, 0u
        %x_152:f32 = let %90
        %92:f32 = load_vector_element %c, 0u
        %x_153:f32 = let %92
        %94:f32 = load_vector_element %a_1, 1u
        %x_155:f32 = let %94
        %96:f32 = load_vector_element %c, 1u
        %x_156:f32 = let %96
        %98:f32 = load_vector_element %p, 0u
        %99:f32 = load_vector_element %c, 0u
        %100:f32 = sub %98, %99
        %101:f32 = load_vector_element %p, 1u
        %102:f32 = load_vector_element %c, 1u
        %103:f32 = sub %101, %102
        %104:vec2<f32> = construct %100, %103
        store %param_4, %104
        %105:f32 = sub %x_152, %x_153
        %106:f32 = sub %x_155, %x_156
        %107:vec2<f32> = construct %105, %106
        store %param_5, %107
        %108:f32 = call %cross2d_vf2_vf2_, %param_4, %param_5
        %x_159:f32 = let %108
        store %pca, %x_159
        %110:bool = lt %x_114, 0.0f
        %111:bool = lt %x_159, 0.0f
        %112:bool = and %110, %111
        %x_162:bool = let %112
        store %x_169, %x_162
        %114:bool = eq %x_162, false
        if %114 [t: $B7] {  # if_3
          $B7: {  # true
            %115:bool = gte %x_114, 0.0f
            %116:bool = gte %x_159, 0.0f
            %117:bool = and %115, %116
            store %x_168, %117
            %118:bool = load %x_168
            store %x_169, %118
            exit_if  # if_3
          }
        }
        %119:bool = load %x_169
        %120:bool = eq %119, false
        if %120 [t: $B8] {  # if_4
          $B8: {  # true
            store %x_90, true
            store %x_91, 0i
            store %x_173, 0i
            exit_switch  # switch_1
          }
        }
        store %x_90, true
        store %x_91, 1i
        store %x_173, 1i
        exit_switch  # switch_1
      }
    }
    %121:i32 = load %x_173
    ret %121
  }
}
%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
    %128:vec4<f32> = load %gl_FragCoord
    %129:vec2<f32> = swizzle %128, xy
    %130:ptr<uniform, vec2<f32>, read> = access %x_24, 0u
    %131:vec2<f32> = load %130
    %132:vec2<f32> = div %129, %131
    %x_71:vec2<f32> = let %132
    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)
    %134:i32 = call %pointInTriangle_vf2_vf2_vf2_vf2_, %param_6, %param_7, %param_8, %param_9
    %x_72:i32 = let %134
    %136:bool = eq %x_72, 1i
    if %136 [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
    %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.  *
********************************************************************
