@@ -627,6 +627,7 @@ module CFG {
627
627
* Holds if `succ` is a successor of `pred`, ignoring the execution of any
628
628
* deferred functions when a function ends.
629
629
*/
630
+ pragma [ nomagic]
630
631
predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
631
632
exists ( int i |
632
633
lastNode ( this .getChildTreeRanked ( i ) , pred , normalCompletion ( ) ) and
@@ -734,6 +735,7 @@ module CFG {
734
735
last = this .getNode ( ) and cmpl = this .getCompletion ( )
735
736
}
736
737
738
+ pragma [ nomagic]
737
739
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
738
740
super .succ0 ( pred , succ )
739
741
or
@@ -757,6 +759,7 @@ module CFG {
757
759
cmpl = Done ( )
758
760
}
759
761
762
+ pragma [ nomagic]
760
763
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
761
764
super .succ0 ( pred , succ )
762
765
or
@@ -860,6 +863,7 @@ module CFG {
860
863
cmpl = Done ( )
861
864
}
862
865
866
+ pragma [ nomagic]
863
867
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
864
868
ControlFlowTree .super .succ0 ( pred , succ )
865
869
or
@@ -985,6 +989,7 @@ module CFG {
985
989
)
986
990
}
987
991
992
+ pragma [ nomagic]
988
993
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
989
994
exists ( Completion lcmpl |
990
995
lastNode ( this .getLeftOperand ( ) , pred , lcmpl ) and
@@ -1035,6 +1040,7 @@ module CFG {
1035
1040
not result instanceof TypeExpr
1036
1041
}
1037
1042
1043
+ pragma [ nomagic]
1038
1044
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
1039
1045
// interpose implicit argument destructuring nodes between last argument
1040
1046
// and call itself; this is for cases like `f(g())` where `g` has multiple
@@ -1109,6 +1115,7 @@ module CFG {
1109
1115
lastNode ( this .getStmt ( this .getNumStmt ( ) - 1 ) , last , cmpl )
1110
1116
}
1111
1117
1118
+ pragma [ nomagic]
1112
1119
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
1113
1120
ControlFlowTree .super .succ0 ( pred , succ )
1114
1121
or
@@ -1179,6 +1186,7 @@ module CFG {
1179
1186
cmpl = Done ( )
1180
1187
}
1181
1188
1189
+ pragma [ nomagic]
1182
1190
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
1183
1191
this .firstNode ( pred ) and
1184
1192
succ = this .getElementStart ( 0 )
@@ -1257,6 +1265,7 @@ module CFG {
1257
1265
cmpl = Done ( )
1258
1266
}
1259
1267
1268
+ pragma [ nomagic]
1260
1269
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
1261
1270
lastNode ( this .getInit ( ) , pred , normalCompletion ( ) ) and
1262
1271
firstNode ( this .getCond ( ) , succ )
@@ -1288,6 +1297,7 @@ module CFG {
1288
1297
( cmpl = Done ( ) or cmpl = Panic ( ) )
1289
1298
}
1290
1299
1300
+ pragma [ nomagic]
1291
1301
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
1292
1302
lastNode ( this .getBase ( ) , pred , normalCompletion ( ) ) and
1293
1303
(
@@ -1325,6 +1335,7 @@ module CFG {
1325
1335
1326
1336
override predicate lastNode ( ControlFlow:: Node last , Completion cmpl ) { none ( ) }
1327
1337
1338
+ pragma [ nomagic]
1328
1339
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
1329
1340
ControlFlowTree .super .succ0 ( pred , succ )
1330
1341
or
@@ -1381,6 +1392,7 @@ module CFG {
1381
1392
i = 5 and result = this .getBody ( )
1382
1393
}
1383
1394
1395
+ pragma [ nomagic]
1384
1396
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
1385
1397
exists ( int i , ControlFlowTree predTree , Completion cmpl |
1386
1398
predTree = this .getChildTreeRanked ( i ) and
@@ -1453,6 +1465,7 @@ module CFG {
1453
1465
1454
1466
override predicate lastNode ( ControlFlow:: Node last , Completion cmpl ) { none ( ) }
1455
1467
1468
+ pragma [ nomagic]
1456
1469
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
1457
1470
exists ( int i |
1458
1471
pred = this .getPrologueNode ( i ) and
@@ -1527,6 +1540,7 @@ module CFG {
1527
1540
cmpl = Done ( )
1528
1541
}
1529
1542
1543
+ pragma [ nomagic]
1530
1544
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
1531
1545
lastNode ( this .getOperand ( ) , pred , normalCompletion ( ) ) and
1532
1546
succ = MkImplicitOne ( this )
@@ -1558,6 +1572,7 @@ module CFG {
1558
1572
not cmpl .isNormal ( )
1559
1573
}
1560
1574
1575
+ pragma [ nomagic]
1561
1576
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
1562
1577
lastNode ( this .getDomain ( ) , pred , normalCompletion ( ) ) and
1563
1578
succ = MkNextNode ( this )
@@ -1633,6 +1648,7 @@ module CFG {
1633
1648
1634
1649
override Completion getCompletion ( ) { result = Return ( ) }
1635
1650
1651
+ pragma [ nomagic]
1636
1652
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
1637
1653
exists ( int i |
1638
1654
lastNode ( this .getExpr ( i ) , pred , normalCompletion ( ) ) and
@@ -1689,6 +1705,7 @@ module CFG {
1689
1705
)
1690
1706
}
1691
1707
1708
+ pragma [ nomagic]
1692
1709
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
1693
1710
ControlFlowTree .super .succ0 ( pred , succ )
1694
1711
or
@@ -1788,6 +1805,7 @@ module CFG {
1788
1805
cmpl = Done ( )
1789
1806
}
1790
1807
1808
+ pragma [ nomagic]
1791
1809
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
1792
1810
exists ( int i | pred = this .getStepWithRank ( i ) and succ = this .getStepWithRank ( i + 1 ) )
1793
1811
}
@@ -1825,6 +1843,7 @@ module CFG {
1825
1843
( cmpl = Done ( ) or cmpl = Panic ( ) )
1826
1844
}
1827
1845
1846
+ pragma [ nomagic]
1828
1847
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
1829
1848
ControlFlowTree .super .succ0 ( pred , succ )
1830
1849
or
@@ -1854,6 +1873,7 @@ module CFG {
1854
1873
( cmpl = Done ( ) or cmpl = Panic ( ) )
1855
1874
}
1856
1875
1876
+ pragma [ nomagic]
1857
1877
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
1858
1878
ControlFlowTree .super .succ0 ( pred , succ )
1859
1879
or
@@ -1941,6 +1961,7 @@ module CFG {
1941
1961
)
1942
1962
}
1943
1963
1964
+ pragma [ nomagic]
1944
1965
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
1945
1966
ControlFlowTree .super .succ0 ( pred , succ )
1946
1967
or
@@ -2015,6 +2036,7 @@ module CFG {
2015
2036
)
2016
2037
}
2017
2038
2039
+ pragma [ nomagic]
2018
2040
override predicate succ0 ( ControlFlow:: Node pred , ControlFlow:: Node succ ) {
2019
2041
ControlFlowTree .super .succ0 ( pred , succ )
2020
2042
or
0 commit comments