Skip to content

Commit 90f07d2

Browse files
committed
Add pragma[nomagic] to member 'succ0'
1 parent bb44141 commit 90f07d2

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

go/ql/lib/semmle/go/controlflow/ControlFlowGraphImpl.qll

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,7 @@ module CFG {
627627
* Holds if `succ` is a successor of `pred`, ignoring the execution of any
628628
* deferred functions when a function ends.
629629
*/
630+
pragma[nomagic]
630631
predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
631632
exists(int i |
632633
lastNode(this.getChildTreeRanked(i), pred, normalCompletion()) and
@@ -734,6 +735,7 @@ module CFG {
734735
last = this.getNode() and cmpl = this.getCompletion()
735736
}
736737

738+
pragma[nomagic]
737739
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
738740
super.succ0(pred, succ)
739741
or
@@ -757,6 +759,7 @@ module CFG {
757759
cmpl = Done()
758760
}
759761

762+
pragma[nomagic]
760763
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
761764
super.succ0(pred, succ)
762765
or
@@ -860,6 +863,7 @@ module CFG {
860863
cmpl = Done()
861864
}
862865

866+
pragma[nomagic]
863867
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
864868
ControlFlowTree.super.succ0(pred, succ)
865869
or
@@ -985,6 +989,7 @@ module CFG {
985989
)
986990
}
987991

992+
pragma[nomagic]
988993
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
989994
exists(Completion lcmpl |
990995
lastNode(this.getLeftOperand(), pred, lcmpl) and
@@ -1035,6 +1040,7 @@ module CFG {
10351040
not result instanceof TypeExpr
10361041
}
10371042

1043+
pragma[nomagic]
10381044
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
10391045
// interpose implicit argument destructuring nodes between last argument
10401046
// and call itself; this is for cases like `f(g())` where `g` has multiple
@@ -1109,6 +1115,7 @@ module CFG {
11091115
lastNode(this.getStmt(this.getNumStmt() - 1), last, cmpl)
11101116
}
11111117

1118+
pragma[nomagic]
11121119
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
11131120
ControlFlowTree.super.succ0(pred, succ)
11141121
or
@@ -1179,6 +1186,7 @@ module CFG {
11791186
cmpl = Done()
11801187
}
11811188

1189+
pragma[nomagic]
11821190
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
11831191
this.firstNode(pred) and
11841192
succ = this.getElementStart(0)
@@ -1257,6 +1265,7 @@ module CFG {
12571265
cmpl = Done()
12581266
}
12591267

1268+
pragma[nomagic]
12601269
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
12611270
lastNode(this.getInit(), pred, normalCompletion()) and
12621271
firstNode(this.getCond(), succ)
@@ -1288,6 +1297,7 @@ module CFG {
12881297
(cmpl = Done() or cmpl = Panic())
12891298
}
12901299

1300+
pragma[nomagic]
12911301
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
12921302
lastNode(this.getBase(), pred, normalCompletion()) and
12931303
(
@@ -1325,6 +1335,7 @@ module CFG {
13251335

13261336
override predicate lastNode(ControlFlow::Node last, Completion cmpl) { none() }
13271337

1338+
pragma[nomagic]
13281339
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
13291340
ControlFlowTree.super.succ0(pred, succ)
13301341
or
@@ -1381,6 +1392,7 @@ module CFG {
13811392
i = 5 and result = this.getBody()
13821393
}
13831394

1395+
pragma[nomagic]
13841396
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
13851397
exists(int i, ControlFlowTree predTree, Completion cmpl |
13861398
predTree = this.getChildTreeRanked(i) and
@@ -1453,6 +1465,7 @@ module CFG {
14531465

14541466
override predicate lastNode(ControlFlow::Node last, Completion cmpl) { none() }
14551467

1468+
pragma[nomagic]
14561469
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
14571470
exists(int i |
14581471
pred = this.getPrologueNode(i) and
@@ -1527,6 +1540,7 @@ module CFG {
15271540
cmpl = Done()
15281541
}
15291542

1543+
pragma[nomagic]
15301544
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
15311545
lastNode(this.getOperand(), pred, normalCompletion()) and
15321546
succ = MkImplicitOne(this)
@@ -1558,6 +1572,7 @@ module CFG {
15581572
not cmpl.isNormal()
15591573
}
15601574

1575+
pragma[nomagic]
15611576
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
15621577
lastNode(this.getDomain(), pred, normalCompletion()) and
15631578
succ = MkNextNode(this)
@@ -1633,6 +1648,7 @@ module CFG {
16331648

16341649
override Completion getCompletion() { result = Return() }
16351650

1651+
pragma[nomagic]
16361652
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
16371653
exists(int i |
16381654
lastNode(this.getExpr(i), pred, normalCompletion()) and
@@ -1689,6 +1705,7 @@ module CFG {
16891705
)
16901706
}
16911707

1708+
pragma[nomagic]
16921709
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
16931710
ControlFlowTree.super.succ0(pred, succ)
16941711
or
@@ -1788,6 +1805,7 @@ module CFG {
17881805
cmpl = Done()
17891806
}
17901807

1808+
pragma[nomagic]
17911809
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
17921810
exists(int i | pred = this.getStepWithRank(i) and succ = this.getStepWithRank(i + 1))
17931811
}
@@ -1825,6 +1843,7 @@ module CFG {
18251843
(cmpl = Done() or cmpl = Panic())
18261844
}
18271845

1846+
pragma[nomagic]
18281847
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
18291848
ControlFlowTree.super.succ0(pred, succ)
18301849
or
@@ -1854,6 +1873,7 @@ module CFG {
18541873
(cmpl = Done() or cmpl = Panic())
18551874
}
18561875

1876+
pragma[nomagic]
18571877
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
18581878
ControlFlowTree.super.succ0(pred, succ)
18591879
or
@@ -1941,6 +1961,7 @@ module CFG {
19411961
)
19421962
}
19431963

1964+
pragma[nomagic]
19441965
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
19451966
ControlFlowTree.super.succ0(pred, succ)
19461967
or
@@ -2015,6 +2036,7 @@ module CFG {
20152036
)
20162037
}
20172038

2039+
pragma[nomagic]
20182040
override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) {
20192041
ControlFlowTree.super.succ0(pred, succ)
20202042
or

0 commit comments

Comments
 (0)