Merge branch 'master' into rdmarsh/cpp/ir-flow-through-outparams

Fixes test conflicts and reveals a bug in parameter handling
This commit is contained in:
Robert Marsh
2020-03-31 12:54:00 -07:00
996 changed files with 31693 additions and 29870 deletions

View File

@@ -0,0 +1,34 @@
| args.cpp:8:5:8:12 | call to global_1 | 0 | 0 |
| args.cpp:9:5:9:12 | call to global_2 | 0 | 0 |
| args.cpp:9:5:9:12 | call to global_2 | 1 | 1 |
| args.cpp:10:5:10:19 | call to global_2_vararg | 0 | 0 |
| args.cpp:10:5:10:19 | call to global_2_vararg | 1 | 1 |
| args.cpp:11:5:11:19 | call to global_2_vararg | 0 | 0 |
| args.cpp:11:5:11:19 | call to global_2_vararg | 1 | 1 |
| args.cpp:11:5:11:19 | call to global_2_vararg | 2 | 2 |
| args.cpp:12:5:12:19 | call to global_2_vararg | 0 | 0 |
| args.cpp:12:5:12:19 | call to global_2_vararg | 1 | 1 |
| args.cpp:12:5:12:19 | call to global_2_vararg | 2 | 2 |
| args.cpp:12:5:12:19 | call to global_2_vararg | 3 | 2 |
| args.cpp:22:5:22:12 | call to expression | 0 | 0 |
| args.cpp:23:5:23:15 | call to expression | 0 | 0 |
| args.cpp:23:5:23:15 | call to expression | 1 | 1 |
| args.cpp:24:5:24:22 | call to expression | 0 | 0 |
| args.cpp:24:5:24:22 | call to expression | 1 | 1 |
| args.cpp:25:5:25:25 | call to expression | 0 | 0 |
| args.cpp:25:5:25:25 | call to expression | 1 | 1 |
| args.cpp:25:5:25:25 | call to expression | 2 | 2 |
| args.cpp:26:5:26:28 | call to expression | 0 | 0 |
| args.cpp:26:5:26:28 | call to expression | 1 | 1 |
| args.cpp:26:5:26:28 | call to expression | 2 | 2 |
| args.cpp:26:5:26:28 | call to expression | 3 | 2 |
| args.cpp:37:10:37:11 | call to S | 0 | 0 |
| args.cpp:38:19:38:23 | call to S | 0 | 0 |
| args.cpp:38:19:38:23 | call to S | 1 | 1 |
| args.cpp:39:19:39:26 | call to S | 0 | 0 |
| args.cpp:39:19:39:26 | call to S | 1 | 1 |
| args.cpp:39:19:39:26 | call to S | 2 | 2 |
| args.cpp:40:19:40:29 | call to S | 0 | 0 |
| args.cpp:40:19:40:29 | call to S | 1 | 1 |
| args.cpp:40:19:40:29 | call to S | 2 | 2 |
| args.cpp:40:19:40:29 | call to S | 3 | 2 |

View File

@@ -0,0 +1,6 @@
import cpp
import semmle.code.cpp.ir.implementation.raw.internal.VarArgs
from Call call, int argIndex, int paramIndex
where paramIndex = getParameterIndexForArgument(call, argIndex)
select call, argIndex, paramIndex

View File

@@ -0,0 +1,41 @@
void global_0();
void global_1(int a);
void global_2(int a, float b);
void global_2_vararg(int a, float b, ...);
void call_globals(int a, float b, void* c, bool d) {
global_0();
global_1(a);
global_2(a, b);
global_2_vararg(a, b);
global_2_vararg(a, b, c);
global_2_vararg(a, b, c, d);
}
void (*pfn_0)();
void (*pfn_1)(int a);
void (*pfn_2)(int a, float b);
void (*pfn_2_vararg)(int a, float b ...);
void call_pfns(int a, float b, void* c, bool d) {
pfn_0();
pfn_1(a);
pfn_2(a, b);
pfn_2_vararg(a, b);
pfn_2_vararg(a, b, c);
pfn_2_vararg(a, b, c, d);
}
struct S {
S();
S(int a);
S(int a, float b, ...);
};
void call_constructors(int a, float b, void* c, bool d) {
S s0;
S s1(a);
S s2_vararg_0(a, b);
S s2_vararg_1(a, b, c);
S s2_vararg_2(a, b, c, d);
}

View File

@@ -0,0 +1,31 @@
uniqueEnclosingCallable
uniqueTypeBound
uniqueTypeRepr
uniqueNodeLocation
| dispatch.cpp:60:18:60:29 | call to Bottom | Node should have one location but has 2. |
| dispatch.cpp:61:18:61:29 | call to Middle | Node should have one location but has 2. |
| dispatch.cpp:65:10:65:21 | call to Bottom | Node should have one location but has 2. |
| file://:0:0:0:0 | call to Bottom | Node should have one location but has 2. |
| file://:0:0:0:0 | call to Bottom | Node should have one location but has 2. |
| file://:0:0:0:0 | call to Middle | Node should have one location but has 2. |
missingLocation
uniqueNodeToString
missingToString
parameterCallable
localFlowIsLocal
compatibleTypesReflexive
unreachableNodeCCtx
localCallNodes
postIsNotPre
postHasUniquePre
uniquePostUpdate
postIsInSameCallable
reverseRead
storeIsPostUpdate
argHasPostUpdate
| dispatch.cpp:78:23:78:39 | * ... | ArgumentNode is missing PostUpdateNode. |
| lambdas.cpp:18:7:18:7 | a | ArgumentNode is missing PostUpdateNode. |
| lambdas.cpp:25:2:25:2 | b | ArgumentNode is missing PostUpdateNode. |
| lambdas.cpp:32:2:32:2 | c | ArgumentNode is missing PostUpdateNode. |
| lambdas.cpp:38:2:38:2 | d | ArgumentNode is missing PostUpdateNode. |
| lambdas.cpp:45:2:45:2 | e | ArgumentNode is missing PostUpdateNode. |

View File

@@ -0,0 +1 @@
import semmle.code.cpp.dataflow.internal.DataFlowImplConsistency::Consistency

View File

@@ -0,0 +1,36 @@
uniqueEnclosingCallable
uniqueTypeBound
uniqueTypeRepr
uniqueNodeLocation
| BarrierGuard.cpp:2:11:2:13 | p#0 | Node should have one location but has 6. |
| acrossLinkTargets.cpp:2:11:2:13 | p#0 | Node should have one location but has 6. |
| clang.cpp:4:11:4:13 | p#0 | Node should have one location but has 6. |
| clang.cpp:4:27:4:35 | p#0 | Node should have one location but has 2. |
| clang.cpp:4:51:4:53 | p#0 | Node should have one location but has 2. |
| dispatch.cpp:2:11:2:13 | p#0 | Node should have one location but has 6. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
| globals.cpp:2:11:2:13 | p#0 | Node should have one location but has 6. |
| test.cpp:2:11:2:13 | p#0 | Node should have one location but has 6. |
| test.cpp:2:27:2:35 | p#0 | Node should have one location but has 2. |
| test.cpp:2:51:2:53 | p#0 | Node should have one location but has 2. |
missingLocation
| Nodes without location: 4 |
uniqueNodeToString
| lambdas.cpp:2:6:2:9 | (no string representation) | Node should have one toString but has 0. |
missingToString
| Nodes without toString: 1 |
parameterCallable
localFlowIsLocal
compatibleTypesReflexive
unreachableNodeCCtx
localCallNodes
postIsNotPre
postHasUniquePre
uniquePostUpdate
postIsInSameCallable
reverseRead
storeIsPostUpdate
argHasPostUpdate

View File

@@ -0,0 +1 @@
import semmle.code.cpp.ir.dataflow.internal.DataFlowImplConsistency::Consistency

View File

@@ -0,0 +1,58 @@
uniqueEnclosingCallable
| C.cpp:37:24:37:33 | 0 | Node should have one enclosing callable but has 0. |
| C.cpp:37:24:37:33 | new | Node should have one enclosing callable but has 0. |
uniqueTypeBound
| complex.cpp:22:11:22:17 | constructor init of field f [post-this] | Node should have one type bound but has 0. |
| complex.cpp:22:11:22:17 | constructor init of field f [pre-this] | Node should have one type bound but has 0. |
uniqueTypeRepr
| complex.cpp:22:11:22:17 | constructor init of field f [post-this] | Node should have one type representation but has 0. |
| complex.cpp:22:11:22:17 | constructor init of field f [pre-this] | Node should have one type representation but has 0. |
uniqueNodeLocation
| A.cpp:38:7:38:8 | call to C | Node should have one location but has 2. |
| A.cpp:39:7:39:8 | call to C | Node should have one location but has 2. |
| A.cpp:41:15:41:21 | call to C | Node should have one location but has 2. |
| A.cpp:47:12:47:18 | call to C | Node should have one location but has 2. |
| A.cpp:57:17:57:23 | call to C | Node should have one location but has 2. |
| A.cpp:64:21:64:28 | call to C2 | Node should have one location but has 2. |
| A.cpp:73:25:73:32 | call to C2 | Node should have one location but has 2. |
| A.cpp:126:12:126:18 | call to C | Node should have one location but has 2. |
| A.cpp:142:14:142:20 | call to C | Node should have one location but has 2. |
| file://:0:0:0:0 | call to C | Node should have one location but has 2. |
| file://:0:0:0:0 | call to C | Node should have one location but has 2. |
| file://:0:0:0:0 | call to C | Node should have one location but has 2. |
| file://:0:0:0:0 | call to C | Node should have one location but has 2. |
| file://:0:0:0:0 | call to C | Node should have one location but has 2. |
| file://:0:0:0:0 | call to C | Node should have one location but has 2. |
| file://:0:0:0:0 | call to C | Node should have one location but has 2. |
| file://:0:0:0:0 | call to C2 | Node should have one location but has 2. |
| file://:0:0:0:0 | call to C2 | Node should have one location but has 2. |
missingLocation
uniqueNodeToString
missingToString
parameterCallable
localFlowIsLocal
compatibleTypesReflexive
unreachableNodeCCtx
localCallNodes
postIsNotPre
postHasUniquePre
uniquePostUpdate
postIsInSameCallable
reverseRead
storeIsPostUpdate
argHasPostUpdate
| A.cpp:41:15:41:21 | new | ArgumentNode is missing PostUpdateNode. |
| A.cpp:55:12:55:19 | new | ArgumentNode is missing PostUpdateNode. |
| A.cpp:57:17:57:23 | new | ArgumentNode is missing PostUpdateNode. |
| A.cpp:64:21:64:28 | new | ArgumentNode is missing PostUpdateNode. |
| A.cpp:73:25:73:32 | new | ArgumentNode is missing PostUpdateNode. |
| A.cpp:126:12:126:18 | new | ArgumentNode is missing PostUpdateNode. |
| A.cpp:160:32:160:59 | new | ArgumentNode is missing PostUpdateNode. |
| D.cpp:29:24:29:40 | new | ArgumentNode is missing PostUpdateNode. |
| D.cpp:36:24:36:40 | new | ArgumentNode is missing PostUpdateNode. |
| D.cpp:43:24:43:40 | new | ArgumentNode is missing PostUpdateNode. |
| D.cpp:50:24:50:40 | new | ArgumentNode is missing PostUpdateNode. |
| D.cpp:57:25:57:41 | new | ArgumentNode is missing PostUpdateNode. |
| by_reference.cpp:51:8:51:8 | s | ArgumentNode is missing PostUpdateNode. |
| by_reference.cpp:57:8:57:8 | s | ArgumentNode is missing PostUpdateNode. |
| by_reference.cpp:63:8:63:8 | s | ArgumentNode is missing PostUpdateNode. |

View File

@@ -0,0 +1 @@
import semmle.code.cpp.dataflow.internal.DataFlowImplConsistency::Consistency

View File

@@ -0,0 +1,26 @@
uniqueEnclosingCallable
uniqueTypeBound
uniqueTypeRepr
uniqueNodeLocation
| D.cpp:1:17:1:17 | o | Node should have one location but has 2. |
| by_reference.cpp:1:17:1:17 | o | Node should have one location but has 2. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
missingLocation
| Nodes without location: 4 |
uniqueNodeToString
missingToString
parameterCallable
localFlowIsLocal
compatibleTypesReflexive
unreachableNodeCCtx
localCallNodes
postIsNotPre
postHasUniquePre
uniquePostUpdate
postIsInSameCallable
reverseRead
storeIsPostUpdate
argHasPostUpdate

View File

@@ -0,0 +1 @@
import semmle.code.cpp.ir.dataflow.internal.DataFlowImplConsistency::Consistency

File diff suppressed because it is too large Load Diff

View File

@@ -20,6 +20,9 @@ lostReachability
backEdgeCountMismatch
useNotDominatedByDefinition
switchInstructionWithoutDefaultEdge
notMarkedAsConflated
wronglyMarkedAsConflated
invalidOverlap
missingCanonicalLanguageType
multipleCanonicalLanguageTypes
missingIRType

View File

@@ -20,6 +20,9 @@ lostReachability
backEdgeCountMismatch
useNotDominatedByDefinition
switchInstructionWithoutDefaultEdge
notMarkedAsConflated
wronglyMarkedAsConflated
invalidOverlap
missingCanonicalLanguageType
multipleCanonicalLanguageTypes
missingIRType

View File

@@ -885,15 +885,24 @@ void FuncPtrConversions(int(*pfn)(int), void* p) {
pfn = (int(*)(int))p;
}
void VAListUsage(int x, __builtin_va_list args) {
__builtin_va_list args2;
__builtin_va_copy(args2, args);
double d = __builtin_va_arg(args, double);
float f = __builtin_va_arg(args, int);
__builtin_va_end(args2);
}
void VarArgUsage(int x, ...) {
__builtin_va_list args;
__builtin_va_start(args, x);
__builtin_va_list args2;
__builtin_va_start(args2, args);
__builtin_va_copy(args2, args);
double d = __builtin_va_arg(args, double);
float f = __builtin_va_arg(args, float);
float f = __builtin_va_arg(args, int);
__builtin_va_end(args);
VAListUsage(x, args2);
__builtin_va_end(args2);
}
@@ -1234,4 +1243,16 @@ void staticLocalWithConstructor(const char* dynamic) {
static String c(dynamic);
}
// --- strings ---
char *strcpy(char *destination, const char *source);
char *strcat(char *destination, const char *source);
void test_strings(char *s1, char *s2) {
char buffer[1024] = {0};
strcpy(buffer, s1);
strcat(buffer, s2);
}
// semmle-extractor-options: -std=c++17 --clang

File diff suppressed because it is too large Load Diff

View File

@@ -20,6 +20,9 @@ lostReachability
backEdgeCountMismatch
useNotDominatedByDefinition
switchInstructionWithoutDefaultEdge
notMarkedAsConflated
wronglyMarkedAsConflated
invalidOverlap
missingCanonicalLanguageType
multipleCanonicalLanguageTypes
missingIRType

View File

@@ -20,6 +20,9 @@ lostReachability
backEdgeCountMismatch
useNotDominatedByDefinition
switchInstructionWithoutDefaultEdge
notMarkedAsConflated
wronglyMarkedAsConflated
invalidOverlap
missingCanonicalLanguageType
multipleCanonicalLanguageTypes
missingIRType

View File

@@ -20,6 +20,9 @@ lostReachability
backEdgeCountMismatch
useNotDominatedByDefinition
switchInstructionWithoutDefaultEdge
notMarkedAsConflated
wronglyMarkedAsConflated
invalidOverlap
missingCanonicalLanguageType
multipleCanonicalLanguageTypes
missingIRType

View File

