@@ -183,7 +183,7 @@ private newtype GvnBase =
183
183
// global variable will only get the same value number if they are
184
184
// guaranteed to have the same value.
185
185
GVN_OtherVariable ( Variable x , ControlFlowNode dominator ) { mk_OtherVariable ( x , dominator , _) } or
186
- GVN_FieldAccess ( GVN s , Field f ) {
186
+ deprecated GVN_FieldAccess ( GVN s , Field f ) {
187
187
mk_DotFieldAccess ( s , f , _) or
188
188
mk_PointerFieldAccess_with_deref ( s , f , _) or
189
189
mk_ImplicitThisFieldAccess_with_deref ( s , f , _)
@@ -192,7 +192,7 @@ private newtype GvnBase =
192
192
// time the pointer was dereferenced, so we need to include a definition
193
193
// location. As a crude (but safe) approximation, we use
194
194
// `mostRecentSideEffect` to compute a definition location.
195
- GVN_Deref ( GVN p , ControlFlowNode dominator ) {
195
+ deprecated GVN_Deref ( GVN p , ControlFlowNode dominator ) {
196
196
mk_Deref ( p , dominator , _) or
197
197
mk_PointerFieldAccess ( p , _, dominator , _) or
198
198
mk_ImplicitThisFieldAccess_with_qualifier ( p , _, dominator , _)
@@ -201,10 +201,12 @@ private newtype GvnBase =
201
201
mk_ThisExpr ( fcn , _) or
202
202
mk_ImplicitThisFieldAccess ( fcn , _, _, _)
203
203
} or
204
- GVN_Conversion ( Type t , GVN child ) { mk_Conversion ( t , child , _) } or
205
- GVN_BinaryOp ( GVN lhs , GVN rhs , string opname ) { mk_BinaryOp ( lhs , rhs , opname , _) } or
206
- GVN_UnaryOp ( GVN child , string opname ) { mk_UnaryOp ( child , opname , _) } or
207
- GVN_ArrayAccess ( GVN x , GVN i , ControlFlowNode dominator ) { mk_ArrayAccess ( x , i , dominator , _) } or
204
+ deprecated GVN_Conversion ( Type t , GVN child ) { mk_Conversion ( t , child , _) } or
205
+ deprecated GVN_BinaryOp ( GVN lhs , GVN rhs , string opname ) { mk_BinaryOp ( lhs , rhs , opname , _) } or
206
+ deprecated GVN_UnaryOp ( GVN child , string opname ) { mk_UnaryOp ( child , opname , _) } or
207
+ deprecated GVN_ArrayAccess ( GVN x , GVN i , ControlFlowNode dominator ) {
208
+ mk_ArrayAccess ( x , i , dominator , _)
209
+ } or
208
210
// Any expression that is not handled by the cases above is
209
211
// given a unique number based on the expression itself.
210
212
GVN_Unanalyzable ( Expr e ) { not analyzableExpr ( e ) }
@@ -340,7 +342,7 @@ private predicate analyzableDotFieldAccess(DotFieldAccess access) {
340
342
not analyzableConst ( access )
341
343
}
342
344
343
- private predicate mk_DotFieldAccess ( GVN qualifier , Field target , DotFieldAccess access ) {
345
+ deprecated private predicate mk_DotFieldAccess ( GVN qualifier , Field target , DotFieldAccess access ) {
344
346
analyzableDotFieldAccess ( access ) and
345
347
target = access .getTarget ( ) and
346
348
qualifier = globalValueNumber ( access .getQualifier ( ) .getFullyConverted ( ) )
@@ -353,7 +355,7 @@ private predicate analyzablePointerFieldAccess(PointerFieldAccess access) {
353
355
not analyzableConst ( access )
354
356
}
355
357
356
- private predicate mk_PointerFieldAccess (
358
+ deprecated private predicate mk_PointerFieldAccess (
357
359
GVN qualifier , Field target , ControlFlowNode dominator , PointerFieldAccess access
358
360
) {
359
361
analyzablePointerFieldAccess ( access ) and
@@ -366,7 +368,7 @@ private predicate mk_PointerFieldAccess(
366
368
* `obj->field` is equivalent to `(*obj).field`, so we need to wrap an
367
369
* extra `GVN_Deref` around the qualifier.
368
370
*/
369
- private predicate mk_PointerFieldAccess_with_deref (
371
+ deprecated private predicate mk_PointerFieldAccess_with_deref (
370
372
GVN new_qualifier , Field target , PointerFieldAccess access
371
373
) {
372
374
exists ( GVN qualifier , ControlFlowNode dominator |
@@ -391,7 +393,7 @@ private predicate mk_ImplicitThisFieldAccess(
391
393
fcn = access .getEnclosingFunction ( )
392
394
}
393
395
394
- private predicate mk_ImplicitThisFieldAccess_with_qualifier (
396
+ deprecated private predicate mk_ImplicitThisFieldAccess_with_qualifier (
395
397
GVN qualifier , Field target , ControlFlowNode dominator , ImplicitThisFieldAccess access
396
398
) {
397
399
exists ( Function fcn |
@@ -400,7 +402,7 @@ private predicate mk_ImplicitThisFieldAccess_with_qualifier(
400
402
)
401
403
}
402
404
403
- private predicate mk_ImplicitThisFieldAccess_with_deref (
405
+ deprecated private predicate mk_ImplicitThisFieldAccess_with_deref (
404
406
GVN new_qualifier , Field target , ImplicitThisFieldAccess access
405
407
) {
406
408
exists ( GVN qualifier , ControlFlowNode dominator |
@@ -434,7 +436,7 @@ private predicate analyzableConversion(Conversion conv) {
434
436
not analyzableConst ( conv )
435
437
}
436
438
437
- private predicate mk_Conversion ( Type t , GVN child , Conversion conv ) {
439
+ deprecated private predicate mk_Conversion ( Type t , GVN child , Conversion conv ) {
438
440
analyzableConversion ( conv ) and
439
441
t = conv .getUnspecifiedType ( ) and
440
442
child = globalValueNumber ( conv .getExpr ( ) )
@@ -448,7 +450,7 @@ private predicate analyzableBinaryOp(BinaryOperation op) {
448
450
not analyzableConst ( op )
449
451
}
450
452
451
- private predicate mk_BinaryOp ( GVN lhs , GVN rhs , string opname , BinaryOperation op ) {
453
+ deprecated private predicate mk_BinaryOp ( GVN lhs , GVN rhs , string opname , BinaryOperation op ) {
452
454
analyzableBinaryOp ( op ) and
453
455
lhs = globalValueNumber ( op .getLeftOperand ( ) .getFullyConverted ( ) ) and
454
456
rhs = globalValueNumber ( op .getRightOperand ( ) .getFullyConverted ( ) ) and
@@ -463,7 +465,7 @@ private predicate analyzableUnaryOp(UnaryOperation op) {
463
465
not analyzableConst ( op )
464
466
}
465
467
466
- private predicate mk_UnaryOp ( GVN child , string opname , UnaryOperation op ) {
468
+ deprecated private predicate mk_UnaryOp ( GVN child , string opname , UnaryOperation op ) {
467
469
analyzableUnaryOp ( op ) and
468
470
child = globalValueNumber ( op .getOperand ( ) .getFullyConverted ( ) ) and
469
471
opname = op .getOperator ( )
@@ -486,7 +488,9 @@ private predicate analyzableArrayAccess(ArrayExpr ae) {
486
488
not analyzableConst ( ae )
487
489
}
488
490
489
- private predicate mk_ArrayAccess ( GVN base , GVN offset , ControlFlowNode dominator , ArrayExpr ae ) {
491
+ deprecated private predicate mk_ArrayAccess (
492
+ GVN base , GVN offset , ControlFlowNode dominator , ArrayExpr ae
493
+ ) {
490
494
analyzableArrayAccess ( ae ) and
491
495
base = globalValueNumber ( ae .getArrayBase ( ) .getFullyConverted ( ) ) and
492
496
offset = globalValueNumber ( ae .getArrayOffset ( ) .getFullyConverted ( ) ) and
@@ -499,7 +503,7 @@ private predicate analyzablePointerDereferenceExpr(PointerDereferenceExpr deref)
499
503
not analyzableConst ( deref )
500
504
}
501
505
502
- private predicate mk_Deref ( GVN p , ControlFlowNode dominator , PointerDereferenceExpr deref ) {
506
+ deprecated private predicate mk_Deref ( GVN p , ControlFlowNode dominator , PointerDereferenceExpr deref ) {
503
507
analyzablePointerDereferenceExpr ( deref ) and
504
508
p = globalValueNumber ( deref .getOperand ( ) .getFullyConverted ( ) ) and
505
509
dominator = mostRecentSideEffect ( deref )
0 commit comments