Skip to content

Commit d6df69d

Browse files
authored
Merge pull request github#10754 from hvitved/dataflow/non-hidden-succ-fast-tc
Data flow: Improve `fastTC` bound in `PathNodeImpl::getANonHiddenSuccessor`
2 parents 9bbbece + ffb2b1c commit d6df69d

37 files changed

+296
-111
lines changed

cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2927,12 +2927,17 @@ abstract private class PathNodeImpl extends PathNode {
29272927
result = this.getASuccessorImpl()
29282928
}
29292929

2930-
final PathNodeImpl getANonHiddenSuccessor() {
2931-
result = this.getASuccessorImpl().getASuccessorIfHidden*() and
2932-
not this.isHidden() and
2930+
pragma[nomagic]
2931+
private PathNodeImpl getANonHiddenSuccessor0() {
2932+
result = this.getASuccessorIfHidden*() and
29332933
not result.isHidden()
29342934
}
29352935

2936+
final PathNodeImpl getANonHiddenSuccessor() {
2937+
result = this.getASuccessorImpl().getANonHiddenSuccessor0() and
2938+
not this.isHidden()
2939+
}
2940+
29362941
abstract NodeEx getNodeEx();
29372942

29382943
predicate isHidden() {

cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2927,12 +2927,17 @@ abstract private class PathNodeImpl extends PathNode {
29272927
result = this.getASuccessorImpl()
29282928
}
29292929

2930-
final PathNodeImpl getANonHiddenSuccessor() {
2931-
result = this.getASuccessorImpl().getASuccessorIfHidden*() and
2932-
not this.isHidden() and
2930+
pragma[nomagic]
2931+
private PathNodeImpl getANonHiddenSuccessor0() {
2932+
result = this.getASuccessorIfHidden*() and
29332933
not result.isHidden()
29342934
}
29352935

2936+
final PathNodeImpl getANonHiddenSuccessor() {
2937+
result = this.getASuccessorImpl().getANonHiddenSuccessor0() and
2938+
not this.isHidden()
2939+
}
2940+
29362941
abstract NodeEx getNodeEx();
29372942

29382943
predicate isHidden() {

cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2927,12 +2927,17 @@ abstract private class PathNodeImpl extends PathNode {
29272927
result = this.getASuccessorImpl()
29282928
}
29292929

2930-
final PathNodeImpl getANonHiddenSuccessor() {
2931-
result = this.getASuccessorImpl().getASuccessorIfHidden*() and
2932-
not this.isHidden() and
2930+
pragma[nomagic]
2931+
private PathNodeImpl getANonHiddenSuccessor0() {
2932+
result = this.getASuccessorIfHidden*() and
29332933
not result.isHidden()
29342934
}
29352935

2936+
final PathNodeImpl getANonHiddenSuccessor() {
2937+
result = this.getASuccessorImpl().getANonHiddenSuccessor0() and
2938+
not this.isHidden()
2939+
}
2940+
29362941
abstract NodeEx getNodeEx();
29372942

29382943
predicate isHidden() {

cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2927,12 +2927,17 @@ abstract private class PathNodeImpl extends PathNode {
29272927
result = this.getASuccessorImpl()
29282928
}
29292929

2930-
final PathNodeImpl getANonHiddenSuccessor() {
2931-
result = this.getASuccessorImpl().getASuccessorIfHidden*() and
2932-
not this.isHidden() and
2930+
pragma[nomagic]
2931+
private PathNodeImpl getANonHiddenSuccessor0() {
2932+
result = this.getASuccessorIfHidden*() and
29332933
not result.isHidden()
29342934
}
29352935

2936+
final PathNodeImpl getANonHiddenSuccessor() {
2937+
result = this.getASuccessorImpl().getANonHiddenSuccessor0() and
2938+
not this.isHidden()
2939+
}
2940+
29362941
abstract NodeEx getNodeEx();
29372942

29382943
predicate isHidden() {

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2927,12 +2927,17 @@ abstract private class PathNodeImpl extends PathNode {
29272927
result = this.getASuccessorImpl()
29282928
}
29292929

2930-
final PathNodeImpl getANonHiddenSuccessor() {
2931-
result = this.getASuccessorImpl().getASuccessorIfHidden*() and
2932-
not this.isHidden() and
2930+
pragma[nomagic]
2931+
private PathNodeImpl getANonHiddenSuccessor0() {
2932+
result = this.getASuccessorIfHidden*() and
29332933
not result.isHidden()
29342934
}
29352935

2936+
final PathNodeImpl getANonHiddenSuccessor() {
2937+
result = this.getASuccessorImpl().getANonHiddenSuccessor0() and
2938+
not this.isHidden()
2939+
}
2940+
29362941
abstract NodeEx getNodeEx();
29372942

29382943
predicate isHidden() {

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2927,12 +2927,17 @@ abstract private class PathNodeImpl extends PathNode {
29272927
result = this.getASuccessorImpl()
29282928
}
29292929

2930-
final PathNodeImpl getANonHiddenSuccessor() {
2931-
result = this.getASuccessorImpl().getASuccessorIfHidden*() and
2932-
not this.isHidden() and
2930+
pragma[nomagic]
2931+
private PathNodeImpl getANonHiddenSuccessor0() {
2932+
result = this.getASuccessorIfHidden*() and
29332933
not result.isHidden()
29342934
}
29352935

2936+
final PathNodeImpl getANonHiddenSuccessor() {
2937+
result = this.getASuccessorImpl().getANonHiddenSuccessor0() and
2938+
not this.isHidden()
2939+
}
2940+
29362941
abstract NodeEx getNodeEx();
29372942

29382943
predicate isHidden() {

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2927,12 +2927,17 @@ abstract private class PathNodeImpl extends PathNode {
29272927
result = this.getASuccessorImpl()
29282928
}
29292929

2930-
final PathNodeImpl getANonHiddenSuccessor() {
2931-
result = this.getASuccessorImpl().getASuccessorIfHidden*() and
2932-
not this.isHidden() and
2930+
pragma[nomagic]
2931+
private PathNodeImpl getANonHiddenSuccessor0() {
2932+
result = this.getASuccessorIfHidden*() and
29332933
not result.isHidden()
29342934
}
29352935

2936+
final PathNodeImpl getANonHiddenSuccessor() {
2937+
result = this.getASuccessorImpl().getANonHiddenSuccessor0() and
2938+
not this.isHidden()
2939+
}
2940+
29362941
abstract NodeEx getNodeEx();
29372942

29382943
predicate isHidden() {

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2927,12 +2927,17 @@ abstract private class PathNodeImpl extends PathNode {
29272927
result = this.getASuccessorImpl()
29282928
}
29292929

2930-
final PathNodeImpl getANonHiddenSuccessor() {
2931-
result = this.getASuccessorImpl().getASuccessorIfHidden*() and
2932-
not this.isHidden() and
2930+
pragma[nomagic]
2931+
private PathNodeImpl getANonHiddenSuccessor0() {
2932+
result = this.getASuccessorIfHidden*() and
29332933
not result.isHidden()
29342934
}
29352935

2936+
final PathNodeImpl getANonHiddenSuccessor() {
2937+
result = this.getASuccessorImpl().getANonHiddenSuccessor0() and
2938+
not this.isHidden()
2939+
}
2940+
29362941
abstract NodeEx getNodeEx();
29372942

29382943
predicate isHidden() {

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2927,12 +2927,17 @@ abstract private class PathNodeImpl extends PathNode {
29272927
result = this.getASuccessorImpl()
29282928
}
29292929

2930-
final PathNodeImpl getANonHiddenSuccessor() {
2931-
result = this.getASuccessorImpl().getASuccessorIfHidden*() and
2932-
not this.isHidden() and
2930+
pragma[nomagic]
2931+
private PathNodeImpl getANonHiddenSuccessor0() {
2932+
result = this.getASuccessorIfHidden*() and
29332933
not result.isHidden()
29342934
}
29352935

2936+
final PathNodeImpl getANonHiddenSuccessor() {
2937+
result = this.getASuccessorImpl().getANonHiddenSuccessor0() and
2938+
not this.isHidden()
2939+
}
2940+
29362941
abstract NodeEx getNodeEx();
29372942

29382943
predicate isHidden() {

cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2927,12 +2927,17 @@ abstract private class PathNodeImpl extends PathNode {
29272927
result = this.getASuccessorImpl()
29282928
}
29292929

2930-
final PathNodeImpl getANonHiddenSuccessor() {
2931-
result = this.getASuccessorImpl().getASuccessorIfHidden*() and
2932-
not this.isHidden() and
2930+
pragma[nomagic]
2931+
private PathNodeImpl getANonHiddenSuccessor0() {
2932+
result = this.getASuccessorIfHidden*() and
29332933
not result.isHidden()
29342934
}
29352935

2936+
final PathNodeImpl getANonHiddenSuccessor() {
2937+
result = this.getASuccessorImpl().getANonHiddenSuccessor0() and
2938+
not this.isHidden()
2939+
}
2940+
29362941
abstract NodeEx getNodeEx();
29372942

29382943
predicate isHidden() {

0 commit comments

Comments
 (0)