File tree Expand file tree Collapse file tree 3 files changed +15
-9
lines changed
src/semmle/code/cpp/ir/dataflow/internal
test/library-tests/dataflow/dataflow-tests Expand file tree Collapse file tree 3 files changed +15
-9
lines changed Original file line number Diff line number Diff line change @@ -59,10 +59,12 @@ class Node extends TIRDataFlowNode {
5959 Parameter asParameter ( ) { result = instr .( InitializeParameterInstruction ) .getParameter ( ) }
6060
6161 /**
62+ * DEPRECATED: See UninitializedNode.
63+ *
6264 * Gets the uninitialized local variable corresponding to this node, if
6365 * any.
6466 */
65- LocalVariable asUninitialized ( ) { result = instr . ( UninitializedInstruction ) . getLocalVariable ( ) }
67+ LocalVariable asUninitialized ( ) { none ( ) }
6668
6769 /**
6870 * Gets an upper bound on the type of this node.
@@ -140,15 +142,19 @@ private class ThisParameterNode extends Node {
140142}
141143
142144/**
145+ * DEPRECATED: Data flow was never an accurate way to determine what
146+ * expressions might be uninitialized. It errs on the side of saying that
147+ * everything is uninitialized, and this is even worse in the IR because the IR
148+ * doesn't use syntactic hints to rule out variables that are definitely
149+ * initialized.
150+ *
143151 * The value of an uninitialized local variable, viewed as a node in a data
144152 * flow graph.
145153 */
146- class UninitializedNode extends Node {
147- override UninitializedInstruction instr ;
148-
149- LocalVariable getLocalVariable ( ) { result = instr .getLocalVariable ( ) }
154+ deprecated class UninitializedNode extends Node {
155+ UninitializedNode ( ) { none ( ) }
150156
151- override string toString ( ) { result = this . getLocalVariable ( ) . toString ( ) }
157+ LocalVariable getLocalVariable ( ) { none ( ) }
152158}
153159
154160/**
Original file line number Diff line number Diff line change 2929| ref.cpp:109:15:109:20 | ref.cpp:132:13:132:15 | AST only |
3030| ref.cpp:122:23:122:28 | ref.cpp:123:13:123:15 | AST only |
3131| ref.cpp:125:19:125:24 | ref.cpp:126:13:126:15 | AST only |
32+ | test.cpp:75:7:75:8 | test.cpp:76:8:76:9 | AST only |
33+ | test.cpp:83:7:83:8 | test.cpp:84:8:84:18 | AST only |
34+ | test.cpp:83:7:83:8 | test.cpp:86:8:86:9 | AST only |
3235| test.cpp:89:28:89:34 | test.cpp:92:8:92:14 | IR only |
3336| test.cpp:100:13:100:18 | test.cpp:103:10:103:12 | AST only |
3437| test.cpp:109:9:109:14 | test.cpp:110:10:110:12 | IR only |
Original file line number Diff line number Diff line change 3131| test.cpp:31:8:31:8 | c | test.cpp:36:13:36:18 | call to source |
3232| test.cpp:58:10:58:10 | t | test.cpp:50:14:50:19 | call to source |
3333| test.cpp:71:8:71:9 | x4 | test.cpp:66:30:66:36 | source1 |
34- | test.cpp:76:8:76:9 | u1 | test.cpp:75:7:75:8 | u1 |
35- | test.cpp:84:8:84:18 | ... ? ... : ... | test.cpp:83:7:83:8 | u2 |
36- | test.cpp:86:8:86:9 | i1 | test.cpp:83:7:83:8 | u2 |
3734| test.cpp:90:8:90:14 | source1 | test.cpp:89:28:89:34 | source1 |
3835| test.cpp:92:8:92:14 | source1 | test.cpp:89:28:89:34 | source1 |
3936| test.cpp:110:10:110:12 | (reference dereference) | test.cpp:109:9:109:14 | call to source |
You can’t perform that action at this time.
0 commit comments