SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 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 = block {  # root
  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
  %x_17:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%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 {
  %b2 = block {
    %x_66:ptr<function, f32, read_write> = var
    %x_67:ptr<function, f32, read_write> = var
    %x_68: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_135:ptr<function, bool, read_write> = var
    %x_136:ptr<function, bool, read_write> = var
    %x_172:ptr<function, bool, read_write> = var
    %x_173:ptr<function, bool, read_write> = var
    %x_81:f32 = load_vector_element %b, 0u
    %x_82:f32 = load_vector_element %a, 0u
    %x_85:f32 = load_vector_element %b, 1u
    %x_86:f32 = load_vector_element %a, 1u
    %26:f32 = load_vector_element %p, 0u
    %27:f32 = load_vector_element %a, 0u
    %28:f32 = sub %26, %27
    %29:f32 = load_vector_element %p, 1u
    %30:f32 = load_vector_element %a, 1u
    %31:f32 = sub %29, %30
    %32:vec2<f32> = construct %28, %31
    store %param, %32
    %33:f32 = sub %x_81, %x_82
    %34:f32 = sub %x_85, %x_86
    %35:vec2<f32> = construct %33, %34
    store %param_1, %35
    %36:f32 = load_vector_element %param, 0u
    %37:f32 = load_vector_element %param_1, 1u
    %38:f32 = mul %36, %37
    %39:f32 = load_vector_element %param_1, 0u
    %40:f32 = load_vector_element %param, 1u
    %41:f32 = mul %39, %40
    %x_99:f32 = sub %38, %41
    store %x_68, %x_99
    %x_108:f32 = load_vector_element %c, 0u
    %x_109:f32 = load_vector_element %b, 0u
    %x_112:f32 = load_vector_element %c, 1u
    %x_113:f32 = load_vector_element %b, 1u
    %47:f32 = load_vector_element %p, 0u
    %48:f32 = load_vector_element %b, 0u
    %49:f32 = sub %47, %48
    %50:f32 = load_vector_element %p, 1u
    %51:f32 = load_vector_element %b, 1u
    %52:f32 = sub %50, %51
    %53:vec2<f32> = construct %49, %52
    store %param_2, %53
    %54:f32 = sub %x_108, %x_109
    %55:f32 = sub %x_112, %x_113
    %56:vec2<f32> = construct %54, %55
    store %param_3, %56
    %57:f32 = load_vector_element %param_2, 0u
    %58:f32 = load_vector_element %param_3, 1u
    %59:f32 = mul %57, %58
    %60:f32 = load_vector_element %param_3, 0u
    %61:f32 = load_vector_element %param_2, 1u
    %62:f32 = mul %60, %61
    %x_126:f32 = sub %59, %62
    store %x_67, %x_126
    %x_127:bool = lt %x_99, 0.0f
    %65:bool = lt %x_126, 0.0f
    %x_129:bool = and %x_127, %65
    store %x_136, %x_129
    %67:bool = eq %x_129, false
    if %67 [t: %b3] {  # if_1
      %b3 = block {  # true
        %68:bool = gte %x_99, 0.0f
        %69:bool = gte %x_126, 0.0f
        %70:bool = and %68, %69
        store %x_135, %70
        %71:bool = load %x_135
        store %x_136, %71
        exit_if  # if_1
      }
    }
    %72:bool = load %x_136
    %73:bool = eq %72, false
    if %73 [t: %b4] {  # if_2
      %b4 = block {  # true
        ret 0i
      }
    }
    %x_147:f32 = load_vector_element %a, 0u
    %x_148:f32 = load_vector_element %c, 0u
    %x_150:f32 = load_vector_element %a, 1u
    %x_151:f32 = load_vector_element %c, 1u
    %78:f32 = load_vector_element %p, 0u
    %79:f32 = load_vector_element %c, 0u
    %80:f32 = sub %78, %79
    %81:f32 = load_vector_element %p, 1u
    %82:f32 = load_vector_element %c, 1u
    %83:f32 = sub %81, %82
    %84:vec2<f32> = construct %80, %83
    store %param_4, %84
    %85:f32 = sub %x_147, %x_148
    %86:f32 = sub %x_150, %x_151
    %87:vec2<f32> = construct %85, %86
    store %param_5, %87
    %88:f32 = load_vector_element %param_4, 0u
    %89:f32 = load_vector_element %param_5, 1u
    %90:f32 = mul %88, %89
    %91:f32 = load_vector_element %param_5, 0u
    %92:f32 = load_vector_element %param_4, 1u
    %93:f32 = mul %91, %92
    %x_164:f32 = sub %90, %93
    store %x_66, %x_164
    %95:bool = lt %x_164, 0.0f
    %x_166:bool = and %x_127, %95
    store %x_173, %x_166
    %97:bool = eq %x_166, false
    if %97 [t: %b5] {  # if_3
      %b5 = block {  # true
        %98:bool = gte %x_99, 0.0f
        %99:bool = gte %x_164, 0.0f
        %100:bool = and %98, %99
        store %x_172, %100
        %101:bool = load %x_172
        store %x_173, %101
        exit_if  # if_3
      }
    }
    %102:bool = load %x_173
    %103:bool = eq %102, false
    if %103 [t: %b6] {  # if_4
      %b6 = block {  # true
        ret 0i
      }
    }
    ret 1i
  }
}
%main_1 = func():void -> %b7 {
  %b7 = block {
    %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
    %109:vec4<f32> = load %gl_FragCoord
    %110:vec2<f32> = swizzle %109, xy
    %111:ptr<uniform, vec2<f32>, read> = access %x_17, 0u
    %112:vec2<f32> = load %111
    %113:vec2<f32> = div %110, %112
    store %param_6, %113
    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)
    %x_60:i32 = call %pointInTriangle_vf2_vf2_vf2_vf2_, %param_6, %param_7, %param_8, %param_9
    %115:bool = eq %x_60, 1i
    if %115 [t: %b8, f: %b9] {  # if_5
      %b8 = block {  # true
        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
        exit_if  # if_5
      }
      %b9 = block {  # 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 -> %b10 {
  %b10 = block {
    store %gl_FragCoord, %gl_FragCoord_param
    %118:void = call %main_1
    %119:vec4<f32> = load %x_GLF_color
    %120:main_out = construct %119
    ret %120
  }
}

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