@@ -459,7 +459,7 @@ ssa.cpp:
# 112| m112_12(Point) = Chi : total:m112_7, partial:m112_11
# 113| r113_1(glval<Point>) = VariableAddress[b] :
# 113| r113_2(glval<Point>) = VariableAddress[a] :
# 113| r113_3(Point) = Load : &:r113_2, ~m112_12
# 113| r113_3(Point) = Load : &:r113_2, m112_12
# 113| m113_4(Point) = Store : &:r113_1, r113_3
# 114| v114_1(void) = NoOp :
# 111| v111_10(void) = ReturnVoid :
@@ -824,41 +824,43 @@ ssa.cpp:
# 184| m184_7(unsigned int &) = InitializeParameter[a] : &:r184_6
# 184| r184_8(unsigned int &) = Load : &:r184_6, m184_7
# 184| m184_9(unknown) = InitializeIndirection[a] : &:r184_8
# 184| r184_10(glval<unsigned int &>) = VariableAddress[b] :
# 184| m184_11(unsigned int &) = InitializeParameter[b] : &:r184_10
# 184| r184_12(unsigned int &) = Load : &:r184_10, m184_11
# 184| m184_13(unknown) = InitializeIndirection[b] : &:r184_12
# 184| r184_14(glval<unsigned int &>) = VariableAddress[c] :
# 184| m184_15(unsigned int &) = InitializeParameter[c] : &:r184_14
# 184| r184_16(unsigned int &) = Load : &:r184_14, m184_15
# 184| m184_17(unknown) = InitializeIndirection[c] : &:r184_16
# 184| r184_18(glval<unsigned int &>) = VariableAddress[d] :
# 184| m184_19(unsigned int &) = InitializeParameter[d] : &:r184_18
# 184| r184_20(unsigned int &) = Load : &:r184_18, m184_19
# 184| m184_21(unknown) = InitializeIndirection[d] : &:r184_20
# 184| m184_10(unknown) = Chi : total:m184_4, partial:m184_9
# 184| r184_11(glval<unsigned int &>) = VariableAddress[b] :
# 184| m184_12(unsigned int &) = InitializeParameter[b] : &:r184_11
# 184| r184_13(unsigned int &) = Load : &:r184_11, m184_12
# 184| m184_14(unknown) = InitializeIndirection[b] : &:r184_13
# 184| m184_15(unknown) = Chi : total:m184_10, partial:m184_14
# 184| r184_16(glval<unsigned int &>) = VariableAddress[c] :
# 184| m184_17(unsigned int &) = InitializeParameter[c] : &:r184_16
# 184| r184_18(unsigned int &) = Load : &:r184_16, m184_17
# 184| m184_19(unknown) = InitializeIndirection[c] : &:r184_18
# 184| r184_20(glval<unsigned int &>) = VariableAddress[d] :
# 184| m184_21(unsigned int &) = InitializeParameter[d] : &:r184_20
# 184| r184_22(unsigned int &) = Load : &:r184_20, m184_21
# 184| m184_23(unknown) = InitializeIndirection[d] : &:r184_22
# 189| r189_1(glval<unsigned int &>) = VariableAddress[a] :
# 189| r189_2(unsigned int &) = Load : &:r189_1, m184_7
# 189| r189_3(glval<unsigned int>) = CopyValue : r189_2
# 189| r189_4(glval<unsigned int &>) = VariableAddress[b] :
# 189| r189_5(unsigned int &) = Load : &:r189_4, m184_11
# 189| r189_5(unsigned int &) = Load : &:r189_4, m184_12
# 189| r189_6(glval<unsigned int>) = CopyValue : r189_5
# 190| r190_1(glval<unsigned int &>) = VariableAddress[c] :
# 190| r190_2(unsigned int &) = Load : &:r190_1, m184_15
# 190| r190_3(unsigned int) = Load : &:r190_2, ~m184_17
# 190| r190_2(unsigned int &) = Load : &:r190_1, m184_17
# 190| r190_3(unsigned int) = Load : &:r190_2, ~m184_19
# 190| r190_4(glval<unsigned int &>) = VariableAddress[d] :
# 190| r190_5(unsigned int &) = Load : &:r190_4, m184_19
# 190| r190_6(unsigned int) = Load : &:r190_5, ~m184_21
# 186| m186_1(unknown) = InlineAsm : ~m184_13, 0:r189_3, 1:r189_6, 2:r190_3, 3:r190_6
# 186| m186_2(unknown) = Chi : total:m184_13, partial:m186_1
# 190| r190_5(unsigned int &) = Load : &:r190_4, m184_21
# 190| r190_6(unsigned int) = Load : &:r190_5, ~m184_23
# 186| m186_1(unknown) = InlineAsm : ~m184_15, 0:r189_3, 1:r189_6, 2:r190_3, 3:r190_6
# 186| m186_2(unknown) = Chi : total:m184_15, partial:m186_1
# 192| v192_1(void) = NoOp :
# 184| v184_22(void) = ReturnIndirection[a] : &:r184_8, ~m186_2
# 184| v184_23(void) = ReturnIndirection[b] : &:r184_12, ~m186_2
# 184| v184_24(void) = ReturnIndirection[c] : &:r184_16, m184_17
# 184| v184_25(void) = ReturnIndirection[d] : &:r184_20, m184_21
# 184| v184_26(void) = ReturnVoid :
# 184| v184_27(void) = UnmodeledUse : mu*
# 184| v184_28(void) = AliasedUse : ~m186_2
# 184| v184_29(void) = ExitFunction :
# 184| v184_24(void) = ReturnIndirection[a] : &:r184_8, ~m186_2
# 184| v184_25(void) = ReturnIndirection[b] : &:r184_13, ~m186_2
# 184| v184_26(void) = ReturnIndirection[c] : &:r184_18, m184_19
# 184| v184_27(void) = ReturnIndirection[d] : &:r184_22, m184_23
# 184| v184_28(void) = ReturnVoid :
# 184| v184_29(void) = UnmodeledUse : mu*
# 184| v184_30(void) = AliasedUse : ~m186_2
# 184| v184_31(void) = ExitFunction :
# 198| int PureFunctions(char*, char*, int)
# 198| Block 0
@@ -1147,18 +1149,19 @@ ssa.cpp:
# 247| m247_7(char *) = InitializeParameter[src] : &:r247_6
# 247| r247_8(char *) = Load : &:r247_6, m247_7
# 247| m247_9(unknown) = InitializeIndirection[src] : &:r247_8
# 247| r247_10(glval<int>) = VariableAddress[size] :
# 247| m247_11(int) = InitializeParameter[size] : &:r247_10
# 247| m247_10(unknown) = Chi : total:m247_4, partial:m247_9
# 247| r247_11(glval<int>) = VariableAddress[size] :
# 247| m247_12(int) = InitializeParameter[size] : &:r247_11
# 248| r248_1(glval<char *>) = VariableAddress[dst] :
# 248| r248_2(glval<unknown>) = FunctionAddress[operator new[]] :
# 248| r248_3(glval<int>) = VariableAddress[size] :
# 248| r248_4(int) = Load : &:r248_3, m247_11
# 248| r248_4(int) = Load : &:r248_3, m247_12
# 248| r248_5(unsigned long) = Convert : r248_4
# 248| r248_6(unsigned long) = Constant[1] :
# 248| r248_7(unsigned long) = Mul : r248_5, r248_6
# 248| r248_8(void *) = Call : func:r248_2, 0:r248_7
# 248| m248_9(unknown) = ^CallSideEffect : ~m247_9
# 248| m248_10(unknown) = Chi : total:m247_9, partial:m248_9
# 248| m248_9(unknown) = ^CallSideEffect : ~m247_10
# 248| m248_10(unknown) = Chi : total:m247_10, partial:m248_9
# 248| r248_11(char *) = Convert : r248_8
# 248| m248_12(char *) = Store : &:r248_1, r248_11
# 249| r249_1(char) = Constant[97] :
@@ -1175,7 +1178,7 @@ ssa.cpp:
# 250| r250_6(char *) = Load : &:r250_5, m247_7
# 250| r250_7(void *) = Convert : r250_6
# 250| r250_8(glval<int>) = VariableAddress[size] :
# 250| r250_9(int) = Load : &:r250_8, m247_11
# 250| r250_9(int) = Load : &:r250_8, m247_12
# 250| r250_10(void *) = Call : func:r250_1, 0:r250_4, 1:r250_7, 2:r250_9
# 250| v250_11(void) = ^SizedBufferReadSideEffect[1] : &:r250_7, r250_9, ~m249_6
# 250| m250_12(unknown) = ^SizedBufferMustWriteSideEffect[0] : &:r250_4, r250_9
@@ -1184,12 +1187,12 @@ ssa.cpp:
# 251| r251_2(glval<char *>) = VariableAddress[dst] :
# 251| r251_3(char *) = Load : &:r251_2, m248_12
# 251| m251_4(char *) = Store : &:r251_1, r251_3
# 247| v247_12(void) = ReturnIndirection[src] : &:r247_8, ~m250_13
# 247| r247_13(glval<char *>) = VariableAddress[#return] :
# 247| v247_14(void) = ReturnValue : &:r247_13, m251_4
# 247| v247_15(void) = UnmodeledUse : mu*
# 247| v247_16(void) = AliasedUse : ~m250_13
# 247| v247_17(void) = ExitFunction :
# 247| v247_13(void) = ReturnIndirection[src] : &:r247_8, ~m250_13
# 247| r247_14(glval<char *>) = VariableAddress[#return] :
# 247| v247_15(void) = ReturnValue : &:r247_14, m251_4
# 247| v247_16(void) = UnmodeledUse : mu*
# 247| v247_17(void) = AliasedUse : ~m250_13
# 247| v247_18(void) = ExitFunction :
# 254| char StringLiteralAliasing2(bool)
# 254| Block 0
@@ -1250,84 +1253,145 @@ ssa.cpp:
# 268| m268_7(void *) = InitializeParameter[s] : &:r268_6
# 268| r268_8(void *) = Load : &:r268_6, m268_7
# 268| m268_9(unknown) = InitializeIndirection[s] : &:r268_8
# 268| r268_10(glval<int>) = VariableAddress[size] :
# 268| m268_11(int) = InitializeParameter[size] : &:r268_10
# 268| m268_10(unknown) = Chi : total:m268_4, partial:m268_9
# 268| r268_11(glval<int>) = VariableAddress[size] :
# 268| m268_12(int) = InitializeParameter[size] : &:r268_11
# 269| r269_1(glval<void *>) = VariableAddress[buf] :
# 269| r269_2(glval<unknown>) = FunctionAddress[malloc] :
# 269| r269_3(glval<int>) = VariableAddress[size] :
# 269| r269_4(int) = Load : &:r269_3, m268_11
# 269| r269_4(int) = Load : &:r269_3, m268_12
# 269| r269_5(void *) = Call : func:r269_2, 0:r269_4
# 269| m269_6(unknown) = ^CallSideEffect : ~m268_9
# 269| m269_7(unknown) = Chi : total:m268_9, partial:m269_6
# 269| m269_6(unknown) = ^CallSideEffect : ~m268_10
# 269| m269_7(unknown) = Chi : total:m268_10, partial:m269_6
# 269| m269_8(unknown) = ^InitializeDynamicAllocation : &:r269_5
# 269| m269_9(void *) = Store : &:r269_1, r269_5
# 269| m269_9(unknown) = Chi : total:m269_7, partial:m269_8
# 269| m269_10(void *) = Store : &:r269_1, r269_5
# 270| r270_1(glval<unknown>) = FunctionAddress[memcpy] :
# 270| r270_2(glval<void *>) = VariableAddress[buf] :
# 270| r270_3(void *) = Load : &:r270_2, m269_9
# 270| r270_3(void *) = Load : &:r270_2, m269_10
# 270| r270_4(glval<void *>) = VariableAddress[s] :
# 270| r270_5(void *) = Load : &:r270_4, m268_7
# 270| r270_6(glval<int>) = VariableAddress[size] :
# 270| r270_7(int) = Load : &:r270_6, m268_11
# 270| r270_7(int) = Load : &:r270_6, m268_12
# 270| r270_8(void *) = Call : func:r270_1, 0:r270_3, 1:r270_5, 2:r270_7
# 270| v270_9(void) = ^SizedBufferReadSideEffect[1] : &:r270_5, r270_7, ~m269_8
# 270| v270_9(void) = ^SizedBufferReadSideEffect[1] : &:r270_5, r270_7, ~m269_7
# 270| m270_10(unknown) = ^SizedBufferMustWriteSideEffect[0] : &:r270_3, r270_7
# 270| m270_11(unknown) = Chi : total:m269_8, partial:m270_10
# 270| m270_11(unknown) = Chi : total:m269_9, partial:m270_10
# 271| r271_1(glval<void *>) = VariableAddress[#return] :
# 271| r271_2(glval<void *>) = VariableAddress[buf] :
# 271| r271_3(void *) = Load : &:r271_2, m269_9
# 271| r271_3(void *) = Load : &:r271_2, m269_10
# 271| m271_4(void *) = Store : &:r271_1, r271_3
# 268| v268_12(void) = ReturnIndirection[s] : &:r268_8, ~m270_11
# 268| r268_13(glval<void *>) = VariableAddress[#return] :
# 268| v268_14(void) = ReturnValue : &:r268_13, m271_4
# 268| v268_15(void) = UnmodeledUse : mu*
# 268| v268_16(void) = AliasedUse : ~m270_11
# 268| v268_17(void) = ExitFunction :
# 268| v268_13(void) = ReturnIndirection[s] : &:r268_8, ~m270_11
# 268| r268_14(glval<void *>) = VariableAddress[#return] :
# 268| v268_15(void) = ReturnValue : &:r268_14, m271_4
# 268| v268_16(void) = UnmodeledUse : mu*
# 268| v268_17(void) = AliasedUse : ~m270_11
# 268| v268_18(void) = ExitFunction :
# 276| int main(int, char**)
# 276| Block 0
# 276| v276_1(void) = EnterFunction :
# 276| m276_2(unknown) = AliasedDefinition :
# 276| m276_3(unknown) = InitializeNonLocal :
# 276| m276_4(unknown) = Chi : total:m276_2, partial:m276_3
# 276| mu276_5(unknown) = UnmodeledDefinition :
# 276| r276_6(glval<int>) = VariableAddress[argc] :
# 276| m276_7(int) = InitializeParameter[argc] : &:r276_6
# 276| r276_8(glval<char **>) = VariableAddress[argv] :
# 276| m276_9(char **) = InitializeParameter[argv] : &:r276_8
# 276| r276_10(char **) = Load : &:r276_8, m276_9
# 276| m276_11(unknown) = InitializeIndirection[argv] : &:r276_10
# 277| r277_1(glval<unknown>) = FunctionAddress[unknownFunction] :
# 277| r277_2(glval<int>) = VariableAddress[argc] :
# 277| r277_3(int) = Load : &:r277_2, m276_7
# 277| r277_4(glval<char **>) = VariableAddress[argv] :
# 277| r277_5(char **) = Load : &:r277_4, m276_9
# 277| v277_6(void) = Call : func:r277_1, 0:r277_3, 1:r277_5
# 277| m277_7(unknown) = ^CallSideEffect : ~m276_11
# 277| m277_8(unknown) = Chi : total:m276_11, partial:m277_7
# 277| v277_9(void) = ^BufferReadSideEffect[1] : &:r277_5, ~m277_8
# 277| m277_10(unknown) = ^BufferMayWriteSideEffect[1] : &:r277_5
# 277| m277_11(unknown) = Chi : total:m277_8, partial:m277_10
# 278| r278_1(glval<unknown>) = FunctionAddress[unknownFunction] :
# 278| r278_2(glval<int>) = VariableAddress[argc] :
# 278| r278_3(int) = Load : &:r278_2, m276_7
# 278| r278_4(glval<char **>) = VariableAddress[argv] :
# 278| r278_5(char **) = Load : &:r278_4, m276_9
# 278| v278_6(void) = Call : func:r278_1, 0:r278_3, 1:r278_5
# 278| m278_7(unknown) = ^CallSideEffect : ~m277_11
# 278| m278_8(unknown) = Chi : total:m277_11, partial:m278_7
# 278| v278_9(void) = ^BufferReadSideEffect[1] : &:r278_5, ~m278_8
# 278| m278_10(unknown) = ^BufferMayWriteSideEffect[1] : &:r278_5
# 278| m278_11(unknown) = Chi : total:m278_8, partial:m278_10
# 279| r279_1(glval<int>) = VariableAddress[#return] :
# 279| r279_2(glval<char **>) = VariableAddress[argv] :
# 279| r279_3(char **) = Load : &:r279_2, m276_9
# 279| r279_4(char *) = Load : &:r279_3, ~m278_11
# 279| r279_5(char) = Load : &:r279_4, ~m278_11
# 279| r279_6(int) = Convert : r279_5
# 279| m279_7(int) = Store : &:r279_1, r279_6
# 276| v276_12(void) = ReturnIndirection[argv] : &:r276_10, ~m278_11
# 276| r276_13(glval<int>) = VariableAddress[#return] :
# 276| v276_14(void) = ReturnValue : &:r276_13, m279_7
# 276| v276_15(void) = UnmodeledUse : mu*
# 276| v276_16(void) = AliasedUse : ~m278_11
# 276| v276_17(void) = ExitFunction :
# 275| void EscapedButNotConflated(bool, Point, int)
# 275| Block 0
# 275| v275_1(void) = EnterFunction :
# 275| m275_2(unknown) = AliasedDefinition :
# 275| m275_3(unknown) = InitializeNonLocal :
# 275| m275_4(unknown) = Chi : total:m275_2, partial:m275_3
# 275| mu275_5(unknown) = UnmodeledDefinition :
# 275| r275_6(glval<bool>) = VariableAddress[c] :
# 275| m275_7(bool) = InitializeParameter[c] : &:r275_6
# 275| r275_8(glval<Point>) = VariableAddress[p] :
# 275| m275_9(Point) = InitializeParameter[p] : &:r275_8
# 275| r275_10(glval<int>) = VariableAddress[x1] :
# 275| m275_11(int) = InitializeParameter[x1] : &:r275_10
# 276| r276_1(glval<Point>) = VariableAddress[a] :
# 276| m276_2(Point) = Uninitialized[a] : &:r276_1
# 276| m276_3(unknown) = Chi : total:m275_4, partial:m276_2
# 276| r276_4(glval<int>) = FieldAddress[x] : r276_1
# 276| r276_5(int) = Constant[0] :
# 276| m276_6(int) = Store : &:r276_4, r276_5
# 276| m276_7(unknown) = Chi : total:m276_3, partial:m276_6
# 276| r276_8(glval<int>) = FieldAddress[y] : r276_1
# 276| r276_9(int) = Constant[0] :
# 276| m276_10(int) = Store : &:r276_8, r276_9
# 276| m276_11(unknown) = Chi : total:m276_7, partial:m276_10
# 277| r277_1(glval<Point>) = VariableAddress[a] :
# 277| r277_2(Point *) = CopyValue : r277_1
# 277| r277_3(glval<Point *>) = VariableAddress[pp] :
# 277| m277_4(Point *) = Store : &:r277_3, r277_2
# 277| m277_5(unknown) = Chi : total:m276_11, partial:m277_4
# 278| r278_1(glval<bool>) = VariableAddress[c] :
# 278| r278_2(bool) = Load : &:r278_1, m275_7
# 278| v278_3(void) = ConditionalBranch : r278_2
#-----| False -> Block 2
#-----| True -> Block 1
# 279| Block 1
# 279| r279_1(glval<int>) = VariableAddress[x1] :
# 279| r279_2(int) = Load : &:r279_1, m275_11
# 279| r279_3(glval<Point>) = VariableAddress[a] :
# 279| r279_4(glval<int>) = FieldAddress[x] : r279_3
# 279| m279_5(int) = Store : &:r279_4, r279_2
# 279| m279_6(unknown) = Chi : total:m277_5, partial:m279_5
#-----| Goto -> Block 2
# 281| Block 2
# 281| m281_1(int) = Phi : from 0:m276_6, from 1:m279_5
# 281| m281_2(unknown) = Phi : from 0:~m277_5, from 1:~m279_6
# 281| r281_3(glval<int>) = VariableAddress[x] :
# 281| r281_4(glval<Point>) = VariableAddress[a] :
# 281| r281_5(glval<int>) = FieldAddress[x] : r281_4
# 281| r281_6(int) = Load : &:r281_5, m281_1
# 281| m281_7(int) = Store : &:r281_3, r281_6
# 282| v282_1(void) = NoOp :
# 275| v275_12(void) = ReturnVoid :
# 275| v275_13(void) = UnmodeledUse : mu*
# 275| v275_14(void) = AliasedUse : ~m281_2
# 275| v275_15(void) = ExitFunction :
# 286| int main(int, char**)
# 286| Block 0
# 286| v286_1(void) = EnterFunction :
# 286| m286_2(unknown) = AliasedDefinition :
# 286| m286_3(unknown) = InitializeNonLocal :
# 286| m286_4(unknown) = Chi : total:m286_2, partial:m286_3
# 286| mu286_5(unknown) = UnmodeledDefinition :
# 286| r286_6(glval<int>) = VariableAddress[argc] :
# 286| m286_7(int) = InitializeParameter[argc] : &:r286_6
# 286| r286_8(glval<char **>) = VariableAddress[argv] :
# 286| m286_9(char **) = InitializeParameter[argv] : &:r286_8
# 286| r286_10(char **) = Load : &:r286_8, m286_9
# 286| m286_11(unknown) = InitializeIndirection[argv] : &:r286_10
# 286| m286_12(unknown) = Chi : total:m286_4, partial:m286_11
# 287| r287_1(glval<unknown>) = FunctionAddress[unknownFunction] :
# 287| r287_2(glval<int>) = VariableAddress[argc] :
# 287| r287_3(int) = Load : &:r287_2, m286_7
# 287| r287_4(glval<char **>) = VariableAddress[argv] :
# 287| r287_5(char **) = Load : &:r287_4, m286_9
# 287| v287_6(void) = Call : func:r287_1, 0:r287_3, 1:r287_5
# 287| m287_7(unknown) = ^CallSideEffect : ~m286_12
# 287| m287_8(unknown) = Chi : total:m286_12, partial:m287_7
# 287| v287_9(void) = ^BufferReadSideEffect[1] : &:r287_5, ~m287_8
# 287| m287_10(unknown) = ^BufferMayWriteSideEffect[1] : &:r287_5
# 287| m287_11(unknown) = Chi : total:m287_8, partial:m287_10
# 288| r288_1(glval<unknown>) = FunctionAddress[unknownFunction] :
# 288| r288_2(glval<int>) = VariableAddress[argc] :
# 288| r288_3(int) = Load : &:r288_2, m286_7
# 288| r288_4(glval<char **>) = VariableAddress[argv] :
# 288| r288_5(char **) = Load : &:r288_4, m286_9
# 288| v288_6(void) = Call : func:r288_1, 0:r288_3, 1:r288_5
# 288| m288_7(unknown) = ^CallSideEffect : ~m287_11
# 288| m288_8(unknown) = Chi : total:m287_11, partial:m288_7
# 288| v288_9(void) = ^BufferReadSideEffect[1] : &:r288_5, ~m288_8
# 288| m288_10(unknown) = ^BufferMayWriteSideEffect[1] : &:r288_5
# 288| m288_11(unknown) = Chi : total:m288_8, partial:m288_10
# 289| r289_1(glval<int>) = VariableAddress[#return] :
# 289| r289_2(glval<char **>) = VariableAddress[argv] :
# 289| r289_3(char **) = Load : &:r289_2, m286_9
# 289| r289_4(char *) = Load : &:r289_3, ~m288_11
# 289| r289_5(char) = Load : &:r289_4, ~m288_11
# 289| r289_6(int) = Convert : r289_5
# 289| m289_7(int) = Store : &:r289_1, r289_6
# 286| v286_13(void) = ReturnIndirection[argv] : &:r286_10, ~m288_11
# 286| r286_14(glval<int>) = VariableAddress[#return] :
# 286| v286_15(void) = ReturnValue : &:r286_14, m289_7
# 286| v286_16(void) = UnmodeledUse : mu*
# 286| v286_17(void) = AliasedUse : ~m288_11
# 286| v286_18(void) = ExitFunction :

View File

