C++: Add a direct test of getOverlap and a test case for it.

This commit is contained in:
Geoffrey White
2024-09-03 09:40:30 +01:00
parent 0e766aa99b
commit 5bd58f044e
8 changed files with 793 additions and 3 deletions

View File

@@ -688,7 +688,7 @@ private Overlap getExtentOverlap(MemoryLocation0 def, MemoryLocation0 use) {
(
// EntireAllocationMemoryLocation exactly overlaps itself.
use instanceof EntireAllocationMemoryLocation and
def.getAnAllocation() = use.getAnAllocation() and
// def.getAnAllocation() = use.getAnAllocation() and
result instanceof MustExactlyOverlap
or
not use instanceof EntireAllocationMemoryLocation and

View File

@@ -2200,3 +2200,65 @@ ssa.cpp:
# 439| r439_15(glval<int>) = VariableAddress[#temp439:13] :
# 439| m439_16(int) = Store[#temp439:13] : &:r439_15, r439_14
#-----| Goto -> Block 1
# 442| void NonEscapingParams(void*, void*)
# 442| Block 0
# 442| v442_1(void) = EnterFunction :
# 442| m442_2(unknown) = AliasedDefinition :
# 442| m442_3(unknown) = InitializeNonLocal :
# 442| m442_4(unknown) = Chi : total:m442_2, partial:m442_3
# 442| r442_5(glval<void *>) = VariableAddress[a] :
# 442| m442_6(void *) = InitializeParameter[a] : &:r442_5
# 442| r442_7(void *) = Load[a] : &:r442_5, m442_6
# 442| m442_8(unknown) = InitializeIndirection[a] : &:r442_7
# 442| r442_9(glval<void *>) = VariableAddress[b] :
# 442| m442_10(void *) = InitializeParameter[b] : &:r442_9
# 442| r442_11(void *) = Load[b] : &:r442_9, m442_10
# 442| m442_12(unknown) = InitializeIndirection[b] : &:r442_11
# 444| v444_1(void) = NoOp :
# 442| v442_13(void) = ReturnIndirection[a] : &:r442_7, m442_8
# 442| v442_14(void) = ReturnIndirection[b] : &:r442_11, m442_12
# 442| v442_15(void) = ReturnVoid :
# 442| v442_16(void) = AliasedUse : m442_3
# 442| v442_17(void) = ExitFunction :
# 446| void EscapingParams(void*, void*)
# 446| Block 0
# 446| v446_1(void) = EnterFunction :
# 446| m446_2(unknown) = AliasedDefinition :
# 446| m446_3(unknown) = InitializeNonLocal :
# 446| m446_4(unknown) = Chi : total:m446_2, partial:m446_3
# 446| r446_5(glval<void *>) = VariableAddress[a] :
# 446| m446_6(void *) = InitializeParameter[a] : &:r446_5
# 446| r446_7(void *) = Load[a] : &:r446_5, m446_6
# 446| m446_8(unknown) = InitializeIndirection[a] : &:r446_7
# 446| m446_9(unknown) = Chi : total:m446_4, partial:m446_8
# 446| r446_10(glval<void *>) = VariableAddress[b] :
# 446| m446_11(void *) = InitializeParameter[b] : &:r446_10
# 446| r446_12(void *) = Load[b] : &:r446_10, m446_11
# 446| m446_13(unknown) = InitializeIndirection[b] : &:r446_12
# 446| m446_14(unknown) = Chi : total:m446_9, partial:m446_13
# 448| r448_1(glval<unknown>) = FunctionAddress[Escape] :
# 448| r448_2(glval<void *>) = VariableAddress[a] :
# 448| r448_3(void *) = Load[a] : &:r448_2, m446_6
# 448| v448_4(void) = Call[Escape] : func:r448_1, 0:r448_3
# 448| m448_5(unknown) = ^CallSideEffect : ~m446_14
# 448| m448_6(unknown) = Chi : total:m446_14, partial:m448_5
# 448| v448_7(void) = ^BufferReadSideEffect[0] : &:r448_3, ~m448_6
# 448| m448_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r448_3
# 448| m448_9(unknown) = Chi : total:m448_6, partial:m448_8
# 449| r449_1(glval<unknown>) = FunctionAddress[Escape] :
# 449| r449_2(glval<void *>) = VariableAddress[b] :
# 449| r449_3(void *) = Load[b] : &:r449_2, m446_11
# 449| v449_4(void) = Call[Escape] : func:r449_1, 0:r449_3
# 449| m449_5(unknown) = ^CallSideEffect : ~m448_9
# 449| m449_6(unknown) = Chi : total:m448_9, partial:m449_5
# 449| v449_7(void) = ^BufferReadSideEffect[0] : &:r449_3, ~m449_6
# 449| m449_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r449_3
# 449| m449_9(unknown) = Chi : total:m449_6, partial:m449_8
# 450| v450_1(void) = NoOp :
# 446| v446_15(void) = ReturnIndirection[a] : &:r446_7, ~m449_9
# 446| v446_16(void) = ReturnIndirection[b] : &:r446_12, ~m449_9
# 446| v446_17(void) = ReturnVoid :
# 446| v446_18(void) = AliasedUse : ~m449_9
# 446| v446_19(void) = ExitFunction :

View File

@@ -2200,3 +2200,65 @@ ssa.cpp:
# 439| r439_15(glval<int>) = VariableAddress[#temp439:13] :
# 439| m439_16(int) = Store[#temp439:13] : &:r439_15, r439_14
#-----| Goto -> Block 1
# 442| void NonEscapingParams(void*, void*)
# 442| Block 0
# 442| v442_1(void) = EnterFunction :
# 442| m442_2(unknown) = AliasedDefinition :
# 442| m442_3(unknown) = InitializeNonLocal :
# 442| m442_4(unknown) = Chi : total:m442_2, partial:m442_3
# 442| r442_5(glval<void *>) = VariableAddress[a] :
# 442| m442_6(void *) = InitializeParameter[a] : &:r442_5
# 442| r442_7(void *) = Load[a] : &:r442_5, m442_6
# 442| m442_8(unknown) = InitializeIndirection[a] : &:r442_7
# 442| r442_9(glval<void *>) = VariableAddress[b] :
# 442| m442_10(void *) = InitializeParameter[b] : &:r442_9
# 442| r442_11(void *) = Load[b] : &:r442_9, m442_10
# 442| m442_12(unknown) = InitializeIndirection[b] : &:r442_11
# 444| v444_1(void) = NoOp :
# 442| v442_13(void) = ReturnIndirection[a] : &:r442_7, m442_8
# 442| v442_14(void) = ReturnIndirection[b] : &:r442_11, m442_12
# 442| v442_15(void) = ReturnVoid :
# 442| v442_16(void) = AliasedUse : m442_3
# 442| v442_17(void) = ExitFunction :
# 446| void EscapingParams(void*, void*)
# 446| Block 0
# 446| v446_1(void) = EnterFunction :
# 446| m446_2(unknown) = AliasedDefinition :
# 446| m446_3(unknown) = InitializeNonLocal :
# 446| m446_4(unknown) = Chi : total:m446_2, partial:m446_3
# 446| r446_5(glval<void *>) = VariableAddress[a] :
# 446| m446_6(void *) = InitializeParameter[a] : &:r446_5
# 446| r446_7(void *) = Load[a] : &:r446_5, m446_6
# 446| m446_8(unknown) = InitializeIndirection[a] : &:r446_7
# 446| m446_9(unknown) = Chi : total:m446_4, partial:m446_8
# 446| r446_10(glval<void *>) = VariableAddress[b] :
# 446| m446_11(void *) = InitializeParameter[b] : &:r446_10
# 446| r446_12(void *) = Load[b] : &:r446_10, m446_11
# 446| m446_13(unknown) = InitializeIndirection[b] : &:r446_12
# 446| m446_14(unknown) = Chi : total:m446_9, partial:m446_13
# 448| r448_1(glval<unknown>) = FunctionAddress[Escape] :
# 448| r448_2(glval<void *>) = VariableAddress[a] :
# 448| r448_3(void *) = Load[a] : &:r448_2, m446_6
# 448| v448_4(void) = Call[Escape] : func:r448_1, 0:r448_3
# 448| m448_5(unknown) = ^CallSideEffect : ~m446_14
# 448| m448_6(unknown) = Chi : total:m446_14, partial:m448_5
# 448| v448_7(void) = ^BufferReadSideEffect[0] : &:r448_3, ~m448_6
# 448| m448_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r448_3
# 448| m448_9(unknown) = Chi : total:m448_6, partial:m448_8
# 449| r449_1(glval<unknown>) = FunctionAddress[Escape] :
# 449| r449_2(glval<void *>) = VariableAddress[b] :
# 449| r449_3(void *) = Load[b] : &:r449_2, m446_11
# 449| v449_4(void) = Call[Escape] : func:r449_1, 0:r449_3
# 449| m449_5(unknown) = ^CallSideEffect : ~m448_9
# 449| m449_6(unknown) = Chi : total:m448_9, partial:m449_5
# 449| v449_7(void) = ^BufferReadSideEffect[0] : &:r449_3, ~m449_6
# 449| m449_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r449_3
# 449| m449_9(unknown) = Chi : total:m449_6, partial:m449_8
# 450| v450_1(void) = NoOp :
# 446| v446_15(void) = ReturnIndirection[a] : &:r446_7, ~m449_9
# 446| v446_16(void) = ReturnIndirection[b] : &:r446_12, ~m449_9
# 446| v446_17(void) = ReturnVoid :
# 446| v446_18(void) = AliasedUse : ~m449_9
# 446| v446_19(void) = ExitFunction :

View File

@@ -0,0 +1,542 @@
| ssa.c:3:14:3:16 | foo | ssa.c:3:14:3:16 | foo | MustExactlyOverlap |
| ssa.c:3:14:3:16 | foo | ssa.c:3:14:3:16 | foo[0..4)<int> | MustTotallyOverlap |
| ssa.c:3:14:3:16 | foo | ssa.c:3:14:3:16 | foo[4..8)<int> | MustTotallyOverlap |
| ssa.c:3:14:3:16 | foo[0..4)<int> | ssa.c:3:14:3:16 | foo | MayPartiallyOverlap |
| ssa.c:3:14:3:16 | foo[0..4)<int> | ssa.c:3:14:3:16 | foo[0..4)<int> | MustExactlyOverlap |
| ssa.c:3:14:3:16 | foo[4..8)<int> | ssa.c:3:14:3:16 | foo | MayPartiallyOverlap |
| ssa.c:3:14:3:16 | foo[4..8)<int> | ssa.c:3:14:3:16 | foo[4..8)<int> | MustExactlyOverlap |
| ssa.c:7:7:7:7 | x | ssa.c:7:7:7:7 | x | MustExactlyOverlap |
| ssa.c:7:7:7:7 | x | ssa.c:7:7:7:7 | x<int> | MustTotallyOverlap |
| ssa.c:7:7:7:7 | x<int> | ssa.c:7:7:7:7 | x | MustTotallyOverlap |
| ssa.c:7:7:7:7 | x<int> | ssa.c:7:7:7:7 | x<int> | MustExactlyOverlap |
| ssa.c:12:15:12:17 | foo | ssa.c:12:15:12:17 | foo | MustExactlyOverlap |
| ssa.c:12:15:12:17 | foo | ssa.c:12:15:12:17 | foo[0..4)<int> | MustTotallyOverlap |
| ssa.c:12:15:12:17 | foo | ssa.c:12:15:12:17 | foo[4..8)<int> | MustTotallyOverlap |
| ssa.c:12:15:12:17 | foo[0..4)<int> | ssa.c:12:15:12:17 | foo | MayPartiallyOverlap |
| ssa.c:12:15:12:17 | foo[0..4)<int> | ssa.c:12:15:12:17 | foo[0..4)<int> | MustExactlyOverlap |
| ssa.c:12:15:12:17 | foo[4..8)<int> | ssa.c:12:15:12:17 | foo | MayPartiallyOverlap |
| ssa.c:12:15:12:17 | foo[4..8)<int> | ssa.c:12:15:12:17 | foo[4..8)<int> | MustExactlyOverlap |
| ssa.c:14:15:14:25 | foo_swapped | ssa.c:14:15:14:25 | foo_swapped | MustExactlyOverlap |
| ssa.c:14:15:14:25 | foo_swapped | ssa.c:14:15:14:25 | foo_swapped[0..4)<int> | MustTotallyOverlap |
| ssa.c:14:15:14:25 | foo_swapped | ssa.c:14:15:14:25 | foo_swapped[4..8)<int> | MustTotallyOverlap |
| ssa.c:14:15:14:25 | foo_swapped[0..4)<int> | ssa.c:14:15:14:25 | foo_swapped | MayPartiallyOverlap |
| ssa.c:14:15:14:25 | foo_swapped[0..4)<int> | ssa.c:14:15:14:25 | foo_swapped[0..4)<int> | MustExactlyOverlap |
| ssa.c:14:15:14:25 | foo_swapped[4..8)<int> | ssa.c:14:15:14:25 | foo_swapped | MayPartiallyOverlap |
| ssa.c:14:15:14:25 | foo_swapped[4..8)<int> | ssa.c:14:15:14:25 | foo_swapped[4..8)<int> | MustExactlyOverlap |
| ssa.c:18:7:18:7 | x | ssa.c:18:7:18:7 | x | MustExactlyOverlap |
| ssa.c:18:7:18:7 | x | ssa.c:18:7:18:7 | x[0..4)<int> | MustTotallyOverlap |
| ssa.c:18:7:18:7 | x | ssa.c:18:7:18:7 | x[4..8)<int> | MustTotallyOverlap |
| ssa.c:18:7:18:7 | x[0..4)<int> | ssa.c:18:7:18:7 | x | MayPartiallyOverlap |
| ssa.c:18:7:18:7 | x[0..4)<int> | ssa.c:18:7:18:7 | x[0..4)<int> | MustExactlyOverlap |
| ssa.c:18:7:18:7 | x[4..8)<int> | ssa.c:18:7:18:7 | x | MayPartiallyOverlap |
| ssa.c:18:7:18:7 | x[4..8)<int> | ssa.c:18:7:18:7 | x[4..8)<int> | MustExactlyOverlap |
| ssa.c:20:7:20:7 | y | ssa.c:20:7:20:7 | y | MustExactlyOverlap |
| ssa.c:20:7:20:7 | y | ssa.c:20:7:20:7 | y[0..4)<int> | MustTotallyOverlap |
| ssa.c:20:7:20:7 | y | ssa.c:20:7:20:7 | y[4..8)<int> | MustTotallyOverlap |
| ssa.c:20:7:20:7 | y[0..4)<int> | ssa.c:20:7:20:7 | y | MayPartiallyOverlap |
| ssa.c:20:7:20:7 | y[0..4)<int> | ssa.c:20:7:20:7 | y[0..4)<int> | MustExactlyOverlap |
| ssa.c:20:7:20:7 | y[4..8)<int> | ssa.c:20:7:20:7 | y | MayPartiallyOverlap |
| ssa.c:20:7:20:7 | y[4..8)<int> | ssa.c:20:7:20:7 | y[4..8)<int> | MustExactlyOverlap |
| ssa.c:29:28:29:28 | f | ssa.c:29:28:29:28 | f | MustExactlyOverlap |
| ssa.c:29:28:29:28 | f | ssa.c:29:28:29:28 | f[0..4)<int> | MustTotallyOverlap |
| ssa.c:29:28:29:28 | f | ssa.c:29:28:29:28 | f[4..8)<int> | MustTotallyOverlap |
| ssa.c:29:28:29:28 | f | ssa.c:29:28:29:28 | f[8..12)<int> | MustTotallyOverlap |
| ssa.c:29:28:29:28 | f[0..4)<int> | ssa.c:29:28:29:28 | f | MayPartiallyOverlap |
| ssa.c:29:28:29:28 | f[0..4)<int> | ssa.c:29:28:29:28 | f[0..4)<int> | MustExactlyOverlap |
| ssa.c:29:28:29:28 | f[4..8)<int> | ssa.c:29:28:29:28 | f | MayPartiallyOverlap |
| ssa.c:29:28:29:28 | f[4..8)<int> | ssa.c:29:28:29:28 | f[4..8)<int> | MustExactlyOverlap |
| ssa.c:29:28:29:28 | f[8..12)<int> | ssa.c:29:28:29:28 | f | MayPartiallyOverlap |
| ssa.c:29:28:29:28 | f[8..12)<int> | ssa.c:29:28:29:28 | f[8..12)<int> | MustExactlyOverlap |
| ssa.cpp:13:23:13:23 | *p | ssa.cpp:13:23:13:23 | *p | MustExactlyOverlap |
| ssa.cpp:13:23:13:23 | *p | ssa.cpp:13:23:13:23 | *p[0..4)<int> | MustTotallyOverlap |
| ssa.cpp:13:23:13:23 | *p | ssa.cpp:13:23:13:23 | *p[4..8)<int> | MustTotallyOverlap |
| ssa.cpp:13:23:13:23 | *p | ssa.cpp:13:23:13:23 | ?*p | MustTotallyOverlap |
| ssa.cpp:13:23:13:23 | *p[0..4)<int> | ssa.cpp:13:23:13:23 | *p | MayPartiallyOverlap |
| ssa.cpp:13:23:13:23 | *p[0..4)<int> | ssa.cpp:13:23:13:23 | *p[0..4)<int> | MustExactlyOverlap |
| ssa.cpp:13:23:13:23 | *p[0..4)<int> | ssa.cpp:13:23:13:23 | ?*p | MayPartiallyOverlap |
| ssa.cpp:13:23:13:23 | *p[4..8)<int> | ssa.cpp:13:23:13:23 | *p | MayPartiallyOverlap |
| ssa.cpp:13:23:13:23 | *p[4..8)<int> | ssa.cpp:13:23:13:23 | *p[4..8)<int> | MustExactlyOverlap |
| ssa.cpp:13:23:13:23 | *p[4..8)<int> | ssa.cpp:13:23:13:23 | ?*p | MayPartiallyOverlap |
| ssa.cpp:13:23:13:23 | ?*p | ssa.cpp:13:23:13:23 | *p | MayPartiallyOverlap |
| ssa.cpp:13:23:13:23 | ?*p | ssa.cpp:13:23:13:23 | *p[0..4)<int> | MayPartiallyOverlap |
| ssa.cpp:13:23:13:23 | ?*p | ssa.cpp:13:23:13:23 | *p[4..8)<int> | MayPartiallyOverlap |
| ssa.cpp:13:23:13:23 | ?*p | ssa.cpp:13:23:13:23 | ?*p | MayPartiallyOverlap |
| ssa.cpp:68:38:68:38 | *p | ssa.cpp:68:38:68:38 | *p | MustExactlyOverlap |
| ssa.cpp:68:38:68:38 | *p | ssa.cpp:68:38:68:38 | *p[?..?)<char> | MustTotallyOverlap |
| ssa.cpp:68:38:68:38 | *p | ssa.cpp:68:38:68:38 | ?*p | MustTotallyOverlap |
| ssa.cpp:68:38:68:38 | *p[?..?)<char> | ssa.cpp:68:38:68:38 | *p | MayPartiallyOverlap |
| ssa.cpp:68:38:68:38 | *p[?..?)<char> | ssa.cpp:68:38:68:38 | *p[?..?)<char> | MayPartiallyOverlap |
| ssa.cpp:68:38:68:38 | *p[?..?)<char> | ssa.cpp:68:38:68:38 | ?*p | MayPartiallyOverlap |
| ssa.cpp:68:38:68:38 | ?*p | ssa.cpp:68:38:68:38 | *p | MayPartiallyOverlap |
| ssa.cpp:68:38:68:38 | ?*p | ssa.cpp:68:38:68:38 | *p[?..?)<char> | MayPartiallyOverlap |
| ssa.cpp:68:38:68:38 | ?*p | ssa.cpp:68:38:68:38 | ?*p | MayPartiallyOverlap |
| ssa.cpp:95:38:95:38 | ?a[0..?)<unknown> | ssa.cpp:95:38:95:38 | ?a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:95:38:95:38 | ?a[0..?)<unknown> | ssa.cpp:95:38:95:38 | a | MayPartiallyOverlap |
| ssa.cpp:95:38:95:38 | ?a[0..?)<unknown> | ssa.cpp:95:38:95:38 | a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:95:38:95:38 | a | ssa.cpp:95:38:95:38 | ?a[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:95:38:95:38 | a | ssa.cpp:95:38:95:38 | a | MustExactlyOverlap |
| ssa.cpp:95:38:95:38 | a | ssa.cpp:95:38:95:38 | a[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:95:38:95:38 | a[0..?)<unknown> | ssa.cpp:95:38:95:38 | ?a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:95:38:95:38 | a[0..?)<unknown> | ssa.cpp:95:38:95:38 | a | MayPartiallyOverlap |
| ssa.cpp:95:38:95:38 | a[0..?)<unknown> | ssa.cpp:95:38:95:38 | a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:100:31:100:31 | a | ssa.cpp:100:31:100:31 | a | MustExactlyOverlap |
| ssa.cpp:100:31:100:31 | a | ssa.cpp:100:31:100:31 | a[0..4)<int> | MustTotallyOverlap |
| ssa.cpp:100:31:100:31 | a | ssa.cpp:100:31:100:31 | a[4..8)<int> | MustTotallyOverlap |
| ssa.cpp:100:31:100:31 | a[0..4)<int> | ssa.cpp:100:31:100:31 | a | MayPartiallyOverlap |
| ssa.cpp:100:31:100:31 | a[0..4)<int> | ssa.cpp:100:31:100:31 | a[0..4)<int> | MustExactlyOverlap |
| ssa.cpp:100:31:100:31 | a[4..8)<int> | ssa.cpp:100:31:100:31 | a | MayPartiallyOverlap |
| ssa.cpp:100:31:100:31 | a[4..8)<int> | ssa.cpp:100:31:100:31 | a[4..8)<int> | MustExactlyOverlap |
| ssa.cpp:105:38:105:38 | ?a[0..?)<unknown> | ssa.cpp:105:38:105:38 | ?a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:105:38:105:38 | ?a[0..?)<unknown> | ssa.cpp:105:38:105:38 | a | MayPartiallyOverlap |
| ssa.cpp:105:38:105:38 | ?a[0..?)<unknown> | ssa.cpp:105:38:105:38 | a[0..4)<int> | MayPartiallyOverlap |
| ssa.cpp:105:38:105:38 | ?a[0..?)<unknown> | ssa.cpp:105:38:105:38 | a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:105:38:105:38 | ?a[0..?)<unknown> | ssa.cpp:105:38:105:38 | a[4..8)<int> | MayPartiallyOverlap |
| ssa.cpp:105:38:105:38 | a | ssa.cpp:105:38:105:38 | ?a[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:105:38:105:38 | a | ssa.cpp:105:38:105:38 | a | MustExactlyOverlap |
| ssa.cpp:105:38:105:38 | a | ssa.cpp:105:38:105:38 | a[0..4)<int> | MustTotallyOverlap |
| ssa.cpp:105:38:105:38 | a | ssa.cpp:105:38:105:38 | a[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:105:38:105:38 | a | ssa.cpp:105:38:105:38 | a[4..8)<int> | MustTotallyOverlap |
| ssa.cpp:105:38:105:38 | a[0..4)<int> | ssa.cpp:105:38:105:38 | ?a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:105:38:105:38 | a[0..4)<int> | ssa.cpp:105:38:105:38 | a | MayPartiallyOverlap |
| ssa.cpp:105:38:105:38 | a[0..4)<int> | ssa.cpp:105:38:105:38 | a[0..4)<int> | MustExactlyOverlap |
| ssa.cpp:105:38:105:38 | a[0..4)<int> | ssa.cpp:105:38:105:38 | a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:105:38:105:38 | a[0..?)<unknown> | ssa.cpp:105:38:105:38 | ?a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:105:38:105:38 | a[0..?)<unknown> | ssa.cpp:105:38:105:38 | a | MayPartiallyOverlap |
| ssa.cpp:105:38:105:38 | a[0..?)<unknown> | ssa.cpp:105:38:105:38 | a[0..4)<int> | MayPartiallyOverlap |
| ssa.cpp:105:38:105:38 | a[0..?)<unknown> | ssa.cpp:105:38:105:38 | a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:105:38:105:38 | a[0..?)<unknown> | ssa.cpp:105:38:105:38 | a[4..8)<int> | MayPartiallyOverlap |
| ssa.cpp:105:38:105:38 | a[4..8)<int> | ssa.cpp:105:38:105:38 | ?a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:105:38:105:38 | a[4..8)<int> | ssa.cpp:105:38:105:38 | a | MayPartiallyOverlap |
| ssa.cpp:105:38:105:38 | a[4..8)<int> | ssa.cpp:105:38:105:38 | a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:105:38:105:38 | a[4..8)<int> | ssa.cpp:105:38:105:38 | a[4..8)<int> | MustExactlyOverlap |
| ssa.cpp:112:9:112:9 | a | ssa.cpp:112:9:112:9 | a | MustExactlyOverlap |
| ssa.cpp:112:9:112:9 | a | ssa.cpp:112:9:112:9 | a[0..4)<int> | MustTotallyOverlap |
| ssa.cpp:112:9:112:9 | a | ssa.cpp:112:9:112:9 | a[4..8)<int> | MustTotallyOverlap |
| ssa.cpp:112:9:112:9 | a[0..4)<int> | ssa.cpp:112:9:112:9 | a | MayPartiallyOverlap |
| ssa.cpp:112:9:112:9 | a[0..4)<int> | ssa.cpp:112:9:112:9 | a[0..4)<int> | MustExactlyOverlap |
| ssa.cpp:112:9:112:9 | a[4..8)<int> | ssa.cpp:112:9:112:9 | a | MayPartiallyOverlap |
| ssa.cpp:112:9:112:9 | a[4..8)<int> | ssa.cpp:112:9:112:9 | a[4..8)<int> | MustExactlyOverlap |
| ssa.cpp:117:9:117:9 | ?a[0..?)<unknown> | ssa.cpp:117:9:117:9 | ?a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:117:9:117:9 | ?a[0..?)<unknown> | ssa.cpp:117:9:117:9 | a | MayPartiallyOverlap |
| ssa.cpp:117:9:117:9 | ?a[0..?)<unknown> | ssa.cpp:117:9:117:9 | a[0..4)<int> | MayPartiallyOverlap |
| ssa.cpp:117:9:117:9 | ?a[0..?)<unknown> | ssa.cpp:117:9:117:9 | a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:117:9:117:9 | ?a[0..?)<unknown> | ssa.cpp:117:9:117:9 | a[4..8)<int> | MayPartiallyOverlap |
| ssa.cpp:117:9:117:9 | a | ssa.cpp:117:9:117:9 | ?a[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:117:9:117:9 | a | ssa.cpp:117:9:117:9 | a | MustExactlyOverlap |
| ssa.cpp:117:9:117:9 | a | ssa.cpp:117:9:117:9 | a[0..4)<int> | MustTotallyOverlap |
| ssa.cpp:117:9:117:9 | a | ssa.cpp:117:9:117:9 | a[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:117:9:117:9 | a | ssa.cpp:117:9:117:9 | a[4..8)<int> | MustTotallyOverlap |
| ssa.cpp:117:9:117:9 | a[0..4)<int> | ssa.cpp:117:9:117:9 | ?a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:117:9:117:9 | a[0..4)<int> | ssa.cpp:117:9:117:9 | a | MayPartiallyOverlap |
| ssa.cpp:117:9:117:9 | a[0..4)<int> | ssa.cpp:117:9:117:9 | a[0..4)<int> | MustExactlyOverlap |
| ssa.cpp:117:9:117:9 | a[0..4)<int> | ssa.cpp:117:9:117:9 | a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:117:9:117:9 | a[0..?)<unknown> | ssa.cpp:117:9:117:9 | ?a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:117:9:117:9 | a[0..?)<unknown> | ssa.cpp:117:9:117:9 | a | MayPartiallyOverlap |
| ssa.cpp:117:9:117:9 | a[0..?)<unknown> | ssa.cpp:117:9:117:9 | a[0..4)<int> | MayPartiallyOverlap |
| ssa.cpp:117:9:117:9 | a[0..?)<unknown> | ssa.cpp:117:9:117:9 | a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:117:9:117:9 | a[0..?)<unknown> | ssa.cpp:117:9:117:9 | a[4..8)<int> | MayPartiallyOverlap |
| ssa.cpp:117:9:117:9 | a[4..8)<int> | ssa.cpp:117:9:117:9 | ?a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:117:9:117:9 | a[4..8)<int> | ssa.cpp:117:9:117:9 | a | MayPartiallyOverlap |
| ssa.cpp:117:9:117:9 | a[4..8)<int> | ssa.cpp:117:9:117:9 | a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:117:9:117:9 | a[4..8)<int> | ssa.cpp:117:9:117:9 | a[4..8)<int> | MustExactlyOverlap |
| ssa.cpp:123:9:123:9 | a | ssa.cpp:123:9:123:9 | a | MustExactlyOverlap |
| ssa.cpp:123:9:123:9 | a | ssa.cpp:123:9:123:9 | a[0..4)<int> | MustTotallyOverlap |
| ssa.cpp:123:9:123:9 | a | ssa.cpp:123:9:123:9 | a[4..8)<int> | MustTotallyOverlap |
| ssa.cpp:123:9:123:9 | a[0..4)<int> | ssa.cpp:123:9:123:9 | a | MayPartiallyOverlap |
| ssa.cpp:123:9:123:9 | a[0..4)<int> | ssa.cpp:123:9:123:9 | a[0..4)<int> | MustExactlyOverlap |
| ssa.cpp:123:9:123:9 | a[4..8)<int> | ssa.cpp:123:9:123:9 | a | MayPartiallyOverlap |
| ssa.cpp:123:9:123:9 | a[4..8)<int> | ssa.cpp:123:9:123:9 | a[4..8)<int> | MustExactlyOverlap |
| ssa.cpp:135:9:135:9 | a | ssa.cpp:135:9:135:9 | a | MustExactlyOverlap |
| ssa.cpp:135:9:135:9 | a | ssa.cpp:135:9:135:9 | a[0..4)<int> | MustTotallyOverlap |
| ssa.cpp:135:9:135:9 | a | ssa.cpp:135:9:135:9 | a[4..8)<int> | MustTotallyOverlap |
| ssa.cpp:135:9:135:9 | a[0..4)<int> | ssa.cpp:135:9:135:9 | a | MayPartiallyOverlap |
| ssa.cpp:135:9:135:9 | a[0..4)<int> | ssa.cpp:135:9:135:9 | a[0..4)<int> | MustExactlyOverlap |
| ssa.cpp:135:9:135:9 | a[4..8)<int> | ssa.cpp:135:9:135:9 | a | MayPartiallyOverlap |
| ssa.cpp:135:9:135:9 | a[4..8)<int> | ssa.cpp:135:9:135:9 | a[4..8)<int> | MustExactlyOverlap |
| ssa.cpp:146:9:146:9 | a | ssa.cpp:146:9:146:9 | a | MustExactlyOverlap |
| ssa.cpp:146:9:146:9 | a | ssa.cpp:146:9:146:9 | a[0..4)<int> | MustTotallyOverlap |
| ssa.cpp:146:9:146:9 | a | ssa.cpp:146:9:146:9 | a[4..8)<int> | MustTotallyOverlap |
| ssa.cpp:146:9:146:9 | a[0..4)<int> | ssa.cpp:146:9:146:9 | a | MayPartiallyOverlap |
| ssa.cpp:146:9:146:9 | a[0..4)<int> | ssa.cpp:146:9:146:9 | a[0..4)<int> | MustExactlyOverlap |
| ssa.cpp:146:9:146:9 | a[4..8)<int> | ssa.cpp:146:9:146:9 | a | MayPartiallyOverlap |
| ssa.cpp:146:9:146:9 | a[4..8)<int> | ssa.cpp:146:9:146:9 | a[4..8)<int> | MustExactlyOverlap |
| ssa.cpp:157:8:157:8 | a | ssa.cpp:157:8:157:8 | a | MustExactlyOverlap |
| ssa.cpp:157:8:157:8 | a | ssa.cpp:157:8:157:8 | a[0..4)<int> | MustTotallyOverlap |
| ssa.cpp:157:8:157:8 | a | ssa.cpp:157:8:157:8 | a[0..8)<Point> | MustTotallyOverlap |
| ssa.cpp:157:8:157:8 | a | ssa.cpp:157:8:157:8 | a[8..16)<Point> | MustTotallyOverlap |
| ssa.cpp:157:8:157:8 | a[0..4)<int> | ssa.cpp:157:8:157:8 | a | MayPartiallyOverlap |
| ssa.cpp:157:8:157:8 | a[0..4)<int> | ssa.cpp:157:8:157:8 | a[0..4)<int> | MustExactlyOverlap |
| ssa.cpp:157:8:157:8 | a[0..4)<int> | ssa.cpp:157:8:157:8 | a[0..8)<Point> | MayPartiallyOverlap |
| ssa.cpp:157:8:157:8 | a[0..8)<Point> | ssa.cpp:157:8:157:8 | a | MayPartiallyOverlap |
| ssa.cpp:157:8:157:8 | a[0..8)<Point> | ssa.cpp:157:8:157:8 | a[0..4)<int> | MustTotallyOverlap |
| ssa.cpp:157:8:157:8 | a[0..8)<Point> | ssa.cpp:157:8:157:8 | a[0..8)<Point> | MustExactlyOverlap |
| ssa.cpp:157:8:157:8 | a[8..16)<Point> | ssa.cpp:157:8:157:8 | a | MayPartiallyOverlap |
| ssa.cpp:157:8:157:8 | a[8..16)<Point> | ssa.cpp:157:8:157:8 | a[8..16)<Point> | MustExactlyOverlap |
| ssa.cpp:171:28:171:28 | w | ssa.cpp:171:28:171:28 | w | MustExactlyOverlap |
| ssa.cpp:171:28:171:28 | w | ssa.cpp:171:28:171:28 | w<int> | MustTotallyOverlap |
| ssa.cpp:171:28:171:28 | w<int> | ssa.cpp:171:28:171:28 | w | MustTotallyOverlap |
| ssa.cpp:171:28:171:28 | w<int> | ssa.cpp:171:28:171:28 | w<int> | MustExactlyOverlap |
| ssa.cpp:179:18:179:18 | *p | ssa.cpp:179:18:179:18 | *p | MustExactlyOverlap |
| ssa.cpp:179:18:179:18 | *p | ssa.cpp:179:18:179:18 | *p[0..4)<int> | MustTotallyOverlap |
| ssa.cpp:179:18:179:18 | *p | ssa.cpp:179:18:179:18 | ?*p | MustTotallyOverlap |
| ssa.cpp:179:18:179:18 | *p[0..4)<int> | ssa.cpp:179:18:179:18 | *p | MayPartiallyOverlap |
| ssa.cpp:179:18:179:18 | *p[0..4)<int> | ssa.cpp:179:18:179:18 | *p[0..4)<int> | MustExactlyOverlap |
| ssa.cpp:179:18:179:18 | *p[0..4)<int> | ssa.cpp:179:18:179:18 | ?*p | MayPartiallyOverlap |
| ssa.cpp:179:18:179:18 | ?*p | ssa.cpp:179:18:179:18 | *p | MayPartiallyOverlap |
| ssa.cpp:179:18:179:18 | ?*p | ssa.cpp:179:18:179:18 | *p[0..4)<int> | MayPartiallyOverlap |
| ssa.cpp:179:18:179:18 | ?*p | ssa.cpp:179:18:179:18 | ?*p | MayPartiallyOverlap |
| ssa.cpp:184:46:184:46 | *a | ssa.cpp:184:46:184:46 | *a | MustExactlyOverlap |
| ssa.cpp:184:46:184:46 | *a | ssa.cpp:184:46:184:46 | ?*a | MustTotallyOverlap |
| ssa.cpp:184:46:184:46 | *a | ssa.cpp:184:63:184:63 | *b | MustExactlyOverlap |
| ssa.cpp:184:46:184:46 | *a | ssa.cpp:184:63:184:63 | ?*b | MustTotallyOverlap |
| ssa.cpp:184:46:184:46 | ?*a | ssa.cpp:184:46:184:46 | *a | MayPartiallyOverlap |
| ssa.cpp:184:46:184:46 | ?*a | ssa.cpp:184:46:184:46 | ?*a | MayPartiallyOverlap |
| ssa.cpp:184:46:184:46 | ?*a | ssa.cpp:184:63:184:63 | *b | MayPartiallyOverlap |
| ssa.cpp:184:46:184:46 | ?*a | ssa.cpp:184:63:184:63 | ?*b | MayPartiallyOverlap |
| ssa.cpp:184:63:184:63 | *b | ssa.cpp:184:46:184:46 | *a | MustExactlyOverlap |
| ssa.cpp:184:63:184:63 | *b | ssa.cpp:184:46:184:46 | ?*a | MustTotallyOverlap |
| ssa.cpp:184:63:184:63 | *b | ssa.cpp:184:63:184:63 | *b | MustExactlyOverlap |
| ssa.cpp:184:63:184:63 | *b | ssa.cpp:184:63:184:63 | ?*b | MustTotallyOverlap |
| ssa.cpp:184:63:184:63 | ?*b | ssa.cpp:184:46:184:46 | *a | MayPartiallyOverlap |
| ssa.cpp:184:63:184:63 | ?*b | ssa.cpp:184:46:184:46 | ?*a | MayPartiallyOverlap |
| ssa.cpp:184:63:184:63 | ?*b | ssa.cpp:184:63:184:63 | *b | MayPartiallyOverlap |
| ssa.cpp:184:63:184:63 | ?*b | ssa.cpp:184:63:184:63 | ?*b | MayPartiallyOverlap |
| ssa.cpp:184:80:184:80 | *c | ssa.cpp:184:80:184:80 | *c | MustExactlyOverlap |
| ssa.cpp:184:80:184:80 | *c | ssa.cpp:184:80:184:80 | *c[0..4)<unsigned int> | MustTotallyOverlap |
| ssa.cpp:184:80:184:80 | *c | ssa.cpp:184:80:184:80 | ?*c | MustTotallyOverlap |
| ssa.cpp:184:80:184:80 | *c[0..4)<unsigned int> | ssa.cpp:184:80:184:80 | *c | MayPartiallyOverlap |
| ssa.cpp:184:80:184:80 | *c[0..4)<unsigned int> | ssa.cpp:184:80:184:80 | *c[0..4)<unsigned int> | MustExactlyOverlap |
| ssa.cpp:184:80:184:80 | *c[0..4)<unsigned int> | ssa.cpp:184:80:184:80 | ?*c | MayPartiallyOverlap |
| ssa.cpp:184:80:184:80 | ?*c | ssa.cpp:184:80:184:80 | *c | MayPartiallyOverlap |
| ssa.cpp:184:80:184:80 | ?*c | ssa.cpp:184:80:184:80 | *c[0..4)<unsigned int> | MayPartiallyOverlap |
| ssa.cpp:184:80:184:80 | ?*c | ssa.cpp:184:80:184:80 | ?*c | MayPartiallyOverlap |
| ssa.cpp:184:97:184:97 | *d | ssa.cpp:184:97:184:97 | *d | MustExactlyOverlap |
| ssa.cpp:184:97:184:97 | *d | ssa.cpp:184:97:184:97 | *d[0..4)<unsigned int> | MustTotallyOverlap |
| ssa.cpp:184:97:184:97 | *d | ssa.cpp:184:97:184:97 | ?*d | MustTotallyOverlap |
| ssa.cpp:184:97:184:97 | *d[0..4)<unsigned int> | ssa.cpp:184:97:184:97 | *d | MayPartiallyOverlap |
| ssa.cpp:184:97:184:97 | *d[0..4)<unsigned int> | ssa.cpp:184:97:184:97 | *d[0..4)<unsigned int> | MustExactlyOverlap |
| ssa.cpp:184:97:184:97 | *d[0..4)<unsigned int> | ssa.cpp:184:97:184:97 | ?*d | MayPartiallyOverlap |
| ssa.cpp:184:97:184:97 | ?*d | ssa.cpp:184:97:184:97 | *d | MayPartiallyOverlap |
| ssa.cpp:184:97:184:97 | ?*d | ssa.cpp:184:97:184:97 | *d[0..4)<unsigned int> | MayPartiallyOverlap |
| ssa.cpp:184:97:184:97 | ?*d | ssa.cpp:184:97:184:97 | ?*d | MayPartiallyOverlap |
| ssa.cpp:198:25:198:28 | *str1 | ssa.cpp:198:25:198:28 | *str1 | MustExactlyOverlap |
| ssa.cpp:198:25:198:28 | *str1 | ssa.cpp:198:25:198:28 | *str1[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:198:25:198:28 | *str1 | ssa.cpp:198:25:198:28 | ?*str1 | MustTotallyOverlap |
| ssa.cpp:198:25:198:28 | *str1[0..?)<unknown> | ssa.cpp:198:25:198:28 | *str1 | MayPartiallyOverlap |
| ssa.cpp:198:25:198:28 | *str1[0..?)<unknown> | ssa.cpp:198:25:198:28 | *str1[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:198:25:198:28 | *str1[0..?)<unknown> | ssa.cpp:198:25:198:28 | ?*str1 | MayPartiallyOverlap |
| ssa.cpp:198:25:198:28 | ?*str1 | ssa.cpp:198:25:198:28 | *str1 | MayPartiallyOverlap |
| ssa.cpp:198:25:198:28 | ?*str1 | ssa.cpp:198:25:198:28 | *str1[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:198:25:198:28 | ?*str1 | ssa.cpp:198:25:198:28 | ?*str1 | MayPartiallyOverlap |
| ssa.cpp:198:37:198:40 | *str2 | ssa.cpp:198:37:198:40 | *str2 | MustExactlyOverlap |
| ssa.cpp:198:37:198:40 | *str2 | ssa.cpp:198:37:198:40 | *str2[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:198:37:198:40 | *str2 | ssa.cpp:198:37:198:40 | ?*str2 | MustTotallyOverlap |
| ssa.cpp:198:37:198:40 | *str2[0..?)<unknown> | ssa.cpp:198:37:198:40 | *str2 | MayPartiallyOverlap |
| ssa.cpp:198:37:198:40 | *str2[0..?)<unknown> | ssa.cpp:198:37:198:40 | *str2[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:198:37:198:40 | *str2[0..?)<unknown> | ssa.cpp:198:37:198:40 | ?*str2 | MayPartiallyOverlap |
| ssa.cpp:198:37:198:40 | ?*str2 | ssa.cpp:198:37:198:40 | *str2 | MayPartiallyOverlap |
| ssa.cpp:198:37:198:40 | ?*str2 | ssa.cpp:198:37:198:40 | *str2[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:198:37:198:40 | ?*str2 | ssa.cpp:198:37:198:40 | ?*str2 | MayPartiallyOverlap |
| ssa.cpp:207:27:207:27 | x | ssa.cpp:207:27:207:27 | x | MustExactlyOverlap |
| ssa.cpp:207:27:207:27 | x | ssa.cpp:207:27:207:27 | x[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:207:27:207:27 | x[0..?)<unknown> | ssa.cpp:207:27:207:27 | x | MayPartiallyOverlap |
| ssa.cpp:207:27:207:27 | x[0..?)<unknown> | ssa.cpp:207:27:207:27 | x[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:208:7:208:7 | y | ssa.cpp:208:7:208:7 | y | MustExactlyOverlap |
| ssa.cpp:208:7:208:7 | y | ssa.cpp:208:7:208:7 | y[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:208:7:208:7 | y[0..?)<unknown> | ssa.cpp:208:7:208:7 | y | MayPartiallyOverlap |
| ssa.cpp:208:7:208:7 | y[0..?)<unknown> | ssa.cpp:208:7:208:7 | y[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:218:10:218:10 | c | ssa.cpp:218:10:218:10 | c | MustExactlyOverlap |
| ssa.cpp:218:10:218:10 | c | ssa.cpp:218:10:218:10 | c<unknown[2]> | MustTotallyOverlap |
| ssa.cpp:218:10:218:10 | c<unknown[2]> | ssa.cpp:218:10:218:10 | c | MustTotallyOverlap |
| ssa.cpp:218:10:218:10 | c<unknown[2]> | ssa.cpp:218:10:218:10 | c<unknown[2]> | MustExactlyOverlap |
| ssa.cpp:219:10:219:10 | d | ssa.cpp:219:10:219:10 | d | MustExactlyOverlap |
| ssa.cpp:219:10:219:10 | d | ssa.cpp:219:10:219:10 | d[0..1)<char> | MustTotallyOverlap |
| ssa.cpp:219:10:219:10 | d | ssa.cpp:219:10:219:10 | d[1..2)<char> | MustTotallyOverlap |
| ssa.cpp:219:10:219:10 | d[0..1)<char> | ssa.cpp:219:10:219:10 | d | MayPartiallyOverlap |
| ssa.cpp:219:10:219:10 | d[0..1)<char> | ssa.cpp:219:10:219:10 | d[0..1)<char> | MustExactlyOverlap |
| ssa.cpp:219:10:219:10 | d[1..2)<char> | ssa.cpp:219:10:219:10 | d | MayPartiallyOverlap |
| ssa.cpp:219:10:219:10 | d[1..2)<char> | ssa.cpp:219:10:219:10 | d[1..2)<char> | MustExactlyOverlap |
| ssa.cpp:220:10:220:10 | e | ssa.cpp:220:10:220:10 | e | MustExactlyOverlap |
| ssa.cpp:220:10:220:10 | e | ssa.cpp:220:10:220:10 | e[0..1)<char> | MustTotallyOverlap |
| ssa.cpp:220:10:220:10 | e | ssa.cpp:220:10:220:10 | e[1..2)<char> | MustTotallyOverlap |
| ssa.cpp:220:10:220:10 | e[0..1)<char> | ssa.cpp:220:10:220:10 | e | MayPartiallyOverlap |
| ssa.cpp:220:10:220:10 | e[0..1)<char> | ssa.cpp:220:10:220:10 | e[0..1)<char> | MustExactlyOverlap |
| ssa.cpp:220:10:220:10 | e[1..2)<char> | ssa.cpp:220:10:220:10 | e | MayPartiallyOverlap |
| ssa.cpp:220:10:220:10 | e[1..2)<char> | ssa.cpp:220:10:220:10 | e[1..2)<char> | MustExactlyOverlap |
| ssa.cpp:221:10:221:10 | f | ssa.cpp:221:10:221:10 | f | MustExactlyOverlap |
| ssa.cpp:221:10:221:10 | f | ssa.cpp:221:10:221:10 | f[0..1)<char> | MustTotallyOverlap |
| ssa.cpp:221:10:221:10 | f | ssa.cpp:221:10:221:10 | f[1..3)<unknown[2]> | MustTotallyOverlap |
| ssa.cpp:221:10:221:10 | f[0..1)<char> | ssa.cpp:221:10:221:10 | f | MayPartiallyOverlap |
| ssa.cpp:221:10:221:10 | f[0..1)<char> | ssa.cpp:221:10:221:10 | f[0..1)<char> | MustExactlyOverlap |
| ssa.cpp:221:10:221:10 | f[1..3)<unknown[2]> | ssa.cpp:221:10:221:10 | f | MayPartiallyOverlap |
| ssa.cpp:221:10:221:10 | f[1..3)<unknown[2]> | ssa.cpp:221:10:221:10 | f[1..3)<unknown[2]> | MustExactlyOverlap |
| ssa.cpp:235:5:235:17 | *#this | ssa.cpp:235:5:235:17 | *#this | MustExactlyOverlap |
| ssa.cpp:235:5:235:17 | *#this | ssa.cpp:235:5:235:17 | ?*#this | MustTotallyOverlap |
| ssa.cpp:235:5:235:17 | ?*#this | ssa.cpp:235:5:235:17 | *#this | MayPartiallyOverlap |
| ssa.cpp:235:5:235:17 | ?*#this | ssa.cpp:235:5:235:17 | ?*#this | MayPartiallyOverlap |
| ssa.cpp:236:10:236:10 | *#this | ssa.cpp:236:10:236:10 | *#this | MustExactlyOverlap |
| ssa.cpp:236:10:236:10 | *#this | ssa.cpp:236:10:236:10 | ?*#this | MustTotallyOverlap |
| ssa.cpp:236:10:236:10 | ?*#this | ssa.cpp:236:10:236:10 | *#this | MayPartiallyOverlap |
| ssa.cpp:236:10:236:10 | ?*#this | ssa.cpp:236:10:236:10 | ?*#this | MayPartiallyOverlap |
| ssa.cpp:240:17:240:17 | ?c | ssa.cpp:240:17:240:17 | ?c | MayPartiallyOverlap |
| ssa.cpp:240:17:240:17 | ?c | ssa.cpp:240:17:240:17 | c | MayPartiallyOverlap |
| ssa.cpp:240:17:240:17 | c | ssa.cpp:240:17:240:17 | ?c | MustTotallyOverlap |
| ssa.cpp:240:17:240:17 | c | ssa.cpp:240:17:240:17 | c | MustExactlyOverlap |
| ssa.cpp:243:17:243:18 | ?c2 | ssa.cpp:243:17:243:18 | ?c2 | MayPartiallyOverlap |
| ssa.cpp:243:17:243:18 | ?c2 | ssa.cpp:243:17:243:18 | c2 | MayPartiallyOverlap |
| ssa.cpp:243:17:243:18 | c2 | ssa.cpp:243:17:243:18 | ?c2 | MustTotallyOverlap |
| ssa.cpp:243:17:243:18 | c2 | ssa.cpp:243:17:243:18 | c2 | MustExactlyOverlap |
| ssa.cpp:247:40:247:42 | *src | ssa.cpp:247:40:247:42 | *src | MustExactlyOverlap |
| ssa.cpp:247:40:247:42 | *src | ssa.cpp:247:40:247:42 | *src[0..1)<char> | MustTotallyOverlap |
| ssa.cpp:247:40:247:42 | *src | ssa.cpp:247:40:247:42 | *src[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:247:40:247:42 | *src | ssa.cpp:247:40:247:42 | ?*src | MustTotallyOverlap |
| ssa.cpp:247:40:247:42 | *src[0..1)<char> | ssa.cpp:247:40:247:42 | *src | MayPartiallyOverlap |
| ssa.cpp:247:40:247:42 | *src[0..1)<char> | ssa.cpp:247:40:247:42 | *src[0..1)<char> | MustExactlyOverlap |
| ssa.cpp:247:40:247:42 | *src[0..1)<char> | ssa.cpp:247:40:247:42 | *src[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:247:40:247:42 | *src[0..1)<char> | ssa.cpp:247:40:247:42 | ?*src | MayPartiallyOverlap |
| ssa.cpp:247:40:247:42 | *src[0..?)<unknown> | ssa.cpp:247:40:247:42 | *src | MayPartiallyOverlap |
| ssa.cpp:247:40:247:42 | *src[0..?)<unknown> | ssa.cpp:247:40:247:42 | *src[0..1)<char> | MayPartiallyOverlap |
| ssa.cpp:247:40:247:42 | *src[0..?)<unknown> | ssa.cpp:247:40:247:42 | *src[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:247:40:247:42 | *src[0..?)<unknown> | ssa.cpp:247:40:247:42 | ?*src | MayPartiallyOverlap |
| ssa.cpp:247:40:247:42 | ?*src | ssa.cpp:247:40:247:42 | *src | MayPartiallyOverlap |
| ssa.cpp:247:40:247:42 | ?*src | ssa.cpp:247:40:247:42 | *src[0..1)<char> | MayPartiallyOverlap |
| ssa.cpp:247:40:247:42 | ?*src | ssa.cpp:247:40:247:42 | *src[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:247:40:247:42 | ?*src | ssa.cpp:247:40:247:42 | ?*src | MayPartiallyOverlap |
| ssa.cpp:248:15:248:28 | ?dynamic{1} | ssa.cpp:248:15:248:28 | ?dynamic{1} | MayPartiallyOverlap |
| ssa.cpp:248:15:248:28 | ?dynamic{1} | ssa.cpp:248:15:248:28 | dynamic{1} | MayPartiallyOverlap |
| ssa.cpp:248:15:248:28 | ?dynamic{1} | ssa.cpp:248:15:248:28 | dynamic{1}[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:248:15:248:28 | dynamic{1} | ssa.cpp:248:15:248:28 | ?dynamic{1} | MustTotallyOverlap |
| ssa.cpp:248:15:248:28 | dynamic{1} | ssa.cpp:248:15:248:28 | dynamic{1} | MustExactlyOverlap |
| ssa.cpp:248:15:248:28 | dynamic{1} | ssa.cpp:248:15:248:28 | dynamic{1}[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:248:15:248:28 | dynamic{1}[0..?)<unknown> | ssa.cpp:248:15:248:28 | ?dynamic{1} | MayPartiallyOverlap |
| ssa.cpp:248:15:248:28 | dynamic{1}[0..?)<unknown> | ssa.cpp:248:15:248:28 | dynamic{1} | MayPartiallyOverlap |
| ssa.cpp:248:15:248:28 | dynamic{1}[0..?)<unknown> | ssa.cpp:248:15:248:28 | dynamic{1}[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:268:28:268:28 | *s | ssa.cpp:268:28:268:28 | *s | MustExactlyOverlap |
| ssa.cpp:268:28:268:28 | *s | ssa.cpp:268:28:268:28 | *s[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:268:28:268:28 | *s | ssa.cpp:268:28:268:28 | ?*s | MustTotallyOverlap |
| ssa.cpp:268:28:268:28 | *s[0..?)<unknown> | ssa.cpp:268:28:268:28 | *s | MayPartiallyOverlap |
| ssa.cpp:268:28:268:28 | *s[0..?)<unknown> | ssa.cpp:268:28:268:28 | *s[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:268:28:268:28 | *s[0..?)<unknown> | ssa.cpp:268:28:268:28 | ?*s | MayPartiallyOverlap |
| ssa.cpp:268:28:268:28 | ?*s | ssa.cpp:268:28:268:28 | *s | MayPartiallyOverlap |
| ssa.cpp:268:28:268:28 | ?*s | ssa.cpp:268:28:268:28 | *s[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:268:28:268:28 | ?*s | ssa.cpp:268:28:268:28 | ?*s | MayPartiallyOverlap |
| ssa.cpp:269:15:269:20 | ?dynamic{1} | ssa.cpp:269:15:269:20 | ?dynamic{1} | MayPartiallyOverlap |
| ssa.cpp:269:15:269:20 | ?dynamic{1} | ssa.cpp:269:15:269:20 | dynamic{1} | MayPartiallyOverlap |
| ssa.cpp:269:15:269:20 | ?dynamic{1} | ssa.cpp:269:15:269:20 | dynamic{1}[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:269:15:269:20 | dynamic{1} | ssa.cpp:269:15:269:20 | ?dynamic{1} | MustTotallyOverlap |
| ssa.cpp:269:15:269:20 | dynamic{1} | ssa.cpp:269:15:269:20 | dynamic{1} | MustExactlyOverlap |
| ssa.cpp:269:15:269:20 | dynamic{1} | ssa.cpp:269:15:269:20 | dynamic{1}[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:269:15:269:20 | dynamic{1}[0..?)<unknown> | ssa.cpp:269:15:269:20 | ?dynamic{1} | MayPartiallyOverlap |
| ssa.cpp:269:15:269:20 | dynamic{1}[0..?)<unknown> | ssa.cpp:269:15:269:20 | dynamic{1} | MayPartiallyOverlap |
| ssa.cpp:269:15:269:20 | dynamic{1}[0..?)<unknown> | ssa.cpp:269:15:269:20 | dynamic{1}[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:274:8:274:9 | pp | ssa.cpp:274:8:274:9 | pp | MustExactlyOverlap |
| ssa.cpp:276:9:276:9 | a | ssa.cpp:276:9:276:9 | a | MustExactlyOverlap |
| ssa.cpp:276:9:276:9 | a | ssa.cpp:276:9:276:9 | a[0..4)<int> | MustTotallyOverlap |
| ssa.cpp:276:9:276:9 | a | ssa.cpp:276:9:276:9 | a[4..8)<int> | MustTotallyOverlap |
| ssa.cpp:276:9:276:9 | a[0..4)<int> | ssa.cpp:276:9:276:9 | a | MayPartiallyOverlap |
| ssa.cpp:276:9:276:9 | a[0..4)<int> | ssa.cpp:276:9:276:9 | a[0..4)<int> | MustExactlyOverlap |
| ssa.cpp:276:9:276:9 | a[4..8)<int> | ssa.cpp:276:9:276:9 | a | MayPartiallyOverlap |
| ssa.cpp:276:9:276:9 | a[4..8)<int> | ssa.cpp:276:9:276:9 | a[4..8)<int> | MustExactlyOverlap |
| ssa.cpp:286:3:286:3 | *#this | ssa.cpp:286:3:286:3 | *#this | MustExactlyOverlap |
| ssa.cpp:286:3:286:3 | *#this | ssa.cpp:286:3:286:3 | ?*#this | MustTotallyOverlap |
| ssa.cpp:286:3:286:3 | ?*#this | ssa.cpp:286:3:286:3 | *#this | MayPartiallyOverlap |
| ssa.cpp:286:3:286:3 | ?*#this | ssa.cpp:286:3:286:3 | ?*#this | MayPartiallyOverlap |
| ssa.cpp:287:3:287:3 | *#this | ssa.cpp:287:3:287:3 | *#this | MustExactlyOverlap |
| ssa.cpp:287:3:287:3 | *#this | ssa.cpp:287:3:287:3 | ?*#this | MustTotallyOverlap |
| ssa.cpp:287:3:287:3 | ?*#this | ssa.cpp:287:3:287:3 | *#this | MayPartiallyOverlap |
| ssa.cpp:287:3:287:3 | ?*#this | ssa.cpp:287:3:287:3 | ?*#this | MayPartiallyOverlap |
| ssa.cpp:287:5:287:5 | *(unnamed parameter 0) | ssa.cpp:287:5:287:5 | *(unnamed parameter 0) | MustExactlyOverlap |
| ssa.cpp:287:5:287:5 | *(unnamed parameter 0) | ssa.cpp:287:5:287:5 | ?*(unnamed parameter 0) | MustTotallyOverlap |
| ssa.cpp:287:5:287:5 | ?*(unnamed parameter 0) | ssa.cpp:287:5:287:5 | *(unnamed parameter 0) | MayPartiallyOverlap |
| ssa.cpp:287:5:287:5 | ?*(unnamed parameter 0) | ssa.cpp:287:5:287:5 | ?*(unnamed parameter 0) | MayPartiallyOverlap |
| ssa.cpp:288:3:288:3 | *#this | ssa.cpp:288:3:288:3 | *#this | MustExactlyOverlap |
| ssa.cpp:288:3:288:3 | *#this | ssa.cpp:288:3:288:3 | ?*#this | MustTotallyOverlap |
| ssa.cpp:288:3:288:3 | ?*#this | ssa.cpp:288:3:288:3 | *#this | MayPartiallyOverlap |
| ssa.cpp:288:3:288:3 | ?*#this | ssa.cpp:288:3:288:3 | ?*#this | MayPartiallyOverlap |
| ssa.cpp:292:14:292:22 | ?dynamic{1} | ssa.cpp:292:14:292:22 | ?dynamic{1} | MayPartiallyOverlap |
| ssa.cpp:292:14:292:22 | ?dynamic{1} | ssa.cpp:292:14:292:22 | dynamic{1} | MayPartiallyOverlap |
| ssa.cpp:292:14:292:22 | dynamic{1} | ssa.cpp:292:14:292:22 | ?dynamic{1} | MustTotallyOverlap |
| ssa.cpp:292:14:292:22 | dynamic{1} | ssa.cpp:292:14:292:22 | dynamic{1} | MustExactlyOverlap |
| ssa.cpp:293:14:293:22 | ?dynamic{2} | ssa.cpp:293:14:293:22 | ?dynamic{2} | MayPartiallyOverlap |
| ssa.cpp:293:14:293:22 | ?dynamic{2} | ssa.cpp:293:14:293:22 | dynamic{2} | MayPartiallyOverlap |
| ssa.cpp:293:14:293:22 | dynamic{2} | ssa.cpp:293:14:293:22 | ?dynamic{2} | MustTotallyOverlap |
| ssa.cpp:293:14:293:22 | dynamic{2} | ssa.cpp:293:14:293:22 | dynamic{2} | MustExactlyOverlap |
| ssa.cpp:294:12:294:26 | ?dynamic{3} | ssa.cpp:294:12:294:26 | ?dynamic{3} | MayPartiallyOverlap |
| ssa.cpp:294:12:294:26 | ?dynamic{3} | ssa.cpp:294:12:294:26 | ?dynamic{3}[0..4)<A> | MayPartiallyOverlap |
| ssa.cpp:294:12:294:26 | ?dynamic{3} | ssa.cpp:294:12:294:26 | dynamic{3} | MayPartiallyOverlap |
| ssa.cpp:294:12:294:26 | ?dynamic{3} | ssa.cpp:294:12:294:26 | dynamic{3}[0..4)<int> | MayPartiallyOverlap |
| ssa.cpp:294:12:294:26 | ?dynamic{3}[0..4)<A> | ssa.cpp:294:12:294:26 | ?dynamic{3} | MayPartiallyOverlap |
| ssa.cpp:294:12:294:26 | ?dynamic{3}[0..4)<A> | ssa.cpp:294:12:294:26 | ?dynamic{3}[0..4)<A> | MayPartiallyOverlap |
| ssa.cpp:294:12:294:26 | ?dynamic{3}[0..4)<A> | ssa.cpp:294:12:294:26 | dynamic{3} | MayPartiallyOverlap |
| ssa.cpp:294:12:294:26 | ?dynamic{3}[0..4)<A> | ssa.cpp:294:12:294:26 | dynamic{3}[0..4)<int> | MayPartiallyOverlap |
| ssa.cpp:294:12:294:26 | dynamic{3} | ssa.cpp:294:12:294:26 | ?dynamic{3} | MustTotallyOverlap |
| ssa.cpp:294:12:294:26 | dynamic{3} | ssa.cpp:294:12:294:26 | ?dynamic{3}[0..4)<A> | MustTotallyOverlap |
| ssa.cpp:294:12:294:26 | dynamic{3} | ssa.cpp:294:12:294:26 | dynamic{3} | MustExactlyOverlap |
| ssa.cpp:294:12:294:26 | dynamic{3} | ssa.cpp:294:12:294:26 | dynamic{3}[0..4)<int> | MustTotallyOverlap |
| ssa.cpp:294:12:294:26 | dynamic{3}[0..4)<int> | ssa.cpp:294:12:294:26 | ?dynamic{3} | MayPartiallyOverlap |
| ssa.cpp:294:12:294:26 | dynamic{3}[0..4)<int> | ssa.cpp:294:12:294:26 | ?dynamic{3}[0..4)<A> | MustTotallyOverlap |
| ssa.cpp:294:12:294:26 | dynamic{3}[0..4)<int> | ssa.cpp:294:12:294:26 | dynamic{3} | MayPartiallyOverlap |
| ssa.cpp:294:12:294:26 | dynamic{3}[0..4)<int> | ssa.cpp:294:12:294:26 | dynamic{3}[0..4)<int> | MustExactlyOverlap |
| ssa.cpp:294:18:294:25 | ?dynamic{3} | ssa.cpp:294:18:294:25 | ?dynamic{3} | MayPartiallyOverlap |
| ssa.cpp:294:18:294:25 | ?dynamic{3} | ssa.cpp:294:18:294:25 | ?dynamic{3}[0..4)<A> | MayPartiallyOverlap |
| ssa.cpp:294:18:294:25 | ?dynamic{3} | ssa.cpp:294:18:294:25 | ?dynamic{3}[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:294:18:294:25 | ?dynamic{3} | ssa.cpp:294:18:294:25 | dynamic{3} | MayPartiallyOverlap |
| ssa.cpp:294:18:294:25 | ?dynamic{3} | ssa.cpp:294:18:294:25 | dynamic{3}[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:294:18:294:25 | ?dynamic{3}[0..4)<A> | ssa.cpp:294:18:294:25 | ?dynamic{3} | MayPartiallyOverlap |
| ssa.cpp:294:18:294:25 | ?dynamic{3}[0..4)<A> | ssa.cpp:294:18:294:25 | ?dynamic{3}[0..4)<A> | MayPartiallyOverlap |
| ssa.cpp:294:18:294:25 | ?dynamic{3}[0..4)<A> | ssa.cpp:294:18:294:25 | ?dynamic{3}[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:294:18:294:25 | ?dynamic{3}[0..4)<A> | ssa.cpp:294:18:294:25 | dynamic{3} | MayPartiallyOverlap |
| ssa.cpp:294:18:294:25 | ?dynamic{3}[0..4)<A> | ssa.cpp:294:18:294:25 | dynamic{3}[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:294:18:294:25 | ?dynamic{3}[0..?)<unknown> | ssa.cpp:294:18:294:25 | ?dynamic{3} | MayPartiallyOverlap |
| ssa.cpp:294:18:294:25 | ?dynamic{3}[0..?)<unknown> | ssa.cpp:294:18:294:25 | ?dynamic{3}[0..4)<A> | MayPartiallyOverlap |
| ssa.cpp:294:18:294:25 | ?dynamic{3}[0..?)<unknown> | ssa.cpp:294:18:294:25 | ?dynamic{3}[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:294:18:294:25 | ?dynamic{3}[0..?)<unknown> | ssa.cpp:294:18:294:25 | dynamic{3} | MayPartiallyOverlap |
| ssa.cpp:294:18:294:25 | ?dynamic{3}[0..?)<unknown> | ssa.cpp:294:18:294:25 | dynamic{3}[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:294:18:294:25 | dynamic{3} | ssa.cpp:294:18:294:25 | ?dynamic{3} | MustTotallyOverlap |
| ssa.cpp:294:18:294:25 | dynamic{3} | ssa.cpp:294:18:294:25 | ?dynamic{3}[0..4)<A> | MustTotallyOverlap |
| ssa.cpp:294:18:294:25 | dynamic{3} | ssa.cpp:294:18:294:25 | ?dynamic{3}[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:294:18:294:25 | dynamic{3} | ssa.cpp:294:18:294:25 | dynamic{3} | MustExactlyOverlap |
| ssa.cpp:294:18:294:25 | dynamic{3} | ssa.cpp:294:18:294:25 | dynamic{3}[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:294:18:294:25 | dynamic{3}[0..?)<unknown> | ssa.cpp:294:18:294:25 | ?dynamic{3} | MayPartiallyOverlap |
| ssa.cpp:294:18:294:25 | dynamic{3}[0..?)<unknown> | ssa.cpp:294:18:294:25 | ?dynamic{3}[0..4)<A> | MayPartiallyOverlap |
| ssa.cpp:294:18:294:25 | dynamic{3}[0..?)<unknown> | ssa.cpp:294:18:294:25 | ?dynamic{3}[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:294:18:294:25 | dynamic{3}[0..?)<unknown> | ssa.cpp:294:18:294:25 | dynamic{3} | MayPartiallyOverlap |
| ssa.cpp:294:18:294:25 | dynamic{3}[0..?)<unknown> | ssa.cpp:294:18:294:25 | dynamic{3}[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:295:10:295:14 | ?dynamic{5} | ssa.cpp:295:10:295:14 | ?dynamic{5} | MayPartiallyOverlap |
| ssa.cpp:295:10:295:14 | ?dynamic{5} | ssa.cpp:295:10:295:14 | ?dynamic{5}[0..4)<A> | MayPartiallyOverlap |
| ssa.cpp:295:10:295:14 | ?dynamic{5} | ssa.cpp:295:10:295:14 | dynamic{5} | MayPartiallyOverlap |
| ssa.cpp:295:10:295:14 | ?dynamic{5}[0..4)<A> | ssa.cpp:295:10:295:14 | ?dynamic{5} | MayPartiallyOverlap |
| ssa.cpp:295:10:295:14 | ?dynamic{5}[0..4)<A> | ssa.cpp:295:10:295:14 | ?dynamic{5}[0..4)<A> | MayPartiallyOverlap |
| ssa.cpp:295:10:295:14 | ?dynamic{5}[0..4)<A> | ssa.cpp:295:10:295:14 | dynamic{5} | MayPartiallyOverlap |
| ssa.cpp:295:10:295:14 | dynamic{5} | ssa.cpp:295:10:295:14 | ?dynamic{5} | MustTotallyOverlap |
| ssa.cpp:295:10:295:14 | dynamic{5} | ssa.cpp:295:10:295:14 | ?dynamic{5}[0..4)<A> | MustTotallyOverlap |
| ssa.cpp:295:10:295:14 | dynamic{5} | ssa.cpp:295:10:295:14 | dynamic{5} | MustExactlyOverlap |
| ssa.cpp:301:27:301:30 | *argv | ssa.cpp:301:27:301:30 | *argv | MustExactlyOverlap |
| ssa.cpp:301:27:301:30 | *argv | ssa.cpp:301:27:301:30 | *argv[0..8)<decltype(nullptr)> | MustTotallyOverlap |
| ssa.cpp:301:27:301:30 | *argv | ssa.cpp:301:27:301:30 | *argv[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:301:27:301:30 | *argv | ssa.cpp:301:27:301:30 | ?*argv | MustTotallyOverlap |
| ssa.cpp:301:27:301:30 | *argv | ssa.cpp:301:27:301:30 | ?*argv[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:301:27:301:30 | *argv[0..8)<decltype(nullptr)> | ssa.cpp:301:27:301:30 | *argv | MayPartiallyOverlap |
| ssa.cpp:301:27:301:30 | *argv[0..8)<decltype(nullptr)> | ssa.cpp:301:27:301:30 | *argv[0..8)<decltype(nullptr)> | MustExactlyOverlap |
| ssa.cpp:301:27:301:30 | *argv[0..8)<decltype(nullptr)> | ssa.cpp:301:27:301:30 | *argv[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:301:27:301:30 | *argv[0..8)<decltype(nullptr)> | ssa.cpp:301:27:301:30 | ?*argv | MayPartiallyOverlap |
| ssa.cpp:301:27:301:30 | *argv[0..8)<decltype(nullptr)> | ssa.cpp:301:27:301:30 | ?*argv[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:301:27:301:30 | *argv[0..?)<unknown> | ssa.cpp:301:27:301:30 | *argv | MayPartiallyOverlap |
| ssa.cpp:301:27:301:30 | *argv[0..?)<unknown> | ssa.cpp:301:27:301:30 | *argv[0..8)<decltype(nullptr)> | MayPartiallyOverlap |
| ssa.cpp:301:27:301:30 | *argv[0..?)<unknown> | ssa.cpp:301:27:301:30 | *argv[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:301:27:301:30 | *argv[0..?)<unknown> | ssa.cpp:301:27:301:30 | ?*argv | MayPartiallyOverlap |
| ssa.cpp:301:27:301:30 | *argv[0..?)<unknown> | ssa.cpp:301:27:301:30 | ?*argv[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:301:27:301:30 | ?*argv | ssa.cpp:301:27:301:30 | *argv | MayPartiallyOverlap |
| ssa.cpp:301:27:301:30 | ?*argv | ssa.cpp:301:27:301:30 | *argv[0..8)<decltype(nullptr)> | MayPartiallyOverlap |
| ssa.cpp:301:27:301:30 | ?*argv | ssa.cpp:301:27:301:30 | *argv[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:301:27:301:30 | ?*argv | ssa.cpp:301:27:301:30 | ?*argv | MayPartiallyOverlap |
| ssa.cpp:301:27:301:30 | ?*argv | ssa.cpp:301:27:301:30 | ?*argv[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:301:27:301:30 | ?*argv[0..?)<unknown> | ssa.cpp:301:27:301:30 | *argv | MayPartiallyOverlap |
| ssa.cpp:301:27:301:30 | ?*argv[0..?)<unknown> | ssa.cpp:301:27:301:30 | *argv[0..8)<decltype(nullptr)> | MayPartiallyOverlap |
| ssa.cpp:301:27:301:30 | ?*argv[0..?)<unknown> | ssa.cpp:301:27:301:30 | *argv[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:301:27:301:30 | ?*argv[0..?)<unknown> | ssa.cpp:301:27:301:30 | ?*argv | MayPartiallyOverlap |
| ssa.cpp:301:27:301:30 | ?*argv[0..?)<unknown> | ssa.cpp:301:27:301:30 | ?*argv[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:310:8:310:11 | *#this | ssa.cpp:310:8:310:11 | *#this | MustExactlyOverlap |
| ssa.cpp:310:8:310:11 | *#this | ssa.cpp:310:8:310:11 | *#this[0..4)<int> | MustTotallyOverlap |
| ssa.cpp:310:8:310:11 | *#this | ssa.cpp:310:8:310:11 | ?*#this | MustTotallyOverlap |
| ssa.cpp:310:8:310:11 | *#this[0..4)<int> | ssa.cpp:310:8:310:11 | *#this | MayPartiallyOverlap |
| ssa.cpp:310:8:310:11 | *#this[0..4)<int> | ssa.cpp:310:8:310:11 | *#this[0..4)<int> | MustExactlyOverlap |
| ssa.cpp:310:8:310:11 | *#this[0..4)<int> | ssa.cpp:310:8:310:11 | ?*#this | MayPartiallyOverlap |
| ssa.cpp:310:8:310:11 | ?*#this | ssa.cpp:310:8:310:11 | *#this | MayPartiallyOverlap |
| ssa.cpp:310:8:310:11 | ?*#this | ssa.cpp:310:8:310:11 | *#this[0..4)<int> | MayPartiallyOverlap |
| ssa.cpp:310:8:310:11 | ?*#this | ssa.cpp:310:8:310:11 | ?*#this | MayPartiallyOverlap |
| ssa.cpp:319:37:319:37 | *s | ssa.cpp:319:37:319:37 | *s | MustExactlyOverlap |
| ssa.cpp:319:37:319:37 | *s | ssa.cpp:319:37:319:37 | *s[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:319:37:319:37 | *s | ssa.cpp:319:37:319:37 | ?*s | MustTotallyOverlap |
| ssa.cpp:319:37:319:37 | *s[0..?)<unknown> | ssa.cpp:319:37:319:37 | *s | MayPartiallyOverlap |
| ssa.cpp:319:37:319:37 | *s[0..?)<unknown> | ssa.cpp:319:37:319:37 | *s[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:319:37:319:37 | *s[0..?)<unknown> | ssa.cpp:319:37:319:37 | ?*s | MayPartiallyOverlap |
| ssa.cpp:319:37:319:37 | ?*s | ssa.cpp:319:37:319:37 | *s | MayPartiallyOverlap |
| ssa.cpp:319:37:319:37 | ?*s | ssa.cpp:319:37:319:37 | *s[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:319:37:319:37 | ?*s | ssa.cpp:319:37:319:37 | ?*s | MayPartiallyOverlap |
| ssa.cpp:321:7:321:12 | ?buffer[0..?)<unknown> | ssa.cpp:321:7:321:12 | ?buffer[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:321:7:321:12 | ?buffer[0..?)<unknown> | ssa.cpp:321:7:321:12 | buffer | MayPartiallyOverlap |
| ssa.cpp:321:7:321:12 | ?buffer[0..?)<unknown> | ssa.cpp:321:7:321:12 | buffer[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:321:7:321:12 | buffer | ssa.cpp:321:7:321:12 | ?buffer[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:321:7:321:12 | buffer | ssa.cpp:321:7:321:12 | buffer | MustExactlyOverlap |
| ssa.cpp:321:7:321:12 | buffer | ssa.cpp:321:7:321:12 | buffer[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:321:7:321:12 | buffer[0..?)<unknown> | ssa.cpp:321:7:321:12 | ?buffer[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:321:7:321:12 | buffer[0..?)<unknown> | ssa.cpp:321:7:321:12 | buffer | MayPartiallyOverlap |
| ssa.cpp:321:7:321:12 | buffer[0..?)<unknown> | ssa.cpp:321:7:321:12 | buffer[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:322:8:322:11 | ?ptr1[0..?)<unknown> | ssa.cpp:322:8:322:11 | ?ptr1[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:322:8:322:11 | ?ptr1[0..?)<unknown> | ssa.cpp:322:8:322:11 | ptr1 | MayPartiallyOverlap |
| ssa.cpp:322:8:322:11 | ?ptr1[0..?)<unknown> | ssa.cpp:322:8:322:11 | ptr1[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:322:8:322:11 | ptr1 | ssa.cpp:322:8:322:11 | ?ptr1[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:322:8:322:11 | ptr1 | ssa.cpp:322:8:322:11 | ptr1 | MustExactlyOverlap |
| ssa.cpp:322:8:322:11 | ptr1 | ssa.cpp:322:8:322:11 | ptr1[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:322:8:322:11 | ptr1[0..?)<unknown> | ssa.cpp:322:8:322:11 | ?ptr1[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:322:8:322:11 | ptr1[0..?)<unknown> | ssa.cpp:322:8:322:11 | ptr1 | MayPartiallyOverlap |
| ssa.cpp:322:8:322:11 | ptr1[0..?)<unknown> | ssa.cpp:322:8:322:11 | ptr1[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:402:7:402:7 | b | ssa.cpp:402:7:402:7 | b | MustExactlyOverlap |
| ssa.cpp:402:7:402:7 | b | ssa.cpp:402:7:402:7 | b[0..4)<int> | MustTotallyOverlap |
| ssa.cpp:402:7:402:7 | b[0..4)<int> | ssa.cpp:402:7:402:7 | b | MayPartiallyOverlap |
| ssa.cpp:402:7:402:7 | b[0..4)<int> | ssa.cpp:402:7:402:7 | b[0..4)<int> | MustExactlyOverlap |
| ssa.cpp:403:7:403:7 | c | ssa.cpp:403:7:403:7 | c | MustExactlyOverlap |
| ssa.cpp:418:7:418:7 | x | ssa.cpp:418:7:418:7 | x | MustExactlyOverlap |
| ssa.cpp:418:7:418:7 | x | ssa.cpp:418:7:418:7 | x[0..4)<int> | MustTotallyOverlap |
| ssa.cpp:418:7:418:7 | x | ssa.cpp:418:7:418:7 | x[4..8)<int> | MustTotallyOverlap |
| ssa.cpp:418:7:418:7 | x[0..4)<int> | ssa.cpp:418:7:418:7 | x | MayPartiallyOverlap |
| ssa.cpp:418:7:418:7 | x[0..4)<int> | ssa.cpp:418:7:418:7 | x[0..4)<int> | MustExactlyOverlap |
| ssa.cpp:418:7:418:7 | x[4..8)<int> | ssa.cpp:418:7:418:7 | x | MayPartiallyOverlap |
| ssa.cpp:418:7:418:7 | x[4..8)<int> | ssa.cpp:418:7:418:7 | x[4..8)<int> | MustExactlyOverlap |
| ssa.cpp:442:37:442:37 | *a | ssa.cpp:442:37:442:37 | *a | MustExactlyOverlap |
| ssa.cpp:442:37:442:37 | *a | ssa.cpp:442:37:442:37 | ?*a | MustTotallyOverlap |
| ssa.cpp:442:37:442:37 | ?*a | ssa.cpp:442:37:442:37 | *a | MayPartiallyOverlap |
| ssa.cpp:442:37:442:37 | ?*a | ssa.cpp:442:37:442:37 | ?*a | MayPartiallyOverlap |
| ssa.cpp:442:46:442:46 | *b | ssa.cpp:442:46:442:46 | *b | MustExactlyOverlap |
| ssa.cpp:442:46:442:46 | *b | ssa.cpp:442:46:442:46 | ?*b | MustTotallyOverlap |
| ssa.cpp:442:46:442:46 | ?*b | ssa.cpp:442:46:442:46 | *b | MayPartiallyOverlap |
| ssa.cpp:442:46:442:46 | ?*b | ssa.cpp:442:46:442:46 | ?*b | MayPartiallyOverlap |
| ssa.cpp:446:34:446:34 | *a | ssa.cpp:446:34:446:34 | *a | MustExactlyOverlap |
| ssa.cpp:446:34:446:34 | *a | ssa.cpp:446:34:446:34 | *a[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:446:34:446:34 | *a | ssa.cpp:446:34:446:34 | ?*a | MustTotallyOverlap |
| ssa.cpp:446:34:446:34 | *a | ssa.cpp:446:34:446:34 | ?*a[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:446:34:446:34 | *a | ssa.cpp:446:43:446:43 | *b | MustExactlyOverlap |
| ssa.cpp:446:34:446:34 | *a | ssa.cpp:446:43:446:43 | ?*b | MustTotallyOverlap |
| ssa.cpp:446:34:446:34 | *a[0..?)<unknown> | ssa.cpp:446:34:446:34 | *a | MayPartiallyOverlap |
| ssa.cpp:446:34:446:34 | *a[0..?)<unknown> | ssa.cpp:446:34:446:34 | *a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:446:34:446:34 | *a[0..?)<unknown> | ssa.cpp:446:34:446:34 | ?*a | MayPartiallyOverlap |
| ssa.cpp:446:34:446:34 | *a[0..?)<unknown> | ssa.cpp:446:34:446:34 | ?*a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:446:34:446:34 | *a[0..?)<unknown> | ssa.cpp:446:43:446:43 | *b | MayPartiallyOverlap |
| ssa.cpp:446:34:446:34 | *a[0..?)<unknown> | ssa.cpp:446:43:446:43 | ?*b | MayPartiallyOverlap |
| ssa.cpp:446:34:446:34 | ?*a | ssa.cpp:446:34:446:34 | *a | MayPartiallyOverlap |
| ssa.cpp:446:34:446:34 | ?*a | ssa.cpp:446:34:446:34 | *a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:446:34:446:34 | ?*a | ssa.cpp:446:34:446:34 | ?*a | MayPartiallyOverlap |
| ssa.cpp:446:34:446:34 | ?*a | ssa.cpp:446:34:446:34 | ?*a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:446:34:446:34 | ?*a | ssa.cpp:446:43:446:43 | *b | MayPartiallyOverlap |
| ssa.cpp:446:34:446:34 | ?*a | ssa.cpp:446:43:446:43 | ?*b | MayPartiallyOverlap |
| ssa.cpp:446:34:446:34 | ?*a[0..?)<unknown> | ssa.cpp:446:34:446:34 | *a | MayPartiallyOverlap |
| ssa.cpp:446:34:446:34 | ?*a[0..?)<unknown> | ssa.cpp:446:34:446:34 | *a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:446:34:446:34 | ?*a[0..?)<unknown> | ssa.cpp:446:34:446:34 | ?*a | MayPartiallyOverlap |
| ssa.cpp:446:34:446:34 | ?*a[0..?)<unknown> | ssa.cpp:446:34:446:34 | ?*a[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:446:34:446:34 | ?*a[0..?)<unknown> | ssa.cpp:446:43:446:43 | *b | MayPartiallyOverlap |
| ssa.cpp:446:34:446:34 | ?*a[0..?)<unknown> | ssa.cpp:446:43:446:43 | ?*b | MayPartiallyOverlap |
| ssa.cpp:446:43:446:43 | *b | ssa.cpp:446:34:446:34 | *a | MustExactlyOverlap |
| ssa.cpp:446:43:446:43 | *b | ssa.cpp:446:34:446:34 | ?*a | MustTotallyOverlap |
| ssa.cpp:446:43:446:43 | *b | ssa.cpp:446:43:446:43 | *b | MustExactlyOverlap |
| ssa.cpp:446:43:446:43 | *b | ssa.cpp:446:43:446:43 | *b[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:446:43:446:43 | *b | ssa.cpp:446:43:446:43 | ?*b | MustTotallyOverlap |
| ssa.cpp:446:43:446:43 | *b | ssa.cpp:446:43:446:43 | ?*b[0..?)<unknown> | MustTotallyOverlap |
| ssa.cpp:446:43:446:43 | *b[0..?)<unknown> | ssa.cpp:446:34:446:34 | *a | MayPartiallyOverlap |
| ssa.cpp:446:43:446:43 | *b[0..?)<unknown> | ssa.cpp:446:34:446:34 | ?*a | MayPartiallyOverlap |
| ssa.cpp:446:43:446:43 | *b[0..?)<unknown> | ssa.cpp:446:43:446:43 | *b | MayPartiallyOverlap |
| ssa.cpp:446:43:446:43 | *b[0..?)<unknown> | ssa.cpp:446:43:446:43 | *b[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:446:43:446:43 | *b[0..?)<unknown> | ssa.cpp:446:43:446:43 | ?*b | MayPartiallyOverlap |
| ssa.cpp:446:43:446:43 | *b[0..?)<unknown> | ssa.cpp:446:43:446:43 | ?*b[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:446:43:446:43 | ?*b | ssa.cpp:446:34:446:34 | *a | MayPartiallyOverlap |
| ssa.cpp:446:43:446:43 | ?*b | ssa.cpp:446:34:446:34 | ?*a | MayPartiallyOverlap |
| ssa.cpp:446:43:446:43 | ?*b | ssa.cpp:446:43:446:43 | *b | MayPartiallyOverlap |
| ssa.cpp:446:43:446:43 | ?*b | ssa.cpp:446:43:446:43 | *b[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:446:43:446:43 | ?*b | ssa.cpp:446:43:446:43 | ?*b | MayPartiallyOverlap |
| ssa.cpp:446:43:446:43 | ?*b | ssa.cpp:446:43:446:43 | ?*b[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:446:43:446:43 | ?*b[0..?)<unknown> | ssa.cpp:446:34:446:34 | *a | MayPartiallyOverlap |
| ssa.cpp:446:43:446:43 | ?*b[0..?)<unknown> | ssa.cpp:446:34:446:34 | ?*a | MayPartiallyOverlap |
| ssa.cpp:446:43:446:43 | ?*b[0..?)<unknown> | ssa.cpp:446:43:446:43 | *b | MayPartiallyOverlap |
| ssa.cpp:446:43:446:43 | ?*b[0..?)<unknown> | ssa.cpp:446:43:446:43 | *b[0..?)<unknown> | MayPartiallyOverlap |
| ssa.cpp:446:43:446:43 | ?*b[0..?)<unknown> | ssa.cpp:446:43:446:43 | ?*b | MayPartiallyOverlap |
| ssa.cpp:446:43:446:43 | ?*b[0..?)<unknown> | ssa.cpp:446:43:446:43 | ?*b[0..?)<unknown> | MayPartiallyOverlap |

View File

@@ -0,0 +1,6 @@
import semmle.code.cpp.ir.implementation.aliased_ssa.internal.AliasedSSA
from AllocationMemoryLocation def, AllocationMemoryLocation use, Overlap ovr
where
ovr = getOverlap(def, use)
select def, use, ovr

View File

@@ -211,7 +211,7 @@ int ModeledCallTarget(int x) {
}
void InitArray() {
char a_pad[32] = "";
char a_pad[32] = "";
char a_nopad[4] = "foo";
char a_infer[] = "blah";
char b[2];
@@ -306,7 +306,7 @@ int main(int argc, char **argv) {
class ThisAliasTest {
int x, y;
void setX(int arg) {
this->x = arg;
}
@@ -438,3 +438,13 @@ int noreturnTest2(int x) {
void Conditional(bool a, int x, int y) {
int z = a ? x : y;
}
static void NonEscapingParams(void *a, void *b)
{
}
static void EscapingParams(void *a, void *b)
{
Escape(a);
Escape(b);
}

View File

@@ -2044,3 +2044,57 @@ ssa.cpp:
# 439| r439_15(glval<int>) = VariableAddress[#temp439:13] :
# 439| m439_16(int) = Store[#temp439:13] : &:r439_15, r439_14
#-----| Goto -> Block 1
# 442| void NonEscapingParams(void*, void*)
# 442| Block 0
# 442| v442_1(void) = EnterFunction :
# 442| mu442_2(unknown) = AliasedDefinition :
# 442| mu442_3(unknown) = InitializeNonLocal :
# 442| r442_4(glval<void *>) = VariableAddress[a] :
# 442| m442_5(void *) = InitializeParameter[a] : &:r442_4
# 442| r442_6(void *) = Load[a] : &:r442_4, m442_5
# 442| mu442_7(unknown) = InitializeIndirection[a] : &:r442_6
# 442| r442_8(glval<void *>) = VariableAddress[b] :
# 442| m442_9(void *) = InitializeParameter[b] : &:r442_8
# 442| r442_10(void *) = Load[b] : &:r442_8, m442_9
# 442| mu442_11(unknown) = InitializeIndirection[b] : &:r442_10
# 444| v444_1(void) = NoOp :
# 442| v442_12(void) = ReturnIndirection[a] : &:r442_6, ~m?
# 442| v442_13(void) = ReturnIndirection[b] : &:r442_10, ~m?
# 442| v442_14(void) = ReturnVoid :
# 442| v442_15(void) = AliasedUse : ~m?
# 442| v442_16(void) = ExitFunction :
# 446| void EscapingParams(void*, void*)
# 446| Block 0
# 446| v446_1(void) = EnterFunction :
# 446| mu446_2(unknown) = AliasedDefinition :
# 446| mu446_3(unknown) = InitializeNonLocal :
# 446| r446_4(glval<void *>) = VariableAddress[a] :
# 446| m446_5(void *) = InitializeParameter[a] : &:r446_4
# 446| r446_6(void *) = Load[a] : &:r446_4, m446_5
# 446| mu446_7(unknown) = InitializeIndirection[a] : &:r446_6
# 446| r446_8(glval<void *>) = VariableAddress[b] :
# 446| m446_9(void *) = InitializeParameter[b] : &:r446_8
# 446| r446_10(void *) = Load[b] : &:r446_8, m446_9
# 446| mu446_11(unknown) = InitializeIndirection[b] : &:r446_10
# 448| r448_1(glval<unknown>) = FunctionAddress[Escape] :
# 448| r448_2(glval<void *>) = VariableAddress[a] :
# 448| r448_3(void *) = Load[a] : &:r448_2, m446_5
# 448| v448_4(void) = Call[Escape] : func:r448_1, 0:r448_3
# 448| mu448_5(unknown) = ^CallSideEffect : ~m?
# 448| v448_6(void) = ^BufferReadSideEffect[0] : &:r448_3, ~m?
# 448| mu448_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r448_3
# 449| r449_1(glval<unknown>) = FunctionAddress[Escape] :
# 449| r449_2(glval<void *>) = VariableAddress[b] :
# 449| r449_3(void *) = Load[b] : &:r449_2, m446_9
# 449| v449_4(void) = Call[Escape] : func:r449_1, 0:r449_3
# 449| mu449_5(unknown) = ^CallSideEffect : ~m?
# 449| v449_6(void) = ^BufferReadSideEffect[0] : &:r449_3, ~m?
# 449| mu449_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r449_3
# 450| v450_1(void) = NoOp :
# 446| v446_12(void) = ReturnIndirection[a] : &:r446_6, ~m?
# 446| v446_13(void) = ReturnIndirection[b] : &:r446_10, ~m?
# 446| v446_14(void) = ReturnVoid :
# 446| v446_15(void) = AliasedUse : ~m?
# 446| v446_16(void) = ExitFunction :

View File

@@ -2044,3 +2044,57 @@ ssa.cpp:
# 439| r439_15(glval<int>) = VariableAddress[#temp439:13] :
# 439| m439_16(int) = Store[#temp439:13] : &:r439_15, r439_14
#-----| Goto -> Block 1
# 442| void NonEscapingParams(void*, void*)
# 442| Block 0
# 442| v442_1(void) = EnterFunction :
# 442| mu442_2(unknown) = AliasedDefinition :
# 442| mu442_3(unknown) = InitializeNonLocal :
# 442| r442_4(glval<void *>) = VariableAddress[a] :
# 442| m442_5(void *) = InitializeParameter[a] : &:r442_4
# 442| r442_6(void *) = Load[a] : &:r442_4, m442_5
# 442| mu442_7(unknown) = InitializeIndirection[a] : &:r442_6
# 442| r442_8(glval<void *>) = VariableAddress[b] :
# 442| m442_9(void *) = InitializeParameter[b] : &:r442_8
# 442| r442_10(void *) = Load[b] : &:r442_8, m442_9
# 442| mu442_11(unknown) = InitializeIndirection[b] : &:r442_10
# 444| v444_1(void) = NoOp :
# 442| v442_12(void) = ReturnIndirection[a] : &:r442_6, ~m?
# 442| v442_13(void) = ReturnIndirection[b] : &:r442_10, ~m?
# 442| v442_14(void) = ReturnVoid :
# 442| v442_15(void) = AliasedUse : ~m?
# 442| v442_16(void) = ExitFunction :
# 446| void EscapingParams(void*, void*)
# 446| Block 0
# 446| v446_1(void) = EnterFunction :
# 446| mu446_2(unknown) = AliasedDefinition :
# 446| mu446_3(unknown) = InitializeNonLocal :
# 446| r446_4(glval<void *>) = VariableAddress[a] :
# 446| m446_5(void *) = InitializeParameter[a] : &:r446_4
# 446| r446_6(void *) = Load[a] : &:r446_4, m446_5
# 446| mu446_7(unknown) = InitializeIndirection[a] : &:r446_6
# 446| r446_8(glval<void *>) = VariableAddress[b] :
# 446| m446_9(void *) = InitializeParameter[b] : &:r446_8
# 446| r446_10(void *) = Load[b] : &:r446_8, m446_9
# 446| mu446_11(unknown) = InitializeIndirection[b] : &:r446_10
# 448| r448_1(glval<unknown>) = FunctionAddress[Escape] :
# 448| r448_2(glval<void *>) = VariableAddress[a] :
# 448| r448_3(void *) = Load[a] : &:r448_2, m446_5
# 448| v448_4(void) = Call[Escape] : func:r448_1, 0:r448_3
# 448| mu448_5(unknown) = ^CallSideEffect : ~m?
# 448| v448_6(void) = ^BufferReadSideEffect[0] : &:r448_3, ~m?
# 448| mu448_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r448_3
# 449| r449_1(glval<unknown>) = FunctionAddress[Escape] :
# 449| r449_2(glval<void *>) = VariableAddress[b] :
# 449| r449_3(void *) = Load[b] : &:r449_2, m446_9
# 449| v449_4(void) = Call[Escape] : func:r449_1, 0:r449_3
# 449| mu449_5(unknown) = ^CallSideEffect : ~m?
# 449| v449_6(void) = ^BufferReadSideEffect[0] : &:r449_3, ~m?
# 449| mu449_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r449_3
# 450| v450_1(void) = NoOp :
# 446| v446_12(void) = ReturnIndirection[a] : &:r446_6, ~m?
# 446| v446_13(void) = ReturnIndirection[b] : &:r446_10, ~m?
# 446| v446_14(void) = ReturnVoid :
# 446| v446_15(void) = AliasedUse : ~m?
# 446| v446_16(void) = ExitFunction :