Performance: Fix bad join order in dataflow library

This commit is contained in:
Edoardo Pirovano
2021-06-23 17:40:56 +01:00
parent 653afc8448
commit 0909c9ff22
24 changed files with 144 additions and 72 deletions

View File

@@ -1247,7 +1247,8 @@ private module Stage2 {
parameterFlow(p, ap, ap0, c, config) and
c = getNodeEnclosingCallable(ret) and
revFlow(ret, true, apSome(_), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), pragma[only_bind_into](ap0),
pragma[only_bind_into](config)) and
kind = ret.getKind() and
p.isParameterOf(_, pos) and
// we don't expect a parameter to return stored in itself
@@ -1928,7 +1929,8 @@ private module Stage3 {
parameterFlow(p, ap, ap0, c, config) and
c = getNodeEnclosingCallable(ret) and
revFlow(ret, true, apSome(_), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), pragma[only_bind_into](ap0),
pragma[only_bind_into](config)) and
kind = ret.getKind() and
p.isParameterOf(_, pos) and
// we don't expect a parameter to return stored in itself
@@ -2683,7 +2685,8 @@ private module Stage4 {
parameterFlow(p, ap, ap0, c, config) and
c = getNodeEnclosingCallable(ret) and
revFlow(ret, true, apSome(_), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), pragma[only_bind_into](ap0),
pragma[only_bind_into](config)) and
kind = ret.getKind() and
p.isParameterOf(_, pos) and
// we don't expect a parameter to return stored in itself

View File

@@ -1247,7 +1247,8 @@ private module Stage2 {
parameterFlow(p, ap, ap0, c, config) and
c = getNodeEnclosingCallable(ret) and
revFlow(ret, true, apSome(_), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), pragma[only_bind_into](ap0),
pragma[only_bind_into](config)) and
kind = ret.getKind() and
p.isParameterOf(_, pos) and
// we don't expect a parameter to return stored in itself
@@ -1928,7 +1929,8 @@ private module Stage3 {
parameterFlow(p, ap, ap0, c, config) and
c = getNodeEnclosingCallable(ret) and
revFlow(ret, true, apSome(_), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), pragma[only_bind_into](ap0),
pragma[only_bind_into](config)) and
kind = ret.getKind() and
p.isParameterOf(_, pos) and
// we don't expect a parameter to return stored in itself
@@ -2683,7 +2685,8 @@ private module Stage4 {
parameterFlow(p, ap, ap0, c, config) and
c = getNodeEnclosingCallable(ret) and
revFlow(ret, true, apSome(_), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), pragma[only_bind_into](ap0),
pragma[only_bind_into](config)) and
kind = ret.getKind() and
p.isParameterOf(_, pos) and
// we don't expect a parameter to return stored in itself

View File

@@ -1247,7 +1247,8 @@ private module Stage2 {
parameterFlow(p, ap, ap0, c, config) and
c = getNodeEnclosingCallable(ret) and
revFlow(ret, true, apSome(_), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), pragma[only_bind_into](ap0),
pragma[only_bind_into](config)) and
kind = ret.getKind() and
p.isParameterOf(_, pos) and
// we don't expect a parameter to return stored in itself
@@ -1928,7 +1929,8 @@ private module Stage3 {
parameterFlow(p, ap, ap0, c, config) and
c = getNodeEnclosingCallable(ret) and
revFlow(ret, true, apSome(_), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), pragma[only_bind_into](ap0),
pragma[only_bind_into](config)) and
kind = ret.getKind() and
p.isParameterOf(_, pos) and
// we don't expect a parameter to return stored in itself
@@ -2683,7 +2685,8 @@ private module Stage4 {
parameterFlow(p, ap, ap0, c, config) and
c = getNodeEnclosingCallable(ret) and
revFlow(ret, true, apSome(_), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), pragma[only_bind_into](ap0),
pragma[only_bind_into](config)) and
kind = ret.getKind() and
p.isParameterOf(_, pos) and
// we don't expect a parameter to return stored in itself