@@ -457,7 +457,7 @@ ssa.cpp:
# 112| m112_12(Point) = Chi : total:m112_7, partial:m112_11
# 113| r113_1(glval<Point>) = VariableAddress[b] :
# 113| r113_2(glval<Point>) = VariableAddress[a] :
# 113| r113_3(Point) = Load : &:r113_2, ~m112_12
# 113| r113_3(Point) = Load : &:r113_2, m112_12
# 113| m113_4(Point) = Store : &:r113_1, r113_3
# 114| v114_1(void) = NoOp :
# 111| v111_10(void) = ReturnVoid :
@@ -490,7 +490,7 @@ ssa.cpp:
# 117| m117_12(Point) = Chi : total:m117_7, partial:m117_11
# 118| r118_1(glval<Point>) = VariableAddress[b] :
# 118| r118_2(glval<Point>) = VariableAddress[a] :
# 118| r118_3(Point) = Load : &:r118_2, ~m117_12
# 118| r118_3(Point) = Load : &:r118_2, m117_12
# 118| m118_4(Point) = Store : &:r118_1, r118_3
# 119| r119_1(glval<unknown>) = FunctionAddress[Escape] :
# 119| r119_2(glval<Point>) = VariableAddress[a] :
@@ -941,7 +941,7 @@ ssa.cpp:
# 209| m209_12(int) = Chi : total:m208_2, partial:m209_11
# 210| r210_1(glval<int>) = VariableAddress[#return] :
# 210| r210_2(glval<int>) = VariableAddress[y] :
# 210| r210_3(int) = Load : &:r210_2, ~m209_12
# 210| r210_3(int) = Load : &:r210_2, m209_12
# 210| m210_4(int) = Store : &:r210_1, r210_3
# 207| r207_8(glval<int>) = VariableAddress[#return] :
# 207| v207_9(void) = ReturnValue : &:r207_8, m210_4
@@ -1179,7 +1179,7 @@ ssa.cpp:
# 251| r251_2(glval<char *>) = VariableAddress[dst] :
# 251| r251_3(char *) = Load : &:r251_2, m248_12
# 251| m251_4(char *) = Store : &:r251_1, r251_3
# 247| v247_12(void) = ReturnIndirection[src] : &:r247_8, ~m249_6
# 247| v247_12(void) = ReturnIndirection[src] : &:r247_8, m249_6
# 247| r247_13(glval<char *>) = VariableAddress[#return] :
# 247| v247_14(void) = ReturnValue : &:r247_13, m251_4
# 247| v247_15(void) = UnmodeledUse : mu*
@@ -1278,51 +1278,108 @@ ssa.cpp:
# 268| v268_16(void) = AliasedUse : ~m269_7
# 268| v268_17(void) = ExitFunction :
# 276| int main(int, char**)
# 276| Block 0
# 276| v276_1(void) = EnterFunction :
# 276| m276_2(unknown) = AliasedDefinition :
# 276| m276_3(unknown) = InitializeNonLocal :
# 276| m276_4(unknown) = Chi : total:m276_2, partial:m276_3
# 276| mu276_5(unknown) = UnmodeledDefinition :
# 276| r276_6(glval<int>) = VariableAddress[argc] :
# 276| m276_7(int) = InitializeParameter[argc] : &:r276_6
# 276| r276_8(glval<char **>) = VariableAddress[argv] :
# 276| m276_9(char **) = InitializeParameter[argv] : &:r276_8
# 276| r276_10(char **) = Load : &:r276_8, m276_9
# 276| m276_11(unknown) = InitializeIndirection[argv] : &:r276_10
# 277| r277_1(glval<unknown>) = FunctionAddress[unknownFunction] :
# 277| r277_2(glval<int>) = VariableAddress[argc] :
# 277| r277_3(int) = Load : &:r277_2, m276_7
# 277| r277_4(glval<char **>) = VariableAddress[argv] :
# 277| r277_5(char **) = Load : &:r277_4, m276_9
# 277| v277_6(void) = Call : func:r277_1, 0:r277_3, 1:r277_5
# 277| m277_7(unknown) = ^CallSideEffect : ~m276_4
# 277| m277_8(unknown) = Chi : total:m276_4, partial:m277_7
# 277| v277_9(void) = ^BufferReadSideEffect[1] : &:r277_5, ~m276_11
# 277| m277_10(unknown) = ^BufferMayWriteSideEffect[1] : &:r277_5
# 277| m277_11(unknown) = Chi : total:m276_11, partial:m277_10
# 278| r278_1(glval<unknown>) = FunctionAddress[unknownFunction] :
# 278| r278_2(glval<int>) = VariableAddress[argc] :
# 278| r278_3(int) = Load : &:r278_2, m276_7
# 278| r278_4(glval<char **>) = VariableAddress[argv] :
# 278| r278_5(char **) = Load : &:r278_4, m276_9
# 278| v278_6(void) = Call : func:r278_1, 0:r278_3, 1:r278_5
# 278| m278_7(unknown) = ^CallSideEffect : ~m277_8
# 278| m278_8(unknown) = Chi : total:m277_8, partial:m278_7
# 278| v278_9(void) = ^BufferReadSideEffect[1] : &:r278_5, ~m277_11
# 278| m278_10(unknown) = ^BufferMayWriteSideEffect[1] : &:r278_5
# 278| m278_11(unknown) = Chi : total:m277_11, partial:m278_10
# 279| r279_1(glval<int>) = VariableAddress[#return] :
# 279| r279_2(glval<char **>) = VariableAddress[argv] :
# 279| r279_3(char **) = Load : &:r279_2, m276_9
# 279| r279_4(char *) = Load : &:r279_3, ~m278_11
# 279| r279_5(char) = Load : &:r279_4, ~m278_8
# 279| r279_6(int) = Convert : r279_5
# 279| m279_7(int) = Store : &:r279_1, r279_6
# 276| v276_12(void) = ReturnIndirection[argv] : &:r276_10, ~m278_11
# 276| r276_13(glval<int>) = VariableAddress[#return] :
# 276| v276_14(void) = ReturnValue : &:r276_13, m279_7
# 276| v276_15(void) = UnmodeledUse : mu*
# 276| v276_16(void) = AliasedUse : ~m278_8
# 276| v276_17(void) = ExitFunction :
# 275| void EscapedButNotConflated(bool, Point, int)
# 275| Block 0
# 275| v275_1(void) = EnterFunction :
# 275| m275_2(unknown) = AliasedDefinition :
# 275| m275_3(unknown) = InitializeNonLocal :
# 275| m275_4(unknown) = Chi : total:m275_2, partial:m275_3
# 275| mu275_5(unknown) = UnmodeledDefinition :
# 275| r275_6(glval<bool>) = VariableAddress[c] :
# 275| m275_7(bool) = InitializeParameter[c] : &:r275_6
# 275| r275_8(glval<Point>) = VariableAddress[p] :
# 275| m275_9(Point) = InitializeParameter[p] : &:r275_8
# 275| r275_10(glval<int>) = VariableAddress[x1] :
# 275| m275_11(int) = InitializeParameter[x1] : &:r275_10
# 276| r276_1(glval<Point>) = VariableAddress[a] :
# 276| m276_2(Point) = Uninitialized[a] : &:r276_1
# 276| r276_3(glval<int>) = FieldAddress[x] : r276_1
# 276| r276_4(int) = Constant[0] :
# 276| m276_5(int) = Store : &:r276_3, r276_4
# 276| m276_6(Point) = Chi : total:m276_2, partial:m276_5
# 276| r276_7(glval<int>) = FieldAddress[y] : r276_1
# 276| r276_8(int) = Constant[0] :
# 276| m276_9(int) = Store : &:r276_7, r276_8
# 276| m276_10(Point) = Chi : total:m276_6, partial:m276_9
# 277| r277_1(glval<Point>) = VariableAddress[a] :
# 277| r277_2(Point *) = CopyValue : r277_1
# 277| r277_3(glval<Point *>) = VariableAddress[pp] :
# 277| m277_4(Point *) = Store : &:r277_3, r277_2
# 277| m277_5(unknown) = Chi : total:m275_4, partial:m277_4
# 278| r278_1(glval<bool>) = VariableAddress[c] :
# 278| r278_2(bool) = Load : &:r278_1, m275_7
# 278| v278_3(void) = ConditionalBranch : r278_2
#-----| False -> Block 2
#-----| True -> Block 1
# 279| Block 1
# 279| r279_1(glval<int>) = VariableAddress[x1] :
# 279| r279_2(int) = Load : &:r279_1, m275_11
# 279| r279_3(glval<Point>) = VariableAddress[a] :
# 279| r279_4(glval<int>) = FieldAddress[x] : r279_3
# 279| m279_5(int) = Store : &:r279_4, r279_2
# 279| m279_6(Point) = Chi : total:m276_10, partial:m279_5
#-----| Goto -> Block 2
# 281| Block 2
# 281| m281_1(int) = Phi : from 0:m276_5, from 1:m279_5
# 281| m281_2(Point) = Phi : from 0:m276_10, from 1:m279_6
# 281| r281_3(glval<int>) = VariableAddress[x] :
# 281| r281_4(glval<Point>) = VariableAddress[a] :
# 281| r281_5(glval<int>) = FieldAddress[x] : r281_4
# 281| r281_6(int) = Load : &:r281_5, m281_1
# 281| m281_7(int) = Store : &:r281_3, r281_6
# 282| v282_1(void) = NoOp :
# 275| v275_12(void) = ReturnVoid :
# 275| v275_13(void) = UnmodeledUse : mu*
# 275| v275_14(void) = AliasedUse : ~m277_5
# 275| v275_15(void) = ExitFunction :
# 286| int main(int, char**)
# 286| Block 0
# 286| v286_1(void) = EnterFunction :
# 286| m286_2(unknown) = AliasedDefinition :
# 286| m286_3(unknown) = InitializeNonLocal :
# 286| m286_4(unknown) = Chi : total:m286_2, partial:m286_3
# 286| mu286_5(unknown) = UnmodeledDefinition :
# 286| r286_6(glval<int>) = VariableAddress[argc] :
# 286| m286_7(int) = InitializeParameter[argc] : &:r286_6
# 286| r286_8(glval<char **>) = VariableAddress[argv] :
# 286| m286_9(char **) = InitializeParameter[argv] : &:r286_8
# 286| r286_10(char **) = Load : &:r286_8, m286_9
# 286| m286_11(unknown) = InitializeIndirection[argv] : &:r286_10
# 287| r287_1(glval<unknown>) = FunctionAddress[unknownFunction] :
# 287| r287_2(glval<int>) = VariableAddress[argc] :
# 287| r287_3(int) = Load : &:r287_2, m286_7
# 287| r287_4(glval<char **>) = VariableAddress[argv] :
# 287| r287_5(char **) = Load : &:r287_4, m286_9
# 287| v287_6(void) = Call : func:r287_1, 0:r287_3, 1:r287_5
# 287| m287_7(unknown) = ^CallSideEffect : ~m286_4
# 287| m287_8(unknown) = Chi : total:m286_4, partial:m287_7
# 287| v287_9(void) = ^BufferReadSideEffect[1] : &:r287_5, ~m286_11
# 287| m287_10(unknown) = ^BufferMayWriteSideEffect[1] : &:r287_5
# 287| m287_11(char *) = Chi : total:m286_11, partial:m287_10
# 288| r288_1(glval<unknown>) = FunctionAddress[unknownFunction] :
# 288| r288_2(glval<int>) = VariableAddress[argc] :
# 288| r288_3(int) = Load : &:r288_2, m286_7
# 288| r288_4(glval<char **>) = VariableAddress[argv] :
# 288| r288_5(char **) = Load : &:r288_4, m286_9
# 288| v288_6(void) = Call : func:r288_1, 0:r288_3, 1:r288_5
# 288| m288_7(unknown) = ^CallSideEffect : ~m287_8
# 288| m288_8(unknown) = Chi : total:m287_8, partial:m288_7
# 288| v288_9(void) = ^BufferReadSideEffect[1] : &:r288_5, ~m287_11
# 288| m288_10(unknown) = ^BufferMayWriteSideEffect[1] : &:r288_5
# 288| m288_11(char *) = Chi : total:m287_11, partial:m288_10
# 289| r289_1(glval<int>) = VariableAddress[#return] :
# 289| r289_2(glval<char **>) = VariableAddress[argv] :
# 289| r289_3(char **) = Load : &:r289_2, m286_9
# 289| r289_4(char *) = Load : &:r289_3, ~m288_11
# 289| r289_5(char) = Load : &:r289_4, ~m288_8
# 289| r289_6(int) = Convert : r289_5
# 289| m289_7(int) = Store : &:r289_1, r289_6
# 286| v286_12(void) = ReturnIndirection[argv] : &:r286_10, ~m288_11, m288_11
# 286| r286_13(glval<int>) = VariableAddress[#return] :
# 286| v286_14(void) = ReturnValue : &:r286_13, m289_7
# 286| v286_15(void) = UnmodeledUse : mu*
# 286| v286_16(void) = AliasedUse : ~m288_8
# 286| v286_17(void) = ExitFunction :

View File

@@ -16,6 +16,9 @@ lostReachability
backEdgeCountMismatch
useNotDominatedByDefinition
switchInstructionWithoutDefaultEdge
notMarkedAsConflated
wronglyMarkedAsConflated
invalidOverlap
missingCanonicalLanguageType
multipleCanonicalLanguageTypes
missingIRType

View File

@@ -16,6 +16,9 @@ lostReachability
backEdgeCountMismatch
useNotDominatedByDefinition
switchInstructionWithoutDefaultEdge
notMarkedAsConflated
wronglyMarkedAsConflated
invalidOverlap
missingCanonicalLanguageType
multipleCanonicalLanguageTypes
missingIRType

View File

