C#: Fix bad join-order in commonSubTypeGeneral/2

This commit is contained in:
Tom Hvitved
2020-11-01 20:08:14 +01:00
parent ce00d58329
commit e89a463b25

View File

@@ -533,6 +533,11 @@ private TypeParameter getATypeParameterSubType(DataFlowTypeOrUnifiable t) {
exists(Type t0 | t = Gvn::getGlobalValueNumber(t0) | implicitConversionRestricted(result, t0))
}
pragma[noinline]
private TypeParameter getATypeParameterSubTypeRestricted(DataFlowType t) {
result = getATypeParameterSubType(t)
}
pragma[noinline]
private Gvn::GvnType getANonTypeParameterSubType(DataFlowTypeOrUnifiable t) {
not t instanceof Gvn::TypeParameterGvnType and
@@ -544,6 +549,11 @@ private Gvn::GvnType getANonTypeParameterSubType(DataFlowTypeOrUnifiable t) {
)
}
pragma[noinline]
private Gvn::GvnType getANonTypeParameterSubTypeRestricted(DataFlowType t) {
result = getANonTypeParameterSubType(t)
}
/** A collection of cached types and predicates to be evaluated in the same stage. */
cached
private module Cached {
@@ -793,9 +803,9 @@ private module Cached {
not t1 instanceof Gvn::TypeParameterGvnType and
t1 = t2
or
getATypeParameterSubType(t1) = getATypeParameterSubType(t2)
getATypeParameterSubType(t1) = getATypeParameterSubTypeRestricted(t2)
or
getANonTypeParameterSubType(t1) = getANonTypeParameterSubType(t2)
getANonTypeParameterSubType(t1) = getANonTypeParameterSubTypeRestricted(t2)
}
/**