@@ -402,49 +402,37 @@ private predicate isRelatableMemoryLocation(VariableMemoryLocation vml) {
402402}
403403
404404private predicate isCoveredOffset (
405- VirtualVariable vv , IRVariable var , int offsetRank , VariableMemoryLocation vml
405+ IRVariable var , int offsetRank , VariableMemoryLocation vml
406406) {
407- exists ( int startRank , int endRank |
408- vml .getStartBitOffset ( ) = rank [ startRank ] ( IntValue offset_ | isRelevantOffset ( vv , offset_ ) ) and
409- vml .getEndBitOffset ( ) = rank [ endRank ] ( IntValue offset_ | isRelevantOffset ( vv , offset_ ) ) and
410- hasVariableAndVirtualVariable ( vv , var , vml ) and
407+ exists ( int startRank , int endRank , VirtualVariable vvar |
408+ vml .getStartBitOffset ( ) = rank [ startRank ] ( IntValue offset_ | isRelevantOffset ( vvar , offset_ ) ) and
409+ vml .getEndBitOffset ( ) = rank [ endRank ] ( IntValue offset_ | isRelevantOffset ( vvar , offset_ ) ) and
410+ var = vml .getVariable ( ) and
411+ vvar = vml .getVirtualVariable ( ) and
411412 isRelatableMemoryLocation ( vml ) and
412413 offsetRank in [ startRank .. endRank ]
413414 )
414415}
415416
416- private predicate hasUnknownOffset ( VirtualVariable vv , IRVariable var , VariableMemoryLocation vml ) {
417- hasVariableAndVirtualVariable ( vv , var , vml ) and
417+ private predicate hasUnknownOffset ( IRVariable var , VariableMemoryLocation vml ) {
418+ vml . getVariable ( ) = var and
418419 (
419420 vml .getStartBitOffset ( ) = Ints:: unknown ( ) or
420421 vml .getEndBitOffset ( ) = Ints:: unknown ( )
421422 )
422423}
423424
424- private predicate hasVariableAndVirtualVariable (
425- VirtualVariable vv , IRVariable var , VariableMemoryLocation vml
426- ) {
427- var = vml .getVariable ( ) and
428- vv = vml .getVirtualVariable ( )
429- }
430-
431425private predicate overlappingIRVariableMemoryLocations (
432426 VariableMemoryLocation def , VariableMemoryLocation use
433427) {
434- exists ( VirtualVariable vv , IRVariable var , int offsetRank |
435- isCoveredOffset ( vv , var , offsetRank , def ) and
436- isCoveredOffset ( vv , var , offsetRank , use )
428+ exists ( IRVariable var , int offsetRank |
429+ isCoveredOffset ( var , offsetRank , def ) and
430+ isCoveredOffset ( var , offsetRank , use )
437431 )
438432 or
439- exists ( VirtualVariable vv , IRVariable var |
440- hasUnknownOffset ( vv , var , def ) and
441- hasVariableAndVirtualVariable ( vv , var , use )
442- )
433+ hasUnknownOffset ( use .getVariable ( ) , def )
443434 or
444- exists ( VirtualVariable vv , IRVariable var |
445- hasUnknownOffset ( vv , var , use ) and
446- hasVariableAndVirtualVariable ( vv , var , def )
447- )
435+ hasUnknownOffset ( def .getVariable ( ) , use )
448436}
449437
450438private Overlap getVariableMemoryLocationOverlap (
0 commit comments