@@ -642,6 +642,43 @@ private Overlap getExtentOverlap(MemoryLocation def, MemoryLocation use) {
642
642
)
643
643
)
644
644
or
645
+ exists ( GroupedMemoryLocation group |
646
+ group = def and
647
+ def .getVirtualVariable ( ) = use .getVirtualVariable ( )
648
+ |
649
+ (
650
+ use instanceof UnknownMemoryLocation or
651
+ use instanceof AllAliasedMemory
652
+ ) and
653
+ result instanceof MayPartiallyOverlap
654
+ or
655
+ group .isAll ( ) and
656
+ (
657
+ group .getAnAllocation ( ) =
658
+ [
659
+ use .( EntireAllocationMemoryLocation ) .getAnAllocation ( ) ,
660
+ use .( VariableMemoryLocation ) .getAnAllocation ( )
661
+ ]
662
+ or
663
+ use .( GroupedMemoryLocation ) .isSome ( )
664
+ ) and
665
+ result instanceof MustTotallyOverlap
666
+ or
667
+ group .isAll ( ) and
668
+ use .( GroupedMemoryLocation ) .isAll ( ) and
669
+ result instanceof MustExactlyOverlap
670
+ or
671
+ group .isSome ( ) and
672
+ (
673
+ use instanceof EntireAllocationMemoryLocation
674
+ or
675
+ use instanceof VariableMemoryLocation
676
+ or
677
+ use instanceof GroupedMemoryLocation
678
+ ) and
679
+ result instanceof MayPartiallyOverlap
680
+ )
681
+ or
645
682
exists ( VariableMemoryLocation defVariableLocation |
646
683
defVariableLocation = def and
647
684
(
@@ -651,7 +688,8 @@ private Overlap getExtentOverlap(MemoryLocation def, MemoryLocation use) {
651
688
(
652
689
use instanceof UnknownMemoryLocation or
653
690
use instanceof AllAliasedMemory or
654
- use instanceof EntireAllocationMemoryLocation
691
+ use instanceof EntireAllocationMemoryLocation or
692
+ use instanceof GroupedMemoryLocation
655
693
) and
656
694
result instanceof MayPartiallyOverlap
657
695
or
0 commit comments