@@ -271,6 +271,16 @@ void *MallocAliasing(void *s, int size) {
return buf;
}
Point *pp;
void EscapedButNotConflated(bool c, Point p, int x1) {
Point a = {};
pp = &a; // `a` escapes here and therefore belongs to the aliased vvar
if (c) {
a.x = x1;
}
int x = a.x; // The phi node here is not conflated
}
void unknownFunction(int argc, char **argv);
int main(int argc, char **argv) {

View File

@@ -1189,46 +1189,96 @@ ssa.cpp:
# 268| v268_15(void) = AliasedUse : ~mu268_4
# 268| v268_16(void) = ExitFunction :
# 276| int main(int, char**)
# 276| Block 0
# 276| v276_1(void) = EnterFunction :
# 276| mu276_2(unknown) = AliasedDefinition :
# 276| mu276_3(unknown) = InitializeNonLocal :
# 276| mu276_4(unknown) = UnmodeledDefinition :
# 276| r276_5(glval<int>) = VariableAddress[argc] :
# 276| m276_6(int) = InitializeParameter[argc] : &:r276_5
# 276| r276_7(glval<char **>) = VariableAddress[argv] :
# 276| m276_8(char **) = InitializeParameter[argv] : &:r276_7
# 276| r276_9(char **) = Load : &:r276_7, m276_8
# 276| mu276_10(unknown) = InitializeIndirection[argv] : &:r276_9
# 277| r277_1(glval<unknown>) = FunctionAddress[unknownFunction] :
# 277| r277_2(glval<int>) = VariableAddress[argc] :
# 277| r277_3(int) = Load : &:r277_2, m276_6
# 277| r277_4(glval<char **>) = VariableAddress[argv] :
# 277| r277_5(char **) = Load : &:r277_4, m276_8
# 277| v277_6(void) = Call : func:r277_1, 0:r277_3, 1:r277_5
# 277| mu277_7(unknown) = ^CallSideEffect : ~mu276_4
# 277| v277_8(void) = ^BufferReadSideEffect[1] : &:r277_5, ~mu276_4
# 277| mu277_9(unknown) = ^BufferMayWriteSideEffect[1] : &:r277_5
# 278| r278_1(glval<unknown>) = FunctionAddress[unknownFunction] :
# 278| r278_2(glval<int>) = VariableAddress[argc] :
# 278| r278_3(int) = Load : &:r278_2, m276_6
# 278| r278_4(glval<char **>) = VariableAddress[argv] :
# 278| r278_5(char **) = Load : &:r278_4, m276_8
# 278| v278_6(void) = Call : func:r278_1, 0:r278_3, 1:r278_5
# 278| mu278_7(unknown) = ^CallSideEffect : ~mu276_4
# 278| v278_8(void) = ^BufferReadSideEffect[1] : &:r278_5, ~mu276_4
# 278| mu278_9(unknown) = ^BufferMayWriteSideEffect[1] : &:r278_5
# 279| r279_1(glval<int>) = VariableAddress[#return] :
# 279| r279_2(glval<char **>) = VariableAddress[argv] :
# 279| r279_3(char **) = Load : &:r279_2, m276_8
# 279| r279_4(char *) = Load : &:r279_3, ~mu276_4
# 279| r279_5(char) = Load : &:r279_4, ~mu276_4
# 279| r279_6(int) = Convert : r279_5
# 279| m279_7(int) = Store : &:r279_1, r279_6
# 276| v276_11(void) = ReturnIndirection[argv] : &:r276_9, ~mu276_4
# 276| r276_12(glval<int>) = VariableAddress[#return] :
# 276| v276_13(void) = ReturnValue : &:r276_12, m279_7
# 276| v276_14(void) = UnmodeledUse : mu*
# 276| v276_15(void) = AliasedUse : ~mu276_4
# 276| v276_16(void) = ExitFunction :
# 275| void EscapedButNotConflated(bool, Point, int)
# 275| Block 0
# 275| v275_1(void) = EnterFunction :
# 275| mu275_2(unknown) = AliasedDefinition :
# 275| mu275_3(unknown) = InitializeNonLocal :
# 275| mu275_4(unknown) = UnmodeledDefinition :
# 275| r275_5(glval<bool>) = VariableAddress[c] :
# 275| m275_6(bool) = InitializeParameter[c] : &:r275_5
# 275| r275_7(glval<Point>) = VariableAddress[p] :
# 275| m275_8(Point) = InitializeParameter[p] : &:r275_7
# 275| r275_9(glval<int>) = VariableAddress[x1] :
# 275| m275_10(int) = InitializeParameter[x1] : &:r275_9
# 276| r276_1(glval<Point>) = VariableAddress[a] :
# 276| mu276_2(Point) = Uninitialized[a] : &:r276_1
# 276| r276_3(glval<int>) = FieldAddress[x] : r276_1
# 276| r276_4(int) = Constant[0] :
# 276| mu276_5(int) = Store : &:r276_3, r276_4
# 276| r276_6(glval<int>) = FieldAddress[y] : r276_1
# 276| r276_7(int) = Constant[0] :
# 276| mu276_8(int) = Store : &:r276_6, r276_7
# 277| r277_1(glval<Point>) = VariableAddress[a] :
# 277| r277_2(Point *) = CopyValue : r277_1
# 277| r277_3(glval<Point *>) = VariableAddress[pp] :
# 277| mu277_4(Point *) = Store : &:r277_3, r277_2
# 278| r278_1(glval<bool>) = VariableAddress[c] :
# 278| r278_2(bool) = Load : &:r278_1, m275_6
# 278| v278_3(void) = ConditionalBranch : r278_2
#-----| False -> Block 2
#-----| True -> Block 1
# 279| Block 1
# 279| r279_1(glval<int>) = VariableAddress[x1] :
# 279| r279_2(int) = Load : &:r279_1, m275_10
# 279| r279_3(glval<Point>) = VariableAddress[a] :
# 279| r279_4(glval<int>) = FieldAddress[x] : r279_3
# 279| mu279_5(int) = Store : &:r279_4, r279_2
#-----| Goto -> Block 2
# 281| Block 2
# 281| r281_1(glval<int>) = VariableAddress[x] :
# 281| r281_2(glval<Point>) = VariableAddress[a] :
# 281| r281_3(glval<int>) = FieldAddress[x] : r281_2
# 281| r281_4(int) = Load : &:r281_3, ~mu275_4
# 281| m281_5(int) = Store : &:r281_1, r281_4
# 282| v282_1(void) = NoOp :
# 275| v275_11(void) = ReturnVoid :
# 275| v275_12(void) = UnmodeledUse : mu*
# 275| v275_13(void) = AliasedUse : ~mu275_4
# 275| v275_14(void) = ExitFunction :
# 286| int main(int, char**)
# 286| Block 0
# 286| v286_1(void) = EnterFunction :
# 286| mu286_2(unknown) = AliasedDefinition :
# 286| mu286_3(unknown) = InitializeNonLocal :
# 286| mu286_4(unknown) = UnmodeledDefinition :
# 286| r286_5(glval<int>) = VariableAddress[argc] :
# 286| m286_6(int) = InitializeParameter[argc] : &:r286_5
# 286| r286_7(glval<char **>) = VariableAddress[argv] :
# 286| m286_8(char **) = InitializeParameter[argv] : &:r286_7
# 286| r286_9(char **) = Load : &:r286_7, m286_8
# 286| mu286_10(unknown) = InitializeIndirection[argv] : &:r286_9
# 287| r287_1(glval<unknown>) = FunctionAddress[unknownFunction] :
# 287| r287_2(glval<int>) = VariableAddress[argc] :
# 287| r287_3(int) = Load : &:r287_2, m286_6
# 287| r287_4(glval<char **>) = VariableAddress[argv] :
# 287| r287_5(char **) = Load : &:r287_4, m286_8
# 287| v287_6(void) = Call : func:r287_1, 0:r287_3, 1:r287_5
# 287| mu287_7(unknown) = ^CallSideEffect : ~mu286_4
# 287| v287_8(void) = ^BufferReadSideEffect[1] : &:r287_5, ~mu286_4
# 287| mu287_9(unknown) = ^BufferMayWriteSideEffect[1] : &:r287_5
# 288| r288_1(glval<unknown>) = FunctionAddress[unknownFunction] :
# 288| r288_2(glval<int>) = VariableAddress[argc] :
# 288| r288_3(int) = Load : &:r288_2, m286_6
# 288| r288_4(glval<char **>) = VariableAddress[argv] :
# 288| r288_5(char **) = Load : &:r288_4, m286_8
# 288| v288_6(void) = Call : func:r288_1, 0:r288_3, 1:r288_5
# 288| mu288_7(unknown) = ^CallSideEffect : ~mu286_4
# 288| v288_8(void) = ^BufferReadSideEffect[1] : &:r288_5, ~mu286_4
# 288| mu288_9(unknown) = ^BufferMayWriteSideEffect[1] : &:r288_5
# 289| r289_1(glval<int>) = VariableAddress[#return] :
# 289| r289_2(glval<char **>) = VariableAddress[argv] :
# 289| r289_3(char **) = Load : &:r289_2, m286_8
# 289| r289_4(char *) = Load : &:r289_3, ~mu286_4
# 289| r289_5(char) = Load : &:r289_4, ~mu286_4
# 289| r289_6(int) = Convert : r289_5
# 289| m289_7(int) = Store : &:r289_1, r289_6
# 286| v286_11(void) = ReturnIndirection[argv] : &:r286_9, ~mu286_4
# 286| r286_12(glval<int>) = VariableAddress[#return] :
# 286| v286_13(void) = ReturnValue : &:r286_12, m289_7
# 286| v286_14(void) = UnmodeledUse : mu*
# 286| v286_15(void) = AliasedUse : ~mu286_4
# 286| v286_16(void) = ExitFunction :

View File

@@ -1189,46 +1189,96 @@ ssa.cpp:
# 268| v268_15(void) = AliasedUse : ~mu268_4
# 268| v268_16(void) = ExitFunction :
# 276| int main(int, char**)
# 276| Block 0
# 276| v276_1(void) = EnterFunction :
# 276| mu276_2(unknown) = AliasedDefinition :
# 276| mu276_3(unknown) = InitializeNonLocal :
# 276| mu276_4(unknown) = UnmodeledDefinition :
# 276| r276_5(glval<int>) = VariableAddress[argc] :
# 276| m276_6(int) = InitializeParameter[argc] : &:r276_5
# 276| r276_7(glval<char **>) = VariableAddress[argv] :
# 276| m276_8(char **) = InitializeParameter[argv] : &:r276_7
# 276| r276_9(char **) = Load : &:r276_7, m276_8
# 276| mu276_10(unknown) = InitializeIndirection[argv] : &:r276_9
# 277| r277_1(glval<unknown>) = FunctionAddress[unknownFunction] :
# 277| r277_2(glval<int>) = VariableAddress[argc] :
# 277| r277_3(int) = Load : &:r277_2, m276_6
# 277| r277_4(glval<char **>) = VariableAddress[argv] :
# 277| r277_5(char **) = Load : &:r277_4, m276_8
# 277| v277_6(void) = Call : func:r277_1, 0:r277_3, 1:r277_5
# 277| mu277_7(unknown) = ^CallSideEffect : ~mu276_4
# 277| v277_8(void) = ^BufferReadSideEffect[1] : &:r277_5, ~mu276_4
# 277| mu277_9(unknown) = ^BufferMayWriteSideEffect[1] : &:r277_5
# 278| r278_1(glval<unknown>) = FunctionAddress[unknownFunction] :
# 278| r278_2(glval<int>) = VariableAddress[argc] :
# 278| r278_3(int) = Load : &:r278_2, m276_6
# 278| r278_4(glval<char **>) = VariableAddress[argv] :
# 278| r278_5(char **) = Load : &:r278_4, m276_8
# 278| v278_6(void) = Call : func:r278_1, 0:r278_3, 1:r278_5
# 278| mu278_7(unknown) = ^CallSideEffect : ~mu276_4
# 278| v278_8(void) = ^BufferReadSideEffect[1] : &:r278_5, ~mu276_4
# 278| mu278_9(unknown) = ^BufferMayWriteSideEffect[1] : &:r278_5
# 279| r279_1(glval<int>) = VariableAddress[#return] :
# 279| r279_2(glval<char **>) = VariableAddress[argv] :
# 279| r279_3(char **) = Load : &:r279_2, m276_8
# 279| r279_4(char *) = Load : &:r279_3, ~mu276_4
# 279| r279_5(char) = Load : &:r279_4, ~mu276_4
# 279| r279_6(int) = Convert : r279_5
# 279| m279_7(int) = Store : &:r279_1, r279_6
# 276| v276_11(void) = ReturnIndirection[argv] : &:r276_9, ~mu276_4
# 276| r276_12(glval<int>) = VariableAddress[#return] :
# 276| v276_13(void) = ReturnValue : &:r276_12, m279_7
# 276| v276_14(void) = UnmodeledUse : mu*
# 276| v276_15(void) = AliasedUse : ~mu276_4
# 276| v276_16(void) = ExitFunction :
# 275| void EscapedButNotConflated(bool, Point, int)
# 275| Block 0
# 275| v275_1(void) = EnterFunction :
# 275| mu275_2(unknown) = AliasedDefinition :
# 275| mu275_3(unknown) = InitializeNonLocal :
# 275| mu275_4(unknown) = UnmodeledDefinition :
# 275| r275_5(glval<bool>) = VariableAddress[c] :
# 275| m275_6(bool) = InitializeParameter[c] : &:r275_5
# 275| r275_7(glval<Point>) = VariableAddress[p] :
# 275| m275_8(Point) = InitializeParameter[p] : &:r275_7
# 275| r275_9(glval<int>) = VariableAddress[x1] :
# 275| m275_10(int) = InitializeParameter[x1] : &:r275_9
# 276| r276_1(glval<Point>) = VariableAddress[a] :
# 276| mu276_2(Point) = Uninitialized[a] : &:r276_1
# 276| r276_3(glval<int>) = FieldAddress[x] : r276_1
# 276| r276_4(int) = Constant[0] :
# 276| mu276_5(int) = Store : &:r276_3, r276_4
# 276| r276_6(glval<int>) = FieldAddress[y] : r276_1
# 276| r276_7(int) = Constant[0] :
# 276| mu276_8(int) = Store : &:r276_6, r276_7
# 277| r277_1(glval<Point>) = VariableAddress[a] :
# 277| r277_2(Point *) = CopyValue : r277_1
# 277| r277_3(glval<Point *>) = VariableAddress[pp] :
# 277| mu277_4(Point *) = Store : &:r277_3, r277_2
# 278| r278_1(glval<bool>) = VariableAddress[c] :
# 278| r278_2(bool) = Load : &:r278_1, m275_6
# 278| v278_3(void) = ConditionalBranch : r278_2
#-----| False -> Block 2
#-----| True -> Block 1
# 279| Block 1
# 279| r279_1(glval<int>) = VariableAddress[x1] :
# 279| r279_2(int) = Load : &:r279_1, m275_10
# 279| r279_3(glval<Point>) = VariableAddress[a] :
# 279| r279_4(glval<int>) = FieldAddress[x] : r279_3
# 279| mu279_5(int) = Store : &:r279_4, r279_2
#-----| Goto -> Block 2
# 281| Block 2
# 281| r281_1(glval<int>) = VariableAddress[x] :
# 281| r281_2(glval<Point>) = VariableAddress[a] :
# 281| r281_3(glval<int>) = FieldAddress[x] : r281_2
# 281| r281_4(int) = Load : &:r281_3, ~mu275_4
# 281| m281_5(int) = Store : &:r281_1, r281_4
# 282| v282_1(void) = NoOp :
# 275| v275_11(void) = ReturnVoid :
# 275| v275_12(void) = UnmodeledUse : mu*
# 275| v275_13(void) = AliasedUse : ~mu275_4
# 275| v275_14(void) = ExitFunction :
# 286| int main(int, char**)
# 286| Block 0
# 286| v286_1(void) = EnterFunction :
# 286| mu286_2(unknown) = AliasedDefinition :
# 286| mu286_3(unknown) = InitializeNonLocal :
# 286| mu286_4(unknown) = UnmodeledDefinition :
# 286| r286_5(glval<int>) = VariableAddress[argc] :
# 286| m286_6(int) = InitializeParameter[argc] : &:r286_5
# 286| r286_7(glval<char **>) = VariableAddress[argv] :
# 286| m286_8(char **) = InitializeParameter[argv] : &:r286_7
# 286| r286_9(char **) = Load : &:r286_7, m286_8
# 286| mu286_10(unknown) = InitializeIndirection[argv] : &:r286_9
# 287| r287_1(glval<unknown>) = FunctionAddress[unknownFunction] :
# 287| r287_2(glval<int>) = VariableAddress[argc] :
# 287| r287_3(int) = Load : &:r287_2, m286_6
# 287| r287_4(glval<char **>) = VariableAddress[argv] :
# 287| r287_5(char **) = Load : &:r287_4, m286_8
# 287| v287_6(void) = Call : func:r287_1, 0:r287_3, 1:r287_5
# 287| mu287_7(unknown) = ^CallSideEffect : ~mu286_4
# 287| v287_8(void) = ^BufferReadSideEffect[1] : &:r287_5, ~mu286_4
# 287| mu287_9(unknown) = ^BufferMayWriteSideEffect[1] : &:r287_5
# 288| r288_1(glval<unknown>) = FunctionAddress[unknownFunction] :
# 288| r288_2(glval<int>) = VariableAddress[argc] :
# 288| r288_3(int) = Load : &:r288_2, m286_6
# 288| r288_4(glval<char **>) = VariableAddress[argv] :
# 288| r288_5(char **) = Load : &:r288_4, m286_8
# 288| v288_6(void) = Call : func:r288_1, 0:r288_3, 1:r288_5
# 288| mu288_7(unknown) = ^CallSideEffect : ~mu286_4
# 288| v288_8(void) = ^BufferReadSideEffect[1] : &:r288_5, ~mu286_4
# 288| mu288_9(unknown) = ^BufferMayWriteSideEffect[1] : &:r288_5
# 289| r289_1(glval<int>) = VariableAddress[#return] :
# 289| r289_2(glval<char **>) = VariableAddress[argv] :
# 289| r289_3(char **) = Load : &:r289_2, m286_8
# 289| r289_4(char *) = Load : &:r289_3, ~mu286_4
# 289| r289_5(char) = Load : &:r289_4, ~mu286_4
# 289| r289_6(int) = Convert : r289_5
# 289| m289_7(int) = Store : &:r289_1, r289_6
# 286| v286_11(void) = ReturnIndirection[argv] : &:r286_9, ~mu286_4
# 286| r286_12(glval<int>) = VariableAddress[#return] :
# 286| v286_13(void) = ReturnValue : &:r286_12, m289_7
# 286| v286_14(void) = UnmodeledUse : mu*
# 286| v286_15(void) = AliasedUse : ~mu286_4
# 286| v286_16(void) = ExitFunction :

View File

@@ -16,6 +16,9 @@ lostReachability
backEdgeCountMismatch
useNotDominatedByDefinition
switchInstructionWithoutDefaultEdge
notMarkedAsConflated
wronglyMarkedAsConflated
invalidOverlap
missingCanonicalLanguageType
multipleCanonicalLanguageTypes
missingIRType

View File

@@ -16,6 +16,9 @@ lostReachability
backEdgeCountMismatch
useNotDominatedByDefinition
switchInstructionWithoutDefaultEdge
notMarkedAsConflated
wronglyMarkedAsConflated
invalidOverlap
missingCanonicalLanguageType
multipleCanonicalLanguageTypes
missingIRType

View File

@@ -2,10 +2,10 @@
| literals.c:3:13:3:16 | 1.0 |
| literals.c:4:13:4:16 | 1.0 |
| literals.c:5:13:5:16 | 1.0 |
| literals.c:6:13:6:16 | (1.0,1.0i) |
| literals.c:7:13:7:16 | (1.0,1.0i) |
| literals.c:8:13:8:16 | (1.0,1.0i) |
| literals.c:9:13:9:16 | (1.0,1.0i) |
| literals.c:6:13:6:16 | (0.0,1.0i) |
| literals.c:7:13:7:16 | (0.0,1.0i) |
| literals.c:8:13:8:16 | (0.0,1.0i) |
| literals.c:9:13:9:16 | (0.0,1.0i) |
| literals.c:10:13:10:16 | 1.0 |
| literals.c:11:13:11:16 | 1.0 |
| literals.c:12:13:12:16 | 1.0 |

View File

@@ -568,6 +568,9 @@ lostReachability
backEdgeCountMismatch
useNotDominatedByDefinition
switchInstructionWithoutDefaultEdge
notMarkedAsConflated
wronglyMarkedAsConflated
invalidOverlap
missingCanonicalLanguageType
multipleCanonicalLanguageTypes
missingIRType

View File

@@ -0,0 +1,98 @@
uniqueEnclosingCallable
| enum.c:2:6:2:6 | 1 | Node should have one enclosing callable but has 0. |
| enum.c:2:6:2:10 | ... + ... | Node should have one enclosing callable but has 0. |
| enum.c:2:10:2:10 | 1 | Node should have one enclosing callable but has 0. |
| misc.c:11:17:11:17 | 1 | Node should have one enclosing callable but has 0. |
| misc.c:11:17:11:21 | ... + ... | Node should have one enclosing callable but has 0. |
| misc.c:11:21:11:21 | 2 | Node should have one enclosing callable but has 0. |
| misc.c:210:24:210:24 | 0 | Node should have one enclosing callable but has 0. |
| misc.c:210:24:210:28 | ... + ... | Node should have one enclosing callable but has 0. |
| misc.c:210:28:210:28 | 1 | Node should have one enclosing callable but has 0. |
uniqueTypeBound
| bad_asts.cpp:19:10:19:10 | constructor init of field x [post-this] | Node should have one type bound but has 0. |
| bad_asts.cpp:19:10:19:10 | constructor init of field x [pre-this] | Node should have one type bound but has 0. |
| bad_asts.cpp:19:10:19:10 | constructor init of field y [post-this] | Node should have one type bound but has 0. |
| bad_asts.cpp:19:10:19:10 | constructor init of field y [pre-this] | Node should have one type bound but has 0. |
| cpp17.cpp:15:5:15:45 | call to unknown function | Node should have one type bound but has 0. |
| ir.cpp:784:15:784:15 | constructor init of field middlevb2_s [post-this] | Node should have one type bound but has 0. |
| ir.cpp:784:15:784:15 | constructor init of field middlevb2_s [pre-this] | Node should have one type bound but has 0. |
| static_init_templates.cpp:240:7:240:7 | constructor init of field mcc [post-this] | Node should have one type bound but has 0. |
| static_init_templates.cpp:240:7:240:7 | constructor init of field mcc [pre-this] | Node should have one type bound but has 0. |
uniqueTypeRepr
| bad_asts.cpp:19:10:19:10 | constructor init of field x [post-this] | Node should have one type representation but has 0. |
| bad_asts.cpp:19:10:19:10 | constructor init of field x [pre-this] | Node should have one type representation but has 0. |
| bad_asts.cpp:19:10:19:10 | constructor init of field y [post-this] | Node should have one type representation but has 0. |
| bad_asts.cpp:19:10:19:10 | constructor init of field y [pre-this] | Node should have one type representation but has 0. |
| cpp17.cpp:15:5:15:45 | call to unknown function | Node should have one type representation but has 0. |
| ir.cpp:784:15:784:15 | constructor init of field middlevb2_s [post-this] | Node should have one type representation but has 0. |
| ir.cpp:784:15:784:15 | constructor init of field middlevb2_s [pre-this] | Node should have one type representation but has 0. |
| static_init_templates.cpp:240:7:240:7 | constructor init of field mcc [post-this] | Node should have one type representation but has 0. |
| static_init_templates.cpp:240:7:240:7 | constructor init of field mcc [pre-this] | Node should have one type representation but has 0. |
uniqueNodeLocation
| break_labels.c:2:11:2:11 | i | Node should have one location but has 4. |
| break_labels.c:2:11:2:11 | x | Node should have one location but has 4. |
| cpp11.cpp:82:17:82:55 | call to Val | Node should have one location but has 2. |
| cpp11.cpp:82:17:82:55 | call to Val | Node should have one location but has 2. |
| duff.c:2:12:2:12 | i | Node should have one location but has 4. |
| duff.c:2:12:2:12 | x | Node should have one location but has 4. |
| file://:0:0:0:0 | call to PolymorphicBase | Node should have one location but has 2. |
| file://:0:0:0:0 | call to PolymorphicDerived | Node should have one location but has 2. |
| file://:0:0:0:0 | call to Val | Node should have one location but has 2. |
| file://:0:0:0:0 | call to Val | Node should have one location but has 2. |
| file://:0:0:0:0 | call to exn1 | Node should have one location but has 2. |
| file://:0:0:0:0 | p#2 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#2 | Node should have one location but has 0. |
| ifelsestmt.c:37:17:37:17 | x | Node should have one location but has 2. |
| ifelsestmt.c:37:24:37:24 | y | Node should have one location but has 2. |
| ifstmt.c:27:17:27:17 | x | Node should have one location but has 2. |
| ifstmt.c:27:24:27:24 | y | Node should have one location but has 2. |
| ir.cpp:850:19:850:19 | call to PolymorphicBase | Node should have one location but has 2. |
| ir.cpp:851:22:851:22 | call to PolymorphicDerived | Node should have one location but has 2. |
| nodefaultswitchstmt.c:1:12:1:12 | i | Node should have one location but has 4. |
| nodefaultswitchstmt.c:1:12:1:12 | x | Node should have one location but has 4. |
| switchstmt.c:1:12:1:12 | i | Node should have one location but has 4. |
| switchstmt.c:1:12:1:12 | x | Node should have one location but has 4. |
| try_catch.cpp:13:5:13:16 | call to exn1 | Node should have one location but has 2. |
missingLocation
| Nodes without location: 2 |
uniqueNodeToString
| break_labels.c:2:11:2:11 | i | Node should have one toString but has 2. |
| break_labels.c:2:11:2:11 | x | Node should have one toString but has 2. |
| break_labels.c:4:9:4:9 | i | Node should have one toString but has 2. |
| break_labels.c:4:9:4:9 | x | Node should have one toString but has 2. |
| break_labels.c:6:16:6:16 | i | Node should have one toString but has 2. |
| break_labels.c:6:16:6:16 | x | Node should have one toString but has 2. |
| break_labels.c:7:17:7:17 | i | Node should have one toString but has 2. |
| break_labels.c:7:17:7:17 | x | Node should have one toString but has 2. |
| duff.c:2:12:2:12 | i | Node should have one toString but has 2. |
| duff.c:2:12:2:12 | x | Node should have one toString but has 2. |
| duff.c:3:14:3:14 | i | Node should have one toString but has 2. |
| duff.c:3:14:3:14 | x | Node should have one toString but has 2. |
| duff.c:4:13:4:13 | i | Node should have one toString but has 2. |
| duff.c:4:13:4:13 | x | Node should have one toString but has 2. |
| nodefaultswitchstmt.c:1:12:1:12 | i | Node should have one toString but has 2. |
| nodefaultswitchstmt.c:1:12:1:12 | x | Node should have one toString but has 2. |
| nodefaultswitchstmt.c:2:14:2:14 | i | Node should have one toString but has 2. |
| nodefaultswitchstmt.c:2:14:2:14 | x | Node should have one toString but has 2. |
| switchstmt.c:1:12:1:12 | i | Node should have one toString but has 2. |
| switchstmt.c:1:12:1:12 | x | Node should have one toString but has 2. |
| switchstmt.c:2:14:2:14 | i | Node should have one toString but has 2. |
| switchstmt.c:2:14:2:14 | x | Node should have one toString but has 2. |
missingToString
parameterCallable
localFlowIsLocal
compatibleTypesReflexive
unreachableNodeCCtx
localCallNodes
postIsNotPre
postHasUniquePre
uniquePostUpdate
postIsInSameCallable
reverseRead
storeIsPostUpdate
argHasPostUpdate
| builtin.cpp:15:31:15:35 | * ... | ArgumentNode is missing PostUpdateNode. |
| cpp11.cpp:77:5:77:17 | unaryFunction | ArgumentNode is missing PostUpdateNode. |
| destructors.cpp:52:14:52:16 | ref | ArgumentNode is missing PostUpdateNode. |
| ir.cpp:623:5:623:5 | r | ArgumentNode is missing PostUpdateNode. |
| ir.cpp:625:5:625:5 | s | ArgumentNode is missing PostUpdateNode. |

View File

@@ -0,0 +1 @@
import semmle.code.cpp.dataflow.internal.DataFlowImplConsistency::Consistency

View File

@@ -0,0 +1,801 @@
uniqueEnclosingCallable
uniqueTypeBound
| break_labels.c:13:5:13:18 | VariableAddress | Node should have one type bound but has 2. |
| break_labels.c:13:12:13:17 | Store | Node should have one type bound but has 2. |
| enum.c:6:2:6:10 | VariableAddress | Node should have one type bound but has 2. |
| enum.c:6:9:6:9 | Store | Node should have one type bound but has 2. |
| parameterinitializer.cpp:4:5:4:13 | VariableAddress | Node should have one type bound but has 2. |
| parameterinitializer.cpp:4:12:4:12 | Store | Node should have one type bound but has 2. |
uniqueTypeRepr
uniqueNodeLocation
| aggregateinitializer.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
| aggregateinitializer.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
| aggregateinitializer.c:1:6:1:6 | Chi | Node should have one location but has 20. |
| aggregateinitializer.c:1:6:1:6 | EnterFunction | Node should have one location but has 20. |
| aggregateinitializer.c:1:6:1:6 | ExitFunction | Node should have one location but has 20. |
| aggregateinitializer.c:1:6:1:6 | InitializeNonLocal | Node should have one location but has 20. |
| aggregateinitializer.c:1:6:1:6 | Phi | Node should have one location but has 20. |
| aggregateinitializer.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
| aggregateinitializer.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
| aggregateinitializer.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
| aggregateinitializer.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
| allocators.cpp:14:5:14:8 | AliasedDefinition | Node should have one location but has 4. |
| allocators.cpp:14:5:14:8 | AliasedUse | Node should have one location but has 4. |
| allocators.cpp:14:5:14:8 | Chi | Node should have one location but has 4. |
| allocators.cpp:14:5:14:8 | EnterFunction | Node should have one location but has 4. |
| allocators.cpp:14:5:14:8 | ExitFunction | Node should have one location but has 4. |
| allocators.cpp:14:5:14:8 | InitializeNonLocal | Node should have one location but has 4. |
| allocators.cpp:14:5:14:8 | Phi | Node should have one location but has 4. |
| allocators.cpp:14:5:14:8 | Phi | Node should have one location but has 4. |
| allocators.cpp:14:5:14:8 | ReturnValue | Node should have one location but has 4. |
| allocators.cpp:14:5:14:8 | UnmodeledDefinition | Node should have one location but has 4. |
| allocators.cpp:14:5:14:8 | UnmodeledUse | Node should have one location but has 4. |
| allocators.cpp:14:5:14:8 | VariableAddress | Node should have one location but has 4. |
| array_delete.cpp:5:6:5:6 | AliasedDefinition | Node should have one location but has 14. |
| array_delete.cpp:5:6:5:6 | AliasedUse | Node should have one location but has 14. |
| array_delete.cpp:5:6:5:6 | Chi | Node should have one location but has 14. |
| array_delete.cpp:5:6:5:6 | EnterFunction | Node should have one location but has 14. |
| array_delete.cpp:5:6:5:6 | ExitFunction | Node should have one location but has 14. |
| array_delete.cpp:5:6:5:6 | InitializeNonLocal | Node should have one location but has 14. |
| array_delete.cpp:5:6:5:6 | Phi | Node should have one location but has 14. |
| array_delete.cpp:5:6:5:6 | ReturnVoid | Node should have one location but has 14. |
| array_delete.cpp:5:6:5:6 | UnmodeledDefinition | Node should have one location but has 14. |
| array_delete.cpp:5:6:5:6 | UnmodeledUse | Node should have one location but has 14. |
| assignexpr.cpp:6:6:6:6 | AliasedDefinition | Node should have one location but has 14. |
| assignexpr.cpp:6:6:6:6 | AliasedUse | Node should have one location but has 14. |
| assignexpr.cpp:6:6:6:6 | Chi | Node should have one location but has 14. |
| assignexpr.cpp:6:6:6:6 | EnterFunction | Node should have one location but has 14. |
| assignexpr.cpp:6:6:6:6 | ExitFunction | Node should have one location but has 14. |
| assignexpr.cpp:6:6:6:6 | InitializeNonLocal | Node should have one location but has 14. |
| assignexpr.cpp:6:6:6:6 | Phi | Node should have one location but has 14. |
| assignexpr.cpp:6:6:6:6 | ReturnVoid | Node should have one location but has 14. |
| assignexpr.cpp:6:6:6:6 | UnmodeledDefinition | Node should have one location but has 14. |
| assignexpr.cpp:6:6:6:6 | UnmodeledUse | Node should have one location but has 14. |
| break_labels.c:2:5:2:5 | AliasedDefinition | Node should have one location but has 20. |
| break_labels.c:2:5:2:5 | AliasedUse | Node should have one location but has 20. |
| break_labels.c:2:5:2:5 | Chi | Node should have one location but has 20. |
| break_labels.c:2:5:2:5 | EnterFunction | Node should have one location but has 20. |
| break_labels.c:2:5:2:5 | ExitFunction | Node should have one location but has 20. |
| break_labels.c:2:5:2:5 | InitializeNonLocal | Node should have one location but has 20. |
| break_labels.c:2:5:2:5 | Phi | Node should have one location but has 20. |
| break_labels.c:2:5:2:5 | ReturnVoid | Node should have one location but has 20. |
| break_labels.c:2:5:2:5 | UnmodeledDefinition | Node should have one location but has 20. |
| break_labels.c:2:5:2:5 | UnmodeledUse | Node should have one location but has 20. |
| break_labels.c:2:5:2:5 | Unreached | Node should have one location but has 20. |
| break_labels.c:2:11:2:11 | VariableAddress | Node should have one location but has 4. |
| break_labels.c:2:11:2:11 | i | Node should have one location but has 4. |
| break_labels.c:2:11:2:11 | i | Node should have one location but has 4. |
| break_labels.c:2:11:2:11 | x | Node should have one location but has 4. |
| break_labels.c:2:11:2:11 | x | Node should have one location but has 4. |
| conditional_destructors.cpp:29:6:29:7 | AliasedDefinition | Node should have one location but has 2. |
| conditional_destructors.cpp:29:6:29:7 | AliasedUse | Node should have one location but has 2. |
| conditional_destructors.cpp:29:6:29:7 | Chi | Node should have one location but has 2. |
| conditional_destructors.cpp:29:6:29:7 | EnterFunction | Node should have one location but has 2. |
| conditional_destructors.cpp:29:6:29:7 | ExitFunction | Node should have one location but has 2. |
| conditional_destructors.cpp:29:6:29:7 | InitializeNonLocal | Node should have one location but has 2. |
| conditional_destructors.cpp:29:6:29:7 | Phi | Node should have one location but has 2. |
| conditional_destructors.cpp:29:6:29:7 | ReturnVoid | Node should have one location but has 2. |
| conditional_destructors.cpp:29:6:29:7 | UnmodeledDefinition | Node should have one location but has 2. |
| conditional_destructors.cpp:29:6:29:7 | UnmodeledUse | Node should have one location but has 2. |
| conditional_destructors.cpp:38:6:38:7 | AliasedDefinition | Node should have one location but has 2. |
| conditional_destructors.cpp:38:6:38:7 | AliasedUse | Node should have one location but has 2. |
| conditional_destructors.cpp:38:6:38:7 | Chi | Node should have one location but has 2. |
| conditional_destructors.cpp:38:6:38:7 | EnterFunction | Node should have one location but has 2. |
| conditional_destructors.cpp:38:6:38:7 | ExitFunction | Node should have one location but has 2. |
| conditional_destructors.cpp:38:6:38:7 | InitializeNonLocal | Node should have one location but has 2. |
| conditional_destructors.cpp:38:6:38:7 | Phi | Node should have one location but has 2. |
| conditional_destructors.cpp:38:6:38:7 | ReturnVoid | Node should have one location but has 2. |
| conditional_destructors.cpp:38:6:38:7 | UnmodeledDefinition | Node should have one location but has 2. |
| conditional_destructors.cpp:38:6:38:7 | UnmodeledUse | Node should have one location but has 2. |
| conditional_destructors.cpp:38:6:38:7 | Unreached | Node should have one location but has 2. |
| constmemberaccess.cpp:3:7:3:7 | x | Node should have one location but has 2. |
| constmemberaccess.cpp:6:6:6:6 | AliasedDefinition | Node should have one location but has 14. |
| constmemberaccess.cpp:6:6:6:6 | AliasedUse | Node should have one location but has 14. |
| constmemberaccess.cpp:6:6:6:6 | Chi | Node should have one location but has 14. |
| constmemberaccess.cpp:6:6:6:6 | EnterFunction | Node should have one location but has 14. |
| constmemberaccess.cpp:6:6:6:6 | ExitFunction | Node should have one location but has 14. |
| constmemberaccess.cpp:6:6:6:6 | InitializeNonLocal | Node should have one location but has 14. |
| constmemberaccess.cpp:6:6:6:6 | Phi | Node should have one location but has 14. |
| constmemberaccess.cpp:6:6:6:6 | ReturnVoid | Node should have one location but has 14. |
| constmemberaccess.cpp:6:6:6:6 | UnmodeledDefinition | Node should have one location but has 14. |
| constmemberaccess.cpp:6:6:6:6 | UnmodeledUse | Node should have one location but has 14. |
| constructorinitializer.cpp:3:9:3:9 | i | Node should have one location but has 2. |
| constructorinitializer.cpp:3:9:3:9 | x | Node should have one location but has 2. |
| constructorinitializer.cpp:3:16:3:16 | j | Node should have one location but has 2. |
| constructorinitializer.cpp:3:16:3:16 | y | Node should have one location but has 2. |
| constructorinitializer.cpp:6:6:6:6 | AliasedDefinition | Node should have one location but has 14. |
| constructorinitializer.cpp:6:6:6:6 | AliasedUse | Node should have one location but has 14. |
| constructorinitializer.cpp:6:6:6:6 | Chi | Node should have one location but has 14. |
| constructorinitializer.cpp:6:6:6:6 | EnterFunction | Node should have one location but has 14. |
| constructorinitializer.cpp:6:6:6:6 | ExitFunction | Node should have one location but has 14. |
| constructorinitializer.cpp:6:6:6:6 | InitializeNonLocal | Node should have one location but has 14. |
| constructorinitializer.cpp:6:6:6:6 | Phi | Node should have one location but has 14. |
| constructorinitializer.cpp:6:6:6:6 | ReturnVoid | Node should have one location but has 14. |
| constructorinitializer.cpp:6:6:6:6 | UnmodeledDefinition | Node should have one location but has 14. |
| constructorinitializer.cpp:6:6:6:6 | UnmodeledUse | Node should have one location but has 14. |
| defconstructornewexpr.cpp:3:6:3:6 | AliasedDefinition | Node should have one location but has 14. |
| defconstructornewexpr.cpp:3:6:3:6 | AliasedUse | Node should have one location but has 14. |
| defconstructornewexpr.cpp:3:6:3:6 | Chi | Node should have one location but has 14. |
| defconstructornewexpr.cpp:3:6:3:6 | EnterFunction | Node should have one location but has 14. |
| defconstructornewexpr.cpp:3:6:3:6 | ExitFunction | Node should have one location but has 14. |
| defconstructornewexpr.cpp:3:6:3:6 | InitializeNonLocal | Node should have one location but has 14. |
| defconstructornewexpr.cpp:3:6:3:6 | Phi | Node should have one location but has 14. |
| defconstructornewexpr.cpp:3:6:3:6 | ReturnVoid | Node should have one location but has 14. |
| defconstructornewexpr.cpp:3:6:3:6 | UnmodeledDefinition | Node should have one location but has 14. |
| defconstructornewexpr.cpp:3:6:3:6 | UnmodeledUse | Node should have one location but has 14. |
| defdestructordeleteexpr.cpp:3:6:3:6 | AliasedDefinition | Node should have one location but has 14. |
| defdestructordeleteexpr.cpp:3:6:3:6 | AliasedUse | Node should have one location but has 14. |
| defdestructordeleteexpr.cpp:3:6:3:6 | Chi | Node should have one location but has 14. |
| defdestructordeleteexpr.cpp:3:6:3:6 | EnterFunction | Node should have one location but has 14. |
| defdestructordeleteexpr.cpp:3:6:3:6 | ExitFunction | Node should have one location but has 14. |
| defdestructordeleteexpr.cpp:3:6:3:6 | InitializeNonLocal | Node should have one location but has 14. |
| defdestructordeleteexpr.cpp:3:6:3:6 | Phi | Node should have one location but has 14. |
| defdestructordeleteexpr.cpp:3:6:3:6 | ReturnVoid | Node should have one location but has 14. |
| defdestructordeleteexpr.cpp:3:6:3:6 | UnmodeledDefinition | Node should have one location but has 14. |
| defdestructordeleteexpr.cpp:3:6:3:6 | UnmodeledUse | Node should have one location but has 14. |
| deleteexpr.cpp:6:6:6:6 | AliasedDefinition | Node should have one location but has 14. |
| deleteexpr.cpp:6:6:6:6 | AliasedUse | Node should have one location but has 14. |
| deleteexpr.cpp:6:6:6:6 | Chi | Node should have one location but has 14. |
| deleteexpr.cpp:6:6:6:6 | EnterFunction | Node should have one location but has 14. |
| deleteexpr.cpp:6:6:6:6 | ExitFunction | Node should have one location but has 14. |
| deleteexpr.cpp:6:6:6:6 | InitializeNonLocal | Node should have one location but has 14. |
| deleteexpr.cpp:6:6:6:6 | Phi | Node should have one location but has 14. |
| deleteexpr.cpp:6:6:6:6 | ReturnVoid | Node should have one location but has 14. |
| deleteexpr.cpp:6:6:6:6 | UnmodeledDefinition | Node should have one location but has 14. |
| deleteexpr.cpp:6:6:6:6 | UnmodeledUse | Node should have one location but has 14. |
| dostmt.c:8:6:8:18 | AliasedDefinition | Node should have one location but has 4. |
| dostmt.c:8:6:8:18 | AliasedUse | Node should have one location but has 4. |
| dostmt.c:8:6:8:18 | Chi | Node should have one location but has 4. |
| dostmt.c:8:6:8:18 | EnterFunction | Node should have one location but has 4. |
| dostmt.c:8:6:8:18 | ExitFunction | Node should have one location but has 4. |
| dostmt.c:8:6:8:18 | InitializeNonLocal | Node should have one location but has 4. |
| dostmt.c:8:6:8:18 | ReturnVoid | Node should have one location but has 4. |
| dostmt.c:8:6:8:18 | UnmodeledDefinition | Node should have one location but has 4. |
| dostmt.c:8:6:8:18 | UnmodeledUse | Node should have one location but has 4. |
| dostmt.c:8:6:8:18 | Unreached | Node should have one location but has 4. |
| dostmt.c:16:6:16:18 | AliasedDefinition | Node should have one location but has 4. |
| dostmt.c:16:6:16:18 | AliasedUse | Node should have one location but has 4. |
| dostmt.c:16:6:16:18 | Chi | Node should have one location but has 4. |
| dostmt.c:16:6:16:18 | EnterFunction | Node should have one location but has 4. |
| dostmt.c:16:6:16:18 | ExitFunction | Node should have one location but has 4. |
| dostmt.c:16:6:16:18 | InitializeNonLocal | Node should have one location but has 4. |
| dostmt.c:16:6:16:18 | ReturnVoid | Node should have one location but has 4. |
| dostmt.c:16:6:16:18 | UnmodeledDefinition | Node should have one location but has 4. |
| dostmt.c:16:6:16:18 | UnmodeledUse | Node should have one location but has 4. |
| dostmt.c:16:6:16:18 | Unreached | Node should have one location but has 4. |
| dostmt.c:25:6:25:18 | AliasedDefinition | Node should have one location but has 2. |
| dostmt.c:25:6:25:18 | Chi | Node should have one location but has 2. |
| dostmt.c:25:6:25:18 | EnterFunction | Node should have one location but has 2. |
| dostmt.c:25:6:25:18 | InitializeNonLocal | Node should have one location but has 2. |
| dostmt.c:25:6:25:18 | UnmodeledDefinition | Node should have one location but has 2. |
| dostmt.c:25:6:25:18 | Unreached | Node should have one location but has 2. |
| dostmt.c:32:6:32:11 | AliasedDefinition | Node should have one location but has 4. |
| dostmt.c:32:6:32:11 | AliasedUse | Node should have one location but has 4. |
| dostmt.c:32:6:32:11 | Chi | Node should have one location but has 4. |
| dostmt.c:32:6:32:11 | EnterFunction | Node should have one location but has 4. |
| dostmt.c:32:6:32:11 | ExitFunction | Node should have one location but has 4. |
| dostmt.c:32:6:32:11 | InitializeNonLocal | Node should have one location but has 4. |
| dostmt.c:32:6:32:11 | ReturnVoid | Node should have one location but has 4. |
| dostmt.c:32:6:32:11 | UnmodeledDefinition | Node should have one location but has 4. |
| dostmt.c:32:6:32:11 | UnmodeledUse | Node should have one location but has 4. |
| duff.c:2:6:2:6 | AliasedDefinition | Node should have one location but has 20. |
| duff.c:2:6:2:6 | AliasedUse | Node should have one location but has 20. |
| duff.c:2:6:2:6 | Chi | Node should have one location but has 20. |
| duff.c:2:6:2:6 | EnterFunction | Node should have one location but has 20. |
| duff.c:2:6:2:6 | ExitFunction | Node should have one location but has 20. |
| duff.c:2:6:2:6 | InitializeNonLocal | Node should have one location but has 20. |
| duff.c:2:6:2:6 | Phi | Node should have one location but has 20. |
| duff.c:2:6:2:6 | ReturnVoid | Node should have one location but has 20. |
| duff.c:2:6:2:6 | UnmodeledDefinition | Node should have one location but has 20. |
| duff.c:2:6:2:6 | UnmodeledUse | Node should have one location but has 20. |
| duff.c:2:6:2:6 | Unreached | Node should have one location but has 20. |
| duff.c:2:12:2:12 | VariableAddress | Node should have one location but has 4. |
| duff.c:2:12:2:12 | i | Node should have one location but has 4. |
| duff.c:2:12:2:12 | i | Node should have one location but has 4. |
| duff.c:2:12:2:12 | x | Node should have one location but has 4. |
| duff.c:2:12:2:12 | x | Node should have one location but has 4. |
| dummyblock.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
| dummyblock.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
| dummyblock.c:1:6:1:6 | Chi | Node should have one location but has 20. |
| dummyblock.c:1:6:1:6 | EnterFunction | Node should have one location but has 20. |
| dummyblock.c:1:6:1:6 | ExitFunction | Node should have one location but has 20. |
| dummyblock.c:1:6:1:6 | InitializeNonLocal | Node should have one location but has 20. |
| dummyblock.c:1:6:1:6 | Phi | Node should have one location but has 20. |
| dummyblock.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
| dummyblock.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
| dummyblock.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
| dummyblock.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
| emptyblock.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
| emptyblock.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
| emptyblock.c:1:6:1:6 | Chi | Node should have one location but has 20. |
| emptyblock.c:1:6:1:6 | EnterFunction | Node should have one location but has 20. |
| emptyblock.c:1:6:1:6 | ExitFunction | Node should have one location but has 20. |
| emptyblock.c:1:6:1:6 | InitializeNonLocal | Node should have one location but has 20. |
| emptyblock.c:1:6:1:6 | Phi | Node should have one location but has 20. |
| emptyblock.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
| emptyblock.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
| emptyblock.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
| emptyblock.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
| enum.c:5:5:5:5 | AliasedDefinition | Node should have one location but has 20. |
| enum.c:5:5:5:5 | AliasedUse | Node should have one location but has 20. |
| enum.c:5:5:5:5 | Chi | Node should have one location but has 20. |
| enum.c:5:5:5:5 | EnterFunction | Node should have one location but has 20. |
| enum.c:5:5:5:5 | ExitFunction | Node should have one location but has 20. |
| enum.c:5:5:5:5 | InitializeNonLocal | Node should have one location but has 20. |
| enum.c:5:5:5:5 | Phi | Node should have one location but has 20. |
| enum.c:5:5:5:5 | ReturnVoid | Node should have one location but has 20. |
| enum.c:5:5:5:5 | UnmodeledDefinition | Node should have one location but has 20. |
| enum.c:5:5:5:5 | UnmodeledUse | Node should have one location but has 20. |
| enum.c:5:5:5:5 | Unreached | Node should have one location but has 20. |
| exprstmt.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
| exprstmt.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
| exprstmt.c:1:6:1:6 | Chi | Node should have one location but has 20. |
| exprstmt.c:1:6:1:6 | EnterFunction | Node should have one location but has 20. |
| exprstmt.c:1:6:1:6 | ExitFunction | Node should have one location but has 20. |
| exprstmt.c:1:6:1:6 | InitializeNonLocal | Node should have one location but has 20. |
| exprstmt.c:1:6:1:6 | Phi | Node should have one location but has 20. |
| exprstmt.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
| exprstmt.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
| exprstmt.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
| exprstmt.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
| fieldaccess.cpp:3:7:3:7 | x | Node should have one location but has 2. |
| fieldaccess.cpp:6:6:6:6 | AliasedDefinition | Node should have one location but has 14. |
| fieldaccess.cpp:6:6:6:6 | AliasedUse | Node should have one location but has 14. |
| fieldaccess.cpp:6:6:6:6 | Chi | Node should have one location but has 14. |
| fieldaccess.cpp:6:6:6:6 | EnterFunction | Node should have one location but has 14. |
| fieldaccess.cpp:6:6:6:6 | ExitFunction | Node should have one location but has 14. |
| fieldaccess.cpp:6:6:6:6 | InitializeNonLocal | Node should have one location but has 14. |
| fieldaccess.cpp:6:6:6:6 | Phi | Node should have one location but has 14. |
| fieldaccess.cpp:6:6:6:6 | ReturnVoid | Node should have one location but has 14. |
| fieldaccess.cpp:6:6:6:6 | UnmodeledDefinition | Node should have one location but has 14. |
| fieldaccess.cpp:6:6:6:6 | UnmodeledUse | Node should have one location but has 14. |
| file://:0:0:0:0 | InitializeIndirection | Node should have one location but has 0. |
| file://:0:0:0:0 | Load | Node should have one location but has 0. |
| file://:0:0:0:0 | ReturnIndirection | Node should have one location but has 0. |
| file://:0:0:0:0 | VariableAddress | Node should have one location but has 0. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#0 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#1 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#1 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#1 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#1 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#1 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#1 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#1 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#1 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#2 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#2 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#2 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#2 | Node should have one location but has 0. |
| file://:0:0:0:0 | p#3 | Node should have one location but has 0. |
| forstmt.cpp:1:6:1:7 | AliasedDefinition | Node should have one location but has 2. |
| forstmt.cpp:1:6:1:7 | AliasedUse | Node should have one location but has 2. |
| forstmt.cpp:1:6:1:7 | Chi | Node should have one location but has 2. |
| forstmt.cpp:1:6:1:7 | EnterFunction | Node should have one location but has 2. |
| forstmt.cpp:1:6:1:7 | ExitFunction | Node should have one location but has 2. |
| forstmt.cpp:1:6:1:7 | InitializeNonLocal | Node should have one location but has 2. |
| forstmt.cpp:1:6:1:7 | Phi | Node should have one location but has 2. |
| forstmt.cpp:1:6:1:7 | ReturnVoid | Node should have one location but has 2. |
| forstmt.cpp:1:6:1:7 | UnmodeledDefinition | Node should have one location but has 2. |
| forstmt.cpp:1:6:1:7 | UnmodeledUse | Node should have one location but has 2. |
| forstmt.cpp:8:6:8:7 | AliasedDefinition | Node should have one location but has 2. |
| forstmt.cpp:8:6:8:7 | AliasedUse | Node should have one location but has 2. |
| forstmt.cpp:8:6:8:7 | Chi | Node should have one location but has 2. |
| forstmt.cpp:8:6:8:7 | EnterFunction | Node should have one location but has 2. |
| forstmt.cpp:8:6:8:7 | ExitFunction | Node should have one location but has 2. |
| forstmt.cpp:8:6:8:7 | InitializeNonLocal | Node should have one location but has 2. |
| forstmt.cpp:8:6:8:7 | Phi | Node should have one location but has 2. |
| forstmt.cpp:8:6:8:7 | ReturnVoid | Node should have one location but has 2. |
| forstmt.cpp:8:6:8:7 | UnmodeledDefinition | Node should have one location but has 2. |
| forstmt.cpp:8:6:8:7 | UnmodeledUse | Node should have one location but has 2. |
| forstmt.cpp:8:6:8:7 | Unreached | Node should have one location but has 2. |
| ifelsestmt.c:1:6:1:19 | AliasedDefinition | Node should have one location but has 3. |
| ifelsestmt.c:1:6:1:19 | AliasedUse | Node should have one location but has 3. |
| ifelsestmt.c:1:6:1:19 | Chi | Node should have one location but has 3. |
| ifelsestmt.c:1:6:1:19 | EnterFunction | Node should have one location but has 3. |
| ifelsestmt.c:1:6:1:19 | ExitFunction | Node should have one location but has 3. |
| ifelsestmt.c:1:6:1:19 | InitializeNonLocal | Node should have one location but has 3. |
| ifelsestmt.c:1:6:1:19 | ReturnVoid | Node should have one location but has 3. |
| ifelsestmt.c:1:6:1:19 | UnmodeledDefinition | Node should have one location but has 3. |
| ifelsestmt.c:1:6:1:19 | UnmodeledUse | Node should have one location but has 3. |
| ifelsestmt.c:1:6:1:19 | Unreached | Node should have one location but has 3. |
| ifelsestmt.c:11:6:11:19 | AliasedDefinition | Node should have one location but has 3. |
| ifelsestmt.c:11:6:11:19 | AliasedUse | Node should have one location but has 3. |
| ifelsestmt.c:11:6:11:19 | Chi | Node should have one location but has 3. |
| ifelsestmt.c:11:6:11:19 | EnterFunction | Node should have one location but has 3. |
| ifelsestmt.c:11:6:11:19 | ExitFunction | Node should have one location but has 3. |
| ifelsestmt.c:11:6:11:19 | InitializeNonLocal | Node should have one location but has 3. |
| ifelsestmt.c:11:6:11:19 | ReturnVoid | Node should have one location but has 3. |
| ifelsestmt.c:11:6:11:19 | UnmodeledDefinition | Node should have one location but has 3. |
| ifelsestmt.c:11:6:11:19 | UnmodeledUse | Node should have one location but has 3. |
| ifelsestmt.c:11:6:11:19 | Unreached | Node should have one location but has 3. |
| ifelsestmt.c:19:6:19:18 | AliasedDefinition | Node should have one location but has 4. |
| ifelsestmt.c:19:6:19:18 | AliasedUse | Node should have one location but has 4. |
| ifelsestmt.c:19:6:19:18 | Chi | Node should have one location but has 4. |
| ifelsestmt.c:19:6:19:18 | EnterFunction | Node should have one location but has 4. |
| ifelsestmt.c:19:6:19:18 | ExitFunction | Node should have one location but has 4. |
| ifelsestmt.c:19:6:19:18 | InitializeNonLocal | Node should have one location but has 4. |
| ifelsestmt.c:19:6:19:18 | ReturnVoid | Node should have one location but has 4. |
| ifelsestmt.c:19:6:19:18 | UnmodeledDefinition | Node should have one location but has 4. |
| ifelsestmt.c:19:6:19:18 | UnmodeledUse | Node should have one location but has 4. |
| ifelsestmt.c:19:6:19:18 | Unreached | Node should have one location but has 4. |
| ifelsestmt.c:29:6:29:18 | AliasedDefinition | Node should have one location but has 4. |
| ifelsestmt.c:29:6:29:18 | AliasedUse | Node should have one location but has 4. |
| ifelsestmt.c:29:6:29:18 | Chi | Node should have one location but has 4. |
| ifelsestmt.c:29:6:29:18 | EnterFunction | Node should have one location but has 4. |
| ifelsestmt.c:29:6:29:18 | ExitFunction | Node should have one location but has 4. |
| ifelsestmt.c:29:6:29:18 | InitializeNonLocal | Node should have one location but has 4. |
| ifelsestmt.c:29:6:29:18 | ReturnVoid | Node should have one location but has 4. |
| ifelsestmt.c:29:6:29:18 | UnmodeledDefinition | Node should have one location but has 4. |
| ifelsestmt.c:29:6:29:18 | UnmodeledUse | Node should have one location but has 4. |
| ifelsestmt.c:29:6:29:18 | Unreached | Node should have one location but has 4. |
| ifelsestmt.c:37:6:37:11 | AliasedDefinition | Node should have one location but has 4. |
| ifelsestmt.c:37:6:37:11 | AliasedUse | Node should have one location but has 4. |
| ifelsestmt.c:37:6:37:11 | Chi | Node should have one location but has 4. |
| ifelsestmt.c:37:6:37:11 | EnterFunction | Node should have one location but has 4. |
| ifelsestmt.c:37:6:37:11 | ExitFunction | Node should have one location but has 4. |
| ifelsestmt.c:37:6:37:11 | InitializeNonLocal | Node should have one location but has 4. |
| ifelsestmt.c:37:6:37:11 | ReturnVoid | Node should have one location but has 4. |
| ifelsestmt.c:37:6:37:11 | UnmodeledDefinition | Node should have one location but has 4. |
| ifelsestmt.c:37:6:37:11 | UnmodeledUse | Node should have one location but has 4. |
| ifelsestmt.c:37:17:37:17 | VariableAddress | Node should have one location but has 2. |
| ifelsestmt.c:37:17:37:17 | x | Node should have one location but has 2. |
| ifelsestmt.c:37:17:37:17 | x | Node should have one location but has 2. |
| ifelsestmt.c:37:24:37:24 | VariableAddress | Node should have one location but has 2. |
| ifelsestmt.c:37:24:37:24 | y | Node should have one location but has 2. |
| ifelsestmt.c:37:24:37:24 | y | Node should have one location but has 2. |
| ifstmt.c:1:6:1:19 | AliasedDefinition | Node should have one location but has 3. |
| ifstmt.c:1:6:1:19 | AliasedUse | Node should have one location but has 3. |
| ifstmt.c:1:6:1:19 | Chi | Node should have one location but has 3. |
| ifstmt.c:1:6:1:19 | EnterFunction | Node should have one location but has 3. |
| ifstmt.c:1:6:1:19 | ExitFunction | Node should have one location but has 3. |
| ifstmt.c:1:6:1:19 | InitializeNonLocal | Node should have one location but has 3. |
| ifstmt.c:1:6:1:19 | ReturnVoid | Node should have one location but has 3. |
| ifstmt.c:1:6:1:19 | UnmodeledDefinition | Node should have one location but has 3. |
| ifstmt.c:1:6:1:19 | UnmodeledUse | Node should have one location but has 3. |
| ifstmt.c:1:6:1:19 | Unreached | Node should have one location but has 3. |
| ifstmt.c:8:6:8:19 | AliasedDefinition | Node should have one location but has 3. |
| ifstmt.c:8:6:8:19 | AliasedUse | Node should have one location but has 3. |
| ifstmt.c:8:6:8:19 | Chi | Node should have one location but has 3. |
| ifstmt.c:8:6:8:19 | EnterFunction | Node should have one location but has 3. |
| ifstmt.c:8:6:8:19 | ExitFunction | Node should have one location but has 3. |
| ifstmt.c:8:6:8:19 | InitializeNonLocal | Node should have one location but has 3. |
| ifstmt.c:8:6:8:19 | ReturnVoid | Node should have one location but has 3. |
| ifstmt.c:8:6:8:19 | UnmodeledDefinition | Node should have one location but has 3. |
| ifstmt.c:8:6:8:19 | UnmodeledUse | Node should have one location but has 3. |
| ifstmt.c:8:6:8:19 | Unreached | Node should have one location but has 3. |
| ifstmt.c:14:6:14:18 | AliasedDefinition | Node should have one location but has 4. |
| ifstmt.c:14:6:14:18 | AliasedUse | Node should have one location but has 4. |
| ifstmt.c:14:6:14:18 | Chi | Node should have one location but has 4. |
| ifstmt.c:14:6:14:18 | EnterFunction | Node should have one location but has 4. |
| ifstmt.c:14:6:14:18 | ExitFunction | Node should have one location but has 4. |
| ifstmt.c:14:6:14:18 | InitializeNonLocal | Node should have one location but has 4. |
| ifstmt.c:14:6:14:18 | ReturnVoid | Node should have one location but has 4. |
| ifstmt.c:14:6:14:18 | UnmodeledDefinition | Node should have one location but has 4. |
| ifstmt.c:14:6:14:18 | UnmodeledUse | Node should have one location but has 4. |
| ifstmt.c:14:6:14:18 | Unreached | Node should have one location but has 4. |
| ifstmt.c:21:6:21:18 | AliasedDefinition | Node should have one location but has 4. |
| ifstmt.c:21:6:21:18 | AliasedUse | Node should have one location but has 4. |
| ifstmt.c:21:6:21:18 | Chi | Node should have one location but has 4. |
| ifstmt.c:21:6:21:18 | EnterFunction | Node should have one location but has 4. |
| ifstmt.c:21:6:21:18 | ExitFunction | Node should have one location but has 4. |
| ifstmt.c:21:6:21:18 | InitializeNonLocal | Node should have one location but has 4. |
| ifstmt.c:21:6:21:18 | ReturnVoid | Node should have one location but has 4. |
| ifstmt.c:21:6:21:18 | UnmodeledDefinition | Node should have one location but has 4. |
| ifstmt.c:21:6:21:18 | UnmodeledUse | Node should have one location but has 4. |
| ifstmt.c:21:6:21:18 | Unreached | Node should have one location but has 4. |
| ifstmt.c:27:6:27:11 | AliasedDefinition | Node should have one location but has 4. |
| ifstmt.c:27:6:27:11 | AliasedUse | Node should have one location but has 4. |
| ifstmt.c:27:6:27:11 | Chi | Node should have one location but has 4. |
| ifstmt.c:27:6:27:11 | EnterFunction | Node should have one location but has 4. |
| ifstmt.c:27:6:27:11 | ExitFunction | Node should have one location but has 4. |
| ifstmt.c:27:6:27:11 | InitializeNonLocal | Node should have one location but has 4. |
| ifstmt.c:27:6:27:11 | ReturnVoid | Node should have one location but has 4. |
| ifstmt.c:27:6:27:11 | UnmodeledDefinition | Node should have one location but has 4. |
| ifstmt.c:27:6:27:11 | UnmodeledUse | Node should have one location but has 4. |
| ifstmt.c:27:17:27:17 | VariableAddress | Node should have one location but has 2. |
| ifstmt.c:27:17:27:17 | x | Node should have one location but has 2. |
| ifstmt.c:27:17:27:17 | x | Node should have one location but has 2. |
| ifstmt.c:27:24:27:24 | VariableAddress | Node should have one location but has 2. |
| ifstmt.c:27:24:27:24 | y | Node should have one location but has 2. |
| ifstmt.c:27:24:27:24 | y | Node should have one location but has 2. |
| initializer.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
| initializer.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
| initializer.c:1:6:1:6 | Chi | Node should have one location but has 20. |
| initializer.c:1:6:1:6 | EnterFunction | Node should have one location but has 20. |
| initializer.c:1:6:1:6 | ExitFunction | Node should have one location but has 20. |
| initializer.c:1:6:1:6 | InitializeNonLocal | Node should have one location but has 20. |
| initializer.c:1:6:1:6 | Phi | Node should have one location but has 20. |
| initializer.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
| initializer.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
| initializer.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
| initializer.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
| landexpr.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
| landexpr.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
| landexpr.c:1:6:1:6 | Chi | Node should have one location but has 20. |
| landexpr.c:1:6:1:6 | EnterFunction | Node should have one location but has 20. |
| landexpr.c:1:6:1:6 | ExitFunction | Node should have one location but has 20. |
| landexpr.c:1:6:1:6 | InitializeNonLocal | Node should have one location but has 20. |
| landexpr.c:1:6:1:6 | Phi | Node should have one location but has 20. |
| landexpr.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
| landexpr.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
| landexpr.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
| landexpr.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
| lorexpr.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
| lorexpr.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
| lorexpr.c:1:6:1:6 | Chi | Node should have one location but has 20. |
| lorexpr.c:1:6:1:6 | EnterFunction | Node should have one location but has 20. |
| lorexpr.c:1:6:1:6 | ExitFunction | Node should have one location but has 20. |
| lorexpr.c:1:6:1:6 | InitializeNonLocal | Node should have one location but has 20. |
| lorexpr.c:1:6:1:6 | Phi | Node should have one location but has 20. |
| lorexpr.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
| lorexpr.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
| lorexpr.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
| lorexpr.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
| ltrbinopexpr.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
| ltrbinopexpr.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
| ltrbinopexpr.c:1:6:1:6 | Chi | Node should have one location but has 20. |
| ltrbinopexpr.c:1:6:1:6 | EnterFunction | Node should have one location but has 20. |
| ltrbinopexpr.c:1:6:1:6 | ExitFunction | Node should have one location but has 20. |
| ltrbinopexpr.c:1:6:1:6 | InitializeNonLocal | Node should have one location but has 20. |
| ltrbinopexpr.c:1:6:1:6 | Phi | Node should have one location but has 20. |
| ltrbinopexpr.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
| ltrbinopexpr.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
| ltrbinopexpr.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
| ltrbinopexpr.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
| membercallexpr.cpp:6:6:6:6 | AliasedDefinition | Node should have one location but has 14. |
| membercallexpr.cpp:6:6:6:6 | AliasedUse | Node should have one location but has 14. |
| membercallexpr.cpp:6:6:6:6 | Chi | Node should have one location but has 14. |
| membercallexpr.cpp:6:6:6:6 | EnterFunction | Node should have one location but has 14. |
| membercallexpr.cpp:6:6:6:6 | ExitFunction | Node should have one location but has 14. |
| membercallexpr.cpp:6:6:6:6 | InitializeNonLocal | Node should have one location but has 14. |
| membercallexpr.cpp:6:6:6:6 | Phi | Node should have one location but has 14. |
| membercallexpr.cpp:6:6:6:6 | ReturnVoid | Node should have one location but has 14. |
| membercallexpr.cpp:6:6:6:6 | UnmodeledDefinition | Node should have one location but has 14. |
| membercallexpr.cpp:6:6:6:6 | UnmodeledUse | Node should have one location but has 14. |
| membercallexpr_args.cpp:3:6:3:6 | d | Node should have one location but has 2. |
| membercallexpr_args.cpp:4:14:4:14 | x | Node should have one location but has 2. |
| membercallexpr_args.cpp:4:21:4:21 | y | Node should have one location but has 2. |
| membercallexpr_args.cpp:7:6:7:6 | AliasedDefinition | Node should have one location but has 14. |
| membercallexpr_args.cpp:7:6:7:6 | AliasedUse | Node should have one location but has 14. |
| membercallexpr_args.cpp:7:6:7:6 | Chi | Node should have one location but has 14. |
| membercallexpr_args.cpp:7:6:7:6 | EnterFunction | Node should have one location but has 14. |
| membercallexpr_args.cpp:7:6:7:6 | ExitFunction | Node should have one location but has 14. |
| membercallexpr_args.cpp:7:6:7:6 | InitializeNonLocal | Node should have one location but has 14. |
| membercallexpr_args.cpp:7:6:7:6 | Phi | Node should have one location but has 14. |
| membercallexpr_args.cpp:7:6:7:6 | ReturnVoid | Node should have one location but has 14. |
| membercallexpr_args.cpp:7:6:7:6 | UnmodeledDefinition | Node should have one location but has 14. |
| membercallexpr_args.cpp:7:6:7:6 | UnmodeledUse | Node should have one location but has 14. |
| newexpr.cpp:3:9:3:9 | i | Node should have one location but has 2. |
| newexpr.cpp:3:9:3:9 | x | Node should have one location but has 2. |
| newexpr.cpp:3:16:3:16 | j | Node should have one location but has 2. |
| newexpr.cpp:3:16:3:16 | y | Node should have one location but has 2. |
| newexpr.cpp:6:6:6:6 | AliasedDefinition | Node should have one location but has 14. |
| newexpr.cpp:6:6:6:6 | AliasedUse | Node should have one location but has 14. |
| newexpr.cpp:6:6:6:6 | Chi | Node should have one location but has 14. |
| newexpr.cpp:6:6:6:6 | EnterFunction | Node should have one location but has 14. |
| newexpr.cpp:6:6:6:6 | ExitFunction | Node should have one location but has 14. |
| newexpr.cpp:6:6:6:6 | InitializeNonLocal | Node should have one location but has 14. |
| newexpr.cpp:6:6:6:6 | Phi | Node should have one location but has 14. |
| newexpr.cpp:6:6:6:6 | ReturnVoid | Node should have one location but has 14. |
| newexpr.cpp:6:6:6:6 | UnmodeledDefinition | Node should have one location but has 14. |
| newexpr.cpp:6:6:6:6 | UnmodeledUse | Node should have one location but has 14. |
| no_dynamic_init.cpp:9:5:9:8 | AliasedDefinition | Node should have one location but has 4. |
| no_dynamic_init.cpp:9:5:9:8 | AliasedUse | Node should have one location but has 4. |
| no_dynamic_init.cpp:9:5:9:8 | Chi | Node should have one location but has 4. |
| no_dynamic_init.cpp:9:5:9:8 | EnterFunction | Node should have one location but has 4. |
| no_dynamic_init.cpp:9:5:9:8 | ExitFunction | Node should have one location but has 4. |
| no_dynamic_init.cpp:9:5:9:8 | InitializeNonLocal | Node should have one location but has 4. |
| no_dynamic_init.cpp:9:5:9:8 | Phi | Node should have one location but has 4. |
| no_dynamic_init.cpp:9:5:9:8 | Phi | Node should have one location but has 4. |
| no_dynamic_init.cpp:9:5:9:8 | ReturnValue | Node should have one location but has 4. |
| no_dynamic_init.cpp:9:5:9:8 | UnmodeledDefinition | Node should have one location but has 4. |
| no_dynamic_init.cpp:9:5:9:8 | UnmodeledUse | Node should have one location but has 4. |
| no_dynamic_init.cpp:9:5:9:8 | VariableAddress | Node should have one location but has 4. |
| nodefaultswitchstmt.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
| nodefaultswitchstmt.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
| nodefaultswitchstmt.c:1:6:1:6 | Chi | Node should have one location but has 20. |
| nodefaultswitchstmt.c:1:6:1:6 | EnterFunction | Node should have one location but has 20. |
| nodefaultswitchstmt.c:1:6:1:6 | ExitFunction | Node should have one location but has 20. |
| nodefaultswitchstmt.c:1:6:1:6 | InitializeNonLocal | Node should have one location but has 20. |
| nodefaultswitchstmt.c:1:6:1:6 | Phi | Node should have one location but has 20. |
| nodefaultswitchstmt.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
| nodefaultswitchstmt.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
| nodefaultswitchstmt.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
| nodefaultswitchstmt.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
| nodefaultswitchstmt.c:1:12:1:12 | VariableAddress | Node should have one location but has 4. |
| nodefaultswitchstmt.c:1:12:1:12 | i | Node should have one location but has 4. |
| nodefaultswitchstmt.c:1:12:1:12 | i | Node should have one location but has 4. |
| nodefaultswitchstmt.c:1:12:1:12 | x | Node should have one location but has 4. |
| nodefaultswitchstmt.c:1:12:1:12 | x | Node should have one location but has 4. |
| nonmembercallexpr.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 2. |
| nonmembercallexpr.c:1:6:1:6 | AliasedUse | Node should have one location but has 2. |
| nonmembercallexpr.c:1:6:1:6 | Chi | Node should have one location but has 2. |
| nonmembercallexpr.c:1:6:1:6 | EnterFunction | Node should have one location but has 2. |
| nonmembercallexpr.c:1:6:1:6 | ExitFunction | Node should have one location but has 2. |
| nonmembercallexpr.c:1:6:1:6 | InitializeNonLocal | Node should have one location but has 2. |
| nonmembercallexpr.c:1:6:1:6 | ReturnVoid | Node should have one location but has 2. |
| nonmembercallexpr.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 2. |
| nonmembercallexpr.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 2. |
| nonmembercallexpr.c:3:6:3:6 | AliasedDefinition | Node should have one location but has 20. |
| nonmembercallexpr.c:3:6:3:6 | AliasedUse | Node should have one location but has 20. |
| nonmembercallexpr.c:3:6:3:6 | Chi | Node should have one location but has 20. |
| nonmembercallexpr.c:3:6:3:6 | EnterFunction | Node should have one location but has 20. |
| nonmembercallexpr.c:3:6:3:6 | ExitFunction | Node should have one location but has 20. |
| nonmembercallexpr.c:3:6:3:6 | InitializeNonLocal | Node should have one location but has 20. |
| nonmembercallexpr.c:3:6:3:6 | Phi | Node should have one location but has 20. |
| nonmembercallexpr.c:3:6:3:6 | ReturnVoid | Node should have one location but has 20. |
| nonmembercallexpr.c:3:6:3:6 | UnmodeledDefinition | Node should have one location but has 20. |
| nonmembercallexpr.c:3:6:3:6 | UnmodeledUse | Node should have one location but has 20. |
| nonmembercallexpr.c:3:6:3:6 | Unreached | Node should have one location but has 20. |
| nonmemberfp2callexpr.c:3:6:3:6 | AliasedDefinition | Node should have one location but has 20. |
| nonmemberfp2callexpr.c:3:6:3:6 | AliasedUse | Node should have one location but has 20. |
| nonmemberfp2callexpr.c:3:6:3:6 | Chi | Node should have one location but has 20. |
| nonmemberfp2callexpr.c:3:6:3:6 | EnterFunction | Node should have one location but has 20. |
| nonmemberfp2callexpr.c:3:6:3:6 | ExitFunction | Node should have one location but has 20. |
| nonmemberfp2callexpr.c:3:6:3:6 | InitializeNonLocal | Node should have one location but has 20. |
| nonmemberfp2callexpr.c:3:6:3:6 | Phi | Node should have one location but has 20. |
| nonmemberfp2callexpr.c:3:6:3:6 | ReturnVoid | Node should have one location but has 20. |
| nonmemberfp2callexpr.c:3:6:3:6 | UnmodeledDefinition | Node should have one location but has 20. |
| nonmemberfp2callexpr.c:3:6:3:6 | UnmodeledUse | Node should have one location but has 20. |
| nonmemberfp2callexpr.c:3:6:3:6 | Unreached | Node should have one location but has 20. |
| nonmemberfpcallexpr.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
| nonmemberfpcallexpr.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
| nonmemberfpcallexpr.c:1:6:1:6 | Chi | Node should have one location but has 20. |
| nonmemberfpcallexpr.c:1:6:1:6 | EnterFunction | Node should have one location but has 20. |
| nonmemberfpcallexpr.c:1:6:1:6 | ExitFunction | Node should have one location but has 20. |
| nonmemberfpcallexpr.c:1:6:1:6 | InitializeNonLocal | Node should have one location but has 20. |
| nonmemberfpcallexpr.c:1:6:1:6 | Phi | Node should have one location but has 20. |
| nonmemberfpcallexpr.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
| nonmemberfpcallexpr.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
| nonmemberfpcallexpr.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
| nonmemberfpcallexpr.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
| parameterinitializer.cpp:18:5:18:8 | AliasedDefinition | Node should have one location but has 4. |
| parameterinitializer.cpp:18:5:18:8 | AliasedUse | Node should have one location but has 4. |
| parameterinitializer.cpp:18:5:18:8 | Chi | Node should have one location but has 4. |
| parameterinitializer.cpp:18:5:18:8 | EnterFunction | Node should have one location but has 4. |
| parameterinitializer.cpp:18:5:18:8 | ExitFunction | Node should have one location but has 4. |
| parameterinitializer.cpp:18:5:18:8 | InitializeNonLocal | Node should have one location but has 4. |
| parameterinitializer.cpp:18:5:18:8 | Phi | Node should have one location but has 4. |
| parameterinitializer.cpp:18:5:18:8 | Phi | Node should have one location but has 4. |
| parameterinitializer.cpp:18:5:18:8 | ReturnValue | Node should have one location but has 4. |
| parameterinitializer.cpp:18:5:18:8 | UnmodeledDefinition | Node should have one location but has 4. |
| parameterinitializer.cpp:18:5:18:8 | UnmodeledUse | Node should have one location but has 4. |
| parameterinitializer.cpp:18:5:18:8 | VariableAddress | Node should have one location but has 4. |
| pmcallexpr.cpp:6:6:6:6 | AliasedDefinition | Node should have one location but has 14. |
| pmcallexpr.cpp:6:6:6:6 | AliasedUse | Node should have one location but has 14. |
| pmcallexpr.cpp:6:6:6:6 | Chi | Node should have one location but has 14. |
| pmcallexpr.cpp:6:6:6:6 | EnterFunction | Node should have one location but has 14. |
| pmcallexpr.cpp:6:6:6:6 | ExitFunction | Node should have one location but has 14. |
| pmcallexpr.cpp:6:6:6:6 | InitializeNonLocal | Node should have one location but has 14. |
| pmcallexpr.cpp:6:6:6:6 | Phi | Node should have one location but has 14. |
| pmcallexpr.cpp:6:6:6:6 | ReturnVoid | Node should have one location but has 14. |
| pmcallexpr.cpp:6:6:6:6 | UnmodeledDefinition | Node should have one location but has 14. |
| pmcallexpr.cpp:6:6:6:6 | UnmodeledUse | Node should have one location but has 14. |
| questionexpr.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
| questionexpr.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
| questionexpr.c:1:6:1:6 | Chi | Node should have one location but has 20. |
| questionexpr.c:1:6:1:6 | EnterFunction | Node should have one location but has 20. |
| questionexpr.c:1:6:1:6 | ExitFunction | Node should have one location but has 20. |
| questionexpr.c:1:6:1:6 | InitializeNonLocal | Node should have one location but has 20. |
| questionexpr.c:1:6:1:6 | Phi | Node should have one location but has 20. |
| questionexpr.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
| questionexpr.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
| questionexpr.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
| questionexpr.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
| revsubscriptexpr.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 2. |
| revsubscriptexpr.c:1:6:1:6 | AliasedUse | Node should have one location but has 2. |
| revsubscriptexpr.c:1:6:1:6 | Chi | Node should have one location but has 2. |
| revsubscriptexpr.c:1:6:1:6 | EnterFunction | Node should have one location but has 2. |
| revsubscriptexpr.c:1:6:1:6 | ExitFunction | Node should have one location but has 2. |
| revsubscriptexpr.c:1:6:1:6 | InitializeNonLocal | Node should have one location but has 2. |
| revsubscriptexpr.c:1:6:1:6 | ReturnVoid | Node should have one location but has 2. |
| revsubscriptexpr.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 2. |
| revsubscriptexpr.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 2. |
| staticmembercallexpr.cpp:6:6:6:6 | AliasedDefinition | Node should have one location but has 14. |
| staticmembercallexpr.cpp:6:6:6:6 | AliasedUse | Node should have one location but has 14. |
| staticmembercallexpr.cpp:6:6:6:6 | Chi | Node should have one location but has 14. |
| staticmembercallexpr.cpp:6:6:6:6 | EnterFunction | Node should have one location but has 14. |
| staticmembercallexpr.cpp:6:6:6:6 | ExitFunction | Node should have one location but has 14. |
| staticmembercallexpr.cpp:6:6:6:6 | InitializeNonLocal | Node should have one location but has 14. |
| staticmembercallexpr.cpp:6:6:6:6 | Phi | Node should have one location but has 14. |
| staticmembercallexpr.cpp:6:6:6:6 | ReturnVoid | Node should have one location but has 14. |
| staticmembercallexpr.cpp:6:6:6:6 | UnmodeledDefinition | Node should have one location but has 14. |
| staticmembercallexpr.cpp:6:6:6:6 | UnmodeledUse | Node should have one location but has 14. |
| staticmembercallexpr_args.cpp:3:6:3:6 | d | Node should have one location but has 2. |
| staticmembercallexpr_args.cpp:4:21:4:21 | x | Node should have one location but has 2. |
| staticmembercallexpr_args.cpp:4:28:4:28 | y | Node should have one location but has 2. |
| staticmembercallexpr_args.cpp:7:6:7:6 | AliasedDefinition | Node should have one location but has 14. |
| staticmembercallexpr_args.cpp:7:6:7:6 | AliasedUse | Node should have one location but has 14. |
| staticmembercallexpr_args.cpp:7:6:7:6 | Chi | Node should have one location but has 14. |
| staticmembercallexpr_args.cpp:7:6:7:6 | EnterFunction | Node should have one location but has 14. |
| staticmembercallexpr_args.cpp:7:6:7:6 | ExitFunction | Node should have one location but has 14. |
| staticmembercallexpr_args.cpp:7:6:7:6 | InitializeNonLocal | Node should have one location but has 14. |
| staticmembercallexpr_args.cpp:7:6:7:6 | Phi | Node should have one location but has 14. |
| staticmembercallexpr_args.cpp:7:6:7:6 | ReturnVoid | Node should have one location but has 14. |
| staticmembercallexpr_args.cpp:7:6:7:6 | UnmodeledDefinition | Node should have one location but has 14. |
| staticmembercallexpr_args.cpp:7:6:7:6 | UnmodeledUse | Node should have one location but has 14. |
| stream_it.cpp:16:5:16:8 | AliasedDefinition | Node should have one location but has 4. |
| stream_it.cpp:16:5:16:8 | AliasedUse | Node should have one location but has 4. |
| stream_it.cpp:16:5:16:8 | Chi | Node should have one location but has 4. |
| stream_it.cpp:16:5:16:8 | EnterFunction | Node should have one location but has 4. |
| stream_it.cpp:16:5:16:8 | ExitFunction | Node should have one location but has 4. |
| stream_it.cpp:16:5:16:8 | InitializeNonLocal | Node should have one location but has 4. |
| stream_it.cpp:16:5:16:8 | Phi | Node should have one location but has 4. |
| stream_it.cpp:16:5:16:8 | Phi | Node should have one location but has 4. |
| stream_it.cpp:16:5:16:8 | ReturnValue | Node should have one location but has 4. |
| stream_it.cpp:16:5:16:8 | UnmodeledDefinition | Node should have one location but has 4. |
| stream_it.cpp:16:5:16:8 | UnmodeledUse | Node should have one location but has 4. |
| stream_it.cpp:16:5:16:8 | VariableAddress | Node should have one location but has 4. |
| subscriptexpr.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
| subscriptexpr.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
| subscriptexpr.c:1:6:1:6 | Chi | Node should have one location but has 20. |
| subscriptexpr.c:1:6:1:6 | EnterFunction | Node should have one location but has 20. |
| subscriptexpr.c:1:6:1:6 | ExitFunction | Node should have one location but has 20. |
| subscriptexpr.c:1:6:1:6 | InitializeNonLocal | Node should have one location but has 20. |
| subscriptexpr.c:1:6:1:6 | Phi | Node should have one location but has 20. |
| subscriptexpr.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
| subscriptexpr.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
| subscriptexpr.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
| subscriptexpr.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
| switchstmt.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
| switchstmt.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
| switchstmt.c:1:6:1:6 | Chi | Node should have one location but has 20. |
| switchstmt.c:1:6:1:6 | EnterFunction | Node should have one location but has 20. |
| switchstmt.c:1:6:1:6 | ExitFunction | Node should have one location but has 20. |
| switchstmt.c:1:6:1:6 | InitializeNonLocal | Node should have one location but has 20. |
| switchstmt.c:1:6:1:6 | Phi | Node should have one location but has 20. |
| switchstmt.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
| switchstmt.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
| switchstmt.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
| switchstmt.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
| switchstmt.c:1:12:1:12 | VariableAddress | Node should have one location but has 4. |
| switchstmt.c:1:12:1:12 | i | Node should have one location but has 4. |
| switchstmt.c:1:12:1:12 | i | Node should have one location but has 4. |
| switchstmt.c:1:12:1:12 | x | Node should have one location but has 4. |
| switchstmt.c:1:12:1:12 | x | Node should have one location but has 4. |
| tinyforstmt.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
| tinyforstmt.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
| tinyforstmt.c:1:6:1:6 | Chi | Node should have one location but has 20. |
| tinyforstmt.c:1:6:1:6 | EnterFunction | Node should have one location but has 20. |
| tinyforstmt.c:1:6:1:6 | ExitFunction | Node should have one location but has 20. |
| tinyforstmt.c:1:6:1:6 | InitializeNonLocal | Node should have one location but has 20. |
| tinyforstmt.c:1:6:1:6 | Phi | Node should have one location but has 20. |
| tinyforstmt.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
| tinyforstmt.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
| tinyforstmt.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
| tinyforstmt.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
| unaryopexpr.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
| unaryopexpr.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
| unaryopexpr.c:1:6:1:6 | Chi | Node should have one location but has 20. |
| unaryopexpr.c:1:6:1:6 | EnterFunction | Node should have one location but has 20. |
| unaryopexpr.c:1:6:1:6 | ExitFunction | Node should have one location but has 20. |
| unaryopexpr.c:1:6:1:6 | InitializeNonLocal | Node should have one location but has 20. |
| unaryopexpr.c:1:6:1:6 | Phi | Node should have one location but has 20. |
| unaryopexpr.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
| unaryopexpr.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
| unaryopexpr.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
| unaryopexpr.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
| whilestmt.c:1:6:1:19 | AliasedDefinition | Node should have one location but has 3. |
| whilestmt.c:1:6:1:19 | AliasedUse | Node should have one location but has 3. |
| whilestmt.c:1:6:1:19 | Chi | Node should have one location but has 3. |
| whilestmt.c:1:6:1:19 | EnterFunction | Node should have one location but has 3. |
| whilestmt.c:1:6:1:19 | ExitFunction | Node should have one location but has 3. |
| whilestmt.c:1:6:1:19 | InitializeNonLocal | Node should have one location but has 3. |
| whilestmt.c:1:6:1:19 | ReturnVoid | Node should have one location but has 3. |
| whilestmt.c:1:6:1:19 | UnmodeledDefinition | Node should have one location but has 3. |
| whilestmt.c:1:6:1:19 | UnmodeledUse | Node should have one location but has 3. |
| whilestmt.c:1:6:1:19 | Unreached | Node should have one location but has 3. |
| whilestmt.c:8:6:8:19 | AliasedDefinition | Node should have one location but has 3. |
| whilestmt.c:8:6:8:19 | AliasedUse | Node should have one location but has 3. |
| whilestmt.c:8:6:8:19 | Chi | Node should have one location but has 3. |
| whilestmt.c:8:6:8:19 | EnterFunction | Node should have one location but has 3. |
| whilestmt.c:8:6:8:19 | ExitFunction | Node should have one location but has 3. |
| whilestmt.c:8:6:8:19 | InitializeNonLocal | Node should have one location but has 3. |
| whilestmt.c:8:6:8:19 | ReturnVoid | Node should have one location but has 3. |
| whilestmt.c:8:6:8:19 | UnmodeledDefinition | Node should have one location but has 3. |
| whilestmt.c:8:6:8:19 | UnmodeledUse | Node should have one location but has 3. |
| whilestmt.c:8:6:8:19 | Unreached | Node should have one location but has 3. |
| whilestmt.c:15:6:15:18 | AliasedDefinition | Node should have one location but has 4. |
| whilestmt.c:15:6:15:18 | AliasedUse | Node should have one location but has 4. |
| whilestmt.c:15:6:15:18 | Chi | Node should have one location but has 4. |
| whilestmt.c:15:6:15:18 | EnterFunction | Node should have one location but has 4. |
| whilestmt.c:15:6:15:18 | ExitFunction | Node should have one location but has 4. |
| whilestmt.c:15:6:15:18 | InitializeNonLocal | Node should have one location but has 4. |
| whilestmt.c:15:6:15:18 | ReturnVoid | Node should have one location but has 4. |
| whilestmt.c:15:6:15:18 | UnmodeledDefinition | Node should have one location but has 4. |
| whilestmt.c:15:6:15:18 | UnmodeledUse | Node should have one location but has 4. |
| whilestmt.c:15:6:15:18 | Unreached | Node should have one location but has 4. |
| whilestmt.c:23:6:23:18 | AliasedDefinition | Node should have one location but has 4. |
| whilestmt.c:23:6:23:18 | AliasedUse | Node should have one location but has 4. |
| whilestmt.c:23:6:23:18 | Chi | Node should have one location but has 4. |
| whilestmt.c:23:6:23:18 | EnterFunction | Node should have one location but has 4. |
| whilestmt.c:23:6:23:18 | ExitFunction | Node should have one location but has 4. |
| whilestmt.c:23:6:23:18 | InitializeNonLocal | Node should have one location but has 4. |
| whilestmt.c:23:6:23:18 | ReturnVoid | Node should have one location but has 4. |
| whilestmt.c:23:6:23:18 | UnmodeledDefinition | Node should have one location but has 4. |
| whilestmt.c:23:6:23:18 | UnmodeledUse | Node should have one location but has 4. |
| whilestmt.c:23:6:23:18 | Unreached | Node should have one location but has 4. |
| whilestmt.c:32:6:32:18 | AliasedDefinition | Node should have one location but has 2. |
| whilestmt.c:32:6:32:18 | Chi | Node should have one location but has 2. |
| whilestmt.c:32:6:32:18 | EnterFunction | Node should have one location but has 2. |
| whilestmt.c:32:6:32:18 | InitializeNonLocal | Node should have one location but has 2. |
| whilestmt.c:32:6:32:18 | UnmodeledDefinition | Node should have one location but has 2. |
| whilestmt.c:32:6:32:18 | Unreached | Node should have one location but has 2. |
| whilestmt.c:39:6:39:11 | AliasedDefinition | Node should have one location but has 4. |
| whilestmt.c:39:6:39:11 | AliasedUse | Node should have one location but has 4. |
| whilestmt.c:39:6:39:11 | Chi | Node should have one location but has 4. |
| whilestmt.c:39:6:39:11 | EnterFunction | Node should have one location but has 4. |
| whilestmt.c:39:6:39:11 | ExitFunction | Node should have one location but has 4. |
| whilestmt.c:39:6:39:11 | InitializeNonLocal | Node should have one location but has 4. |
| whilestmt.c:39:6:39:11 | ReturnVoid | Node should have one location but has 4. |
| whilestmt.c:39:6:39:11 | UnmodeledDefinition | Node should have one location but has 4. |
| whilestmt.c:39:6:39:11 | UnmodeledUse | Node should have one location but has 4. |
missingLocation
| Nodes without location: 30 |
uniqueNodeToString
| break_labels.c:2:11:2:11 | i | Node should have one toString but has 2. |
| break_labels.c:2:11:2:11 | i | Node should have one toString but has 2. |
| break_labels.c:2:11:2:11 | x | Node should have one toString but has 2. |
| break_labels.c:2:11:2:11 | x | Node should have one toString but has 2. |
| break_labels.c:4:9:4:9 | i | Node should have one toString but has 2. |
| break_labels.c:4:9:4:9 | x | Node should have one toString but has 2. |
| break_labels.c:6:16:6:16 | i | Node should have one toString but has 2. |
| break_labels.c:6:16:6:16 | x | Node should have one toString but has 2. |
| break_labels.c:7:17:7:17 | i | Node should have one toString but has 2. |
| break_labels.c:7:17:7:17 | x | Node should have one toString but has 2. |
| constructorinitializer.cpp:3:9:3:9 | i | Node should have one toString but has 2. |
| constructorinitializer.cpp:3:9:3:9 | x | Node should have one toString but has 2. |
| constructorinitializer.cpp:3:16:3:16 | j | Node should have one toString but has 2. |
| constructorinitializer.cpp:3:16:3:16 | y | Node should have one toString but has 2. |
| duff.c:2:12:2:12 | i | Node should have one toString but has 2. |
| duff.c:2:12:2:12 | i | Node should have one toString but has 2. |
| duff.c:2:12:2:12 | x | Node should have one toString but has 2. |
| duff.c:2:12:2:12 | x | Node should have one toString but has 2. |
| duff.c:3:14:3:14 | i | Node should have one toString but has 2. |
| duff.c:3:14:3:14 | x | Node should have one toString but has 2. |
| duff.c:4:13:4:13 | i | Node should have one toString but has 2. |
| duff.c:4:13:4:13 | x | Node should have one toString but has 2. |
| ir.cpp:888:6:888:16 | (no string representation) | Node should have one toString but has 0. |
| misc.c:197:6:197:9 | (no string representation) | Node should have one toString but has 0. |
| newexpr.cpp:3:9:3:9 | i | Node should have one toString but has 2. |
| newexpr.cpp:3:9:3:9 | x | Node should have one toString but has 2. |
| newexpr.cpp:3:16:3:16 | j | Node should have one toString but has 2. |
| newexpr.cpp:3:16:3:16 | y | Node should have one toString but has 2. |
| nodefaultswitchstmt.c:1:12:1:12 | i | Node should have one toString but has 2. |
| nodefaultswitchstmt.c:1:12:1:12 | i | Node should have one toString but has 2. |
| nodefaultswitchstmt.c:1:12:1:12 | x | Node should have one toString but has 2. |
| nodefaultswitchstmt.c:1:12:1:12 | x | Node should have one toString but has 2. |
| nodefaultswitchstmt.c:2:14:2:14 | i | Node should have one toString but has 2. |
| nodefaultswitchstmt.c:2:14:2:14 | x | Node should have one toString but has 2. |
| switchstmt.c:1:12:1:12 | i | Node should have one toString but has 2. |
| switchstmt.c:1:12:1:12 | i | Node should have one toString but has 2. |
| switchstmt.c:1:12:1:12 | x | Node should have one toString but has 2. |
| switchstmt.c:1:12:1:12 | x | Node should have one toString but has 2. |
| switchstmt.c:2:14:2:14 | i | Node should have one toString but has 2. |
| switchstmt.c:2:14:2:14 | x | Node should have one toString but has 2. |
missingToString
| Nodes without toString: 2 |
parameterCallable
localFlowIsLocal
compatibleTypesReflexive
unreachableNodeCCtx
localCallNodes
postIsNotPre
postHasUniquePre
uniquePostUpdate
postIsInSameCallable
reverseRead
storeIsPostUpdate
argHasPostUpdate

View File

@@ -0,0 +1 @@
import semmle.code.cpp.ir.dataflow.internal.DataFlowImplConsistency::Consistency

View File

@@ -631,6 +631,9 @@ useNotDominatedByDefinition
| try_catch.cpp:21:13:21:24 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | try_catch.cpp:19:6:19:23 | IR: throw_from_nonstmt | void throw_from_nonstmt(int) |
| vla.c:3:27:3:30 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | vla.c:3:5:3:8 | IR: main | int main(int, char**) |
switchInstructionWithoutDefaultEdge
notMarkedAsConflated
wronglyMarkedAsConflated
invalidOverlap
missingCanonicalLanguageType
multipleCanonicalLanguageTypes
missingIRType

View File

@@ -577,6 +577,9 @@ lostReachability
backEdgeCountMismatch
useNotDominatedByDefinition
switchInstructionWithoutDefaultEdge
notMarkedAsConflated
wronglyMarkedAsConflated
invalidOverlap
missingCanonicalLanguageType
multipleCanonicalLanguageTypes
missingIRType

View File

@@ -52,16 +52,12 @@
| test.cpp:56:13:56:16 | (int)... | test.cpp:56:13:56:16 | (int)... | AST only |
| test.cpp:56:13:56:16 | (int)... | test.cpp:56:31:56:34 | (int)... | AST only |
| test.cpp:56:13:56:16 | (int)... | test.cpp:59:9:59:12 | (int)... | AST only |
| test.cpp:56:13:56:16 | * ... | test.cpp:56:31:56:34 | * ... | AST only |
| test.cpp:56:13:56:16 | * ... | test.cpp:59:9:59:12 | * ... | AST only |
| test.cpp:56:21:56:24 | (int)... | test.cpp:53:10:53:13 | (int)... | AST only |
| test.cpp:56:21:56:24 | (int)... | test.cpp:56:21:56:24 | (int)... | AST only |
| test.cpp:56:30:56:43 | (...) | test.cpp:56:30:56:43 | (...) | AST only |
| test.cpp:56:31:56:34 | (int)... | test.cpp:56:13:56:16 | (int)... | AST only |
| test.cpp:56:31:56:34 | (int)... | test.cpp:56:31:56:34 | (int)... | AST only |
| test.cpp:56:31:56:34 | (int)... | test.cpp:59:9:59:12 | (int)... | AST only |
| test.cpp:56:31:56:34 | * ... | test.cpp:56:13:56:16 | * ... | AST only |
| test.cpp:56:31:56:34 | * ... | test.cpp:59:9:59:12 | * ... | AST only |
| test.cpp:56:39:56:42 | (int)... | test.cpp:44:9:44:9 | 0 | AST only |
| test.cpp:56:39:56:42 | (int)... | test.cpp:51:25:51:25 | 0 | AST only |
| test.cpp:56:39:56:42 | (int)... | test.cpp:53:18:53:21 | (int)... | AST only |
@@ -72,8 +68,6 @@
| test.cpp:59:9:59:12 | (int)... | test.cpp:56:13:56:16 | (int)... | AST only |
| test.cpp:59:9:59:12 | (int)... | test.cpp:56:31:56:34 | (int)... | AST only |
| test.cpp:59:9:59:12 | (int)... | test.cpp:59:9:59:12 | (int)... | AST only |
| test.cpp:59:9:59:12 | * ... | test.cpp:56:13:56:16 | * ... | AST only |
| test.cpp:59:9:59:12 | * ... | test.cpp:56:31:56:34 | * ... | AST only |
| test.cpp:59:17:59:20 | (int)... | test.cpp:44:9:44:9 | 0 | AST only |
| test.cpp:59:17:59:20 | (int)... | test.cpp:51:25:51:25 | 0 | AST only |
| test.cpp:59:17:59:20 | (int)... | test.cpp:53:18:53:21 | (int)... | AST only |
@@ -125,9 +119,7 @@
| test.cpp:128:7:128:7 | x | test.cpp:126:15:126:15 | x | AST only |
| test.cpp:128:11:128:11 | n | test.cpp:129:15:129:15 | x | IR only |
| test.cpp:129:15:129:15 | x | test.cpp:128:11:128:11 | n | IR only |
| test.cpp:136:21:136:21 | x | test.cpp:137:21:137:21 | x | AST only |
| test.cpp:136:21:136:21 | x | test.cpp:139:13:139:13 | x | AST only |
| test.cpp:137:21:137:21 | x | test.cpp:136:21:136:21 | x | AST only |
| test.cpp:137:21:137:21 | x | test.cpp:139:13:139:13 | x | AST only |
| test.cpp:139:3:139:24 | ... = ... | test.cpp:139:3:139:24 | ... = ... | AST only |
| test.cpp:139:13:139:13 | x | test.cpp:136:21:136:21 | x | AST only |
@@ -137,6 +129,4 @@
| test.cpp:147:3:147:18 | ... = ... | test.cpp:147:3:147:18 | ... = ... | AST only |
| test.cpp:147:7:147:7 | y | test.cpp:145:15:145:15 | y | AST only |
| test.cpp:149:15:149:15 | x | test.cpp:144:15:144:15 | x | IR only |
| test.cpp:153:21:153:21 | x | test.cpp:154:21:154:21 | x | AST only |
| test.cpp:154:21:154:21 | x | test.cpp:153:21:153:21 | x | AST only |
| test.cpp:156:3:156:17 | ... = ... | test.cpp:156:3:156:17 | ... = ... | AST only |

View File

@@ -355,7 +355,7 @@ test.cpp:
# 46| m46_4(int) = Store : &:r46_3, r46_2
# 46| valnum = m43_10, m45_10, m46_4, r43_8, r45_8, r46_2
# 47| v47_1(void) = NoOp :
# 39| v39_14(void) = ReturnIndirection[p2] : &:r39_12, ~m44_6
# 39| v39_14(void) = ReturnIndirection[p2] : &:r39_12, m44_6
# 39| r39_15(glval<int>) = VariableAddress[#return] :
# 39| valnum = unique
# 39| v39_16(void) = ReturnValue : &:r39_15
@@ -440,9 +440,9 @@ test.cpp:
# 56| r56_3(char *) = Load : &:r56_2, m56_1
# 56| valnum = m56_1, r56_13, r56_20, r56_3, r59_2
# 56| r56_4(char) = Load : &:r56_3, ~m49_4
# 56| valnum = unique
# 56| valnum = r56_14, r56_4, r59_3
# 56| r56_5(int) = Convert : r56_4
# 56| valnum = unique
# 56| valnum = r56_15, r56_5, r59_4
# 56| r56_6(glval<char *>) = VariableAddress[str] :
# 56| valnum = r49_6, r53_2, r56_6
# 56| r56_7(char *) = Load : &:r56_6, m49_7
@@ -463,9 +463,9 @@ test.cpp:
# 56| r56_13(char *) = Load : &:r56_12, m56_1
# 56| valnum = m56_1, r56_13, r56_20, r56_3, r59_2
# 56| r56_14(char) = Load : &:r56_13, ~m49_4
# 56| valnum = unique
# 56| valnum = r56_14, r56_4, r59_3
# 56| r56_15(int) = Convert : r56_14
# 56| valnum = unique
# 56| valnum = r56_15, r56_5, r59_4
# 56| r56_16(int) = Constant[0] :
# 56| valnum = r53_6, r56_16, r59_5
# 56| r56_17(bool) = CompareNE : r56_15, r56_16
@@ -493,9 +493,9 @@ test.cpp:
# 59| r59_2(char *) = Load : &:r59_1, m56_1
# 59| valnum = m56_1, r56_13, r56_20, r56_3, r59_2
# 59| r59_3(char) = Load : &:r59_2, ~m49_4
# 59| valnum = unique
# 59| valnum = r56_14, r56_4, r59_3
# 59| r59_4(int) = Convert : r59_3
# 59| valnum = unique
# 59| valnum = r56_15, r56_5, r59_4
# 59| r59_5(int) = Constant[0] :
# 59| valnum = r53_6, r56_16, r59_5
# 59| r59_6(bool) = CompareEQ : r59_4, r59_5
@@ -925,7 +925,7 @@ test.cpp:
# 129| m129_6(int) = Store : &:r129_1, r129_5
# 129| valnum = m124_11, m128_6, m129_6, r128_2, r129_5
# 130| v130_1(void) = NoOp :
# 124| v124_12(void) = ReturnIndirection[pa] : &:r124_8, ~m128_7
# 124| v124_12(void) = ReturnIndirection[pa] : &:r124_8, m128_7
# 124| v124_13(void) = ReturnVoid :
# 124| v124_14(void) = UnmodeledUse : mu*
# 124| v124_15(void) = AliasedUse : m124_3
@@ -951,9 +951,9 @@ test.cpp:
# 136| r136_4(glval<int>) = FieldAddress[x] : r136_3
# 136| valnum = r136_4, r137_4, r139_5
# 136| r136_5(int) = Load : &:r136_4, ~m135_4
# 136| valnum = m136_6, r136_5
# 136| valnum = m136_6, m137_6, r136_5, r137_5
# 136| m136_6(int) = Store : &:r136_1, r136_5
# 136| valnum = m136_6, r136_5
# 136| valnum = m136_6, m137_6, r136_5, r137_5
# 137| r137_1(glval<int>) = VariableAddress[c] :
# 137| valnum = unique
# 137| r137_2(glval<A *>) = VariableAddress[global_a] :
@@ -963,9 +963,9 @@ test.cpp:
# 137| r137_4(glval<int>) = FieldAddress[x] : r137_3
# 137| valnum = r136_4, r137_4, r139_5
# 137| r137_5(int) = Load : &:r137_4, ~m135_4
# 137| valnum = m137_6, r137_5
# 137| valnum = m136_6, m137_6, r136_5, r137_5
# 137| m137_6(int) = Store : &:r137_1, r137_5
# 137| valnum = m137_6, r137_5
# 137| valnum = m136_6, m137_6, r136_5, r137_5
# 139| r139_1(glval<int>) = VariableAddress[global_n] :
# 139| valnum = unique
# 139| r139_2(int) = Load : &:r139_1, ~m135_3
@@ -1068,7 +1068,7 @@ test.cpp:
# 149| m149_6(int) = Store : &:r149_1, r149_5
# 149| valnum = m144_6, m149_6, r144_5, r149_5
# 150| v150_1(void) = NoOp :
# 143| v143_10(void) = ReturnIndirection[pa] : &:r143_8, ~m147_7
# 143| v143_10(void) = ReturnIndirection[pa] : &:r143_8, m147_7
# 143| v143_11(void) = ReturnVoid :
# 143| v143_12(void) = UnmodeledUse : mu*
# 143| v143_13(void) = AliasedUse : m143_3
@@ -1098,9 +1098,9 @@ test.cpp:
# 153| r153_4(glval<int>) = FieldAddress[x] : r153_3
# 153| valnum = r153_4, r154_4
# 153| r153_5(int) = Load : &:r153_4, ~m152_4
# 153| valnum = m153_6, r153_5
# 153| valnum = m153_6, m154_6, r153_5, r154_5
# 153| m153_6(int) = Store : &:r153_1, r153_5
# 153| valnum = m153_6, r153_5
# 153| valnum = m153_6, m154_6, r153_5, r154_5
# 154| r154_1(glval<int>) = VariableAddress[c] :
# 154| valnum = unique
# 154| r154_2(glval<A *>) = VariableAddress[global_a] :
@@ -1110,9 +1110,9 @@ test.cpp:
# 154| r154_4(glval<int>) = FieldAddress[x] : r154_3
# 154| valnum = r153_4, r154_4
# 154| r154_5(int) = Load : &:r154_4, ~m152_4
# 154| valnum = m154_6, r154_5
# 154| valnum = m153_6, m154_6, r153_5, r154_5
# 154| m154_6(int) = Store : &:r154_1, r154_5
# 154| valnum = m154_6, r154_5
# 154| valnum = m153_6, m154_6, r153_5, r154_5
# 156| r156_1(glval<int>) = VariableAddress[n] :
# 156| valnum = r152_6, r156_1
# 156| r156_2(int) = Load : &:r156_1, m152_7

View File

@@ -12,5 +12,7 @@
| test.cpp:46:2:46:9 | call to strcpy_s | Potentially unsafe call to strcpy_s; second argument should be size of destination. |
| test.cpp:47:2:47:9 | call to strcpy_s | Potentially unsafe call to strcpy_s; second argument should be size of destination. |
| test.cpp:60:3:60:9 | call to strncpy | Potentially unsafe call to strncpy; third argument should be size of destination. |
| test.cpp:63:3:63:9 | call to strncpy | Potentially unsafe call to strncpy; third argument should be size of destination. |
| test.cpp:68:2:68:8 | call to strncpy | Potentially unsafe call to strncpy; third argument should be size of destination. |
| test.cpp:79:3:79:9 | call to strncpy | Potentially unsafe call to strncpy; third argument should be size of destination. |
| test.cpp:82:3:82:9 | call to strncpy | Potentially unsafe call to strncpy; third argument should be size of destination. |