View File

@@ -1247,7 +1247,8 @@ private module Stage2 {
parameterFlow(p, ap, ap0, c, config) and
c = getNodeEnclosingCallable(ret) and
revFlow(ret, true, apSome(_), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), pragma[only_bind_into](ap0),
pragma[only_bind_into](config)) and
kind = ret.getKind() and
p.isParameterOf(_, pos) and
// we don't expect a parameter to return stored in itself
@@ -1928,7 +1929,8 @@ private module Stage3 {
parameterFlow(p, ap, ap0, c, config) and
c = getNodeEnclosingCallable(ret) and
revFlow(ret, true, apSome(_), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), pragma[only_bind_into](ap0),
pragma[only_bind_into](config)) and
kind = ret.getKind() and
p.isParameterOf(_, pos) and
// we don't expect a parameter to return stored in itself
@@ -2683,7 +2685,8 @@ private module Stage4 {
parameterFlow(p, ap, ap0, c, config) and
c = getNodeEnclosingCallable(ret) and
revFlow(ret, true, apSome(_), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), pragma[only_bind_into](ap0),
pragma[only_bind_into](config)) and
kind = ret.getKind() and
p.isParameterOf(_, pos) and
// we don't expect a parameter to return stored in itself

View File

@@ -1247,7 +1247,8 @@ private module Stage2 {
parameterFlow(p, ap, ap0, c, config) and
c = getNodeEnclosingCallable(ret) and
revFlow(ret, true, apSome(_), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), pragma[only_bind_into](ap0),
pragma[only_bind_into](config)) and
kind = ret.getKind() and
p.isParameterOf(_, pos) and
// we don't expect a parameter to return stored in itself
@@ -1928,7 +1929,8 @@ private module Stage3 {
parameterFlow(p, ap, ap0, c, config) and
c = getNodeEnclosingCallable(ret) and
revFlow(ret, true, apSome(_), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), pragma[only_bind_into](ap0),
pragma[only_bind_into](config)) and
kind = ret.getKind() and
p.isParameterOf(_, pos) and
// we don't expect a parameter to return stored in itself
@@ -2683,7 +2685,8 @@ private module Stage4 {
parameterFlow(p, ap, ap0, c, config) and
c = getNodeEnclosingCallable(ret) and
revFlow(ret, true, apSome(_), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), pragma[only_bind_into](ap0),
pragma[only_bind_into](config)) and
kind = ret.getKind() and
p.isParameterOf(_, pos) and
// we don't expect a parameter to return stored in itself

View File

@@ -1247,7 +1247,8 @@ private module Stage2 {
parameterFlow(p, ap, ap0, c, config) and
c = getNodeEnclosingCallable(ret) and
revFlow(ret, true, apSome(_), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), pragma[only_bind_into](ap0),
pragma[only_bind_into](config)) and
kind = ret.getKind() and
p.isParameterOf(_, pos) and
// we don't expect a parameter to return stored in itself
@@ -1928,7 +1929,8 @@ private module Stage3 {
parameterFlow(p, ap, ap0, c, config) and
c = getNodeEnclosingCallable(ret) and
revFlow(ret, true, apSome(_), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), pragma[only_bind_into](ap0),
pragma[only_bind_into](config)) and
kind = ret.getKind() and
p.isParameterOf(_, pos) and
// we don't expect a parameter to return stored in itself
@@ -2683,7 +2685,8 @@ private module Stage4 {
parameterFlow(p, ap, ap0, c, config) and
c = getNodeEnclosingCallable(ret) and
revFlow(ret, true, apSome(_), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and
fwdFlow(ret, any(CcCall ccc), apSome(ap), pragma[only_bind_into](ap0),
pragma[only_bind_into](config)) and
kind = ret.getKind() and
p.isParameterOf(_, pos) and
// we don't expect a parameter to return stored in itself