mirror of
https://github.com/github/codeql.git
synced 2026-05-02 04:05:14 +02:00
Merge pull request #2686 from jbj/ir-crement-load
C++: Move the LoadInstruction from `++` to `e` in `e++`.
This commit is contained in:
16
cpp/ql/test/library-tests/dataflow/crement/crements.cpp
Normal file
16
cpp/ql/test/library-tests/dataflow/crement/crements.cpp
Normal file
@@ -0,0 +1,16 @@
|
||||
void test_crement() {
|
||||
int x1 = 0;
|
||||
++x1;
|
||||
|
||||
int x2 = 0;
|
||||
x2++;
|
||||
|
||||
int x3 = 0;
|
||||
x3 -= 1; // flow
|
||||
|
||||
int x4 = 0;
|
||||
x4 |= 1; // flow
|
||||
|
||||
int x5 = 0;
|
||||
x5 = x5 - 1; // flow (to RHS)
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
| crements.cpp:3:5:3:6 | x1 |
|
||||
| crements.cpp:6:3:6:4 | x2 |
|
||||
| crements.cpp:9:3:9:4 | x3 |
|
||||
| crements.cpp:12:3:12:4 | x4 |
|
||||
| crements.cpp:15:8:15:9 | x5 |
|
||||
14
cpp/ql/test/library-tests/dataflow/crement/from0.ql
Normal file
14
cpp/ql/test/library-tests/dataflow/crement/from0.ql
Normal file
@@ -0,0 +1,14 @@
|
||||
import cpp
|
||||
import semmle.code.cpp.ir.dataflow.DataFlow
|
||||
|
||||
class Cfg extends DataFlow::Configuration {
|
||||
Cfg() { this = "from0::Cfg" }
|
||||
|
||||
override predicate isSource(DataFlow::Node source) { source.asExpr().getValue() = "0" }
|
||||
|
||||
override predicate isSink(DataFlow::Node sink) { sink.asExpr() instanceof VariableAccess }
|
||||
}
|
||||
|
||||
from Cfg cfg, Expr sink
|
||||
where cfg.hasFlowToExpr(sink)
|
||||
select sink
|
||||
@@ -520,15 +520,17 @@ ir.cpp:
|
||||
# 103| r103_3(int) = Constant[1] :
|
||||
# 103| r103_4(int) = Add : r103_2, r103_3
|
||||
# 103| mu103_5(int) = Store : &:r103_1, r103_4
|
||||
# 103| r103_6(glval<int>) = VariableAddress[y] :
|
||||
# 103| mu103_7(int) = Store : &:r103_6, r103_2
|
||||
# 103| r103_6(int) = CopyValue : r103_2
|
||||
# 103| r103_7(glval<int>) = VariableAddress[y] :
|
||||
# 103| mu103_8(int) = Store : &:r103_7, r103_6
|
||||
# 104| r104_1(glval<int>) = VariableAddress[x] :
|
||||
# 104| r104_2(int) = Load : &:r104_1, ~mu98_4
|
||||
# 104| r104_3(int) = Constant[1] :
|
||||
# 104| r104_4(int) = Sub : r104_2, r104_3
|
||||
# 104| mu104_5(int) = Store : &:r104_1, r104_4
|
||||
# 104| r104_6(glval<int>) = VariableAddress[y] :
|
||||
# 104| mu104_7(int) = Store : &:r104_6, r104_2
|
||||
# 104| r104_6(int) = CopyValue : r104_2
|
||||
# 104| r104_7(glval<int>) = VariableAddress[y] :
|
||||
# 104| mu104_8(int) = Store : &:r104_7, r104_6
|
||||
# 105| v105_1(void) = NoOp :
|
||||
# 98| v98_7(void) = ReturnVoid :
|
||||
# 98| v98_8(void) = UnmodeledUse : mu*
|
||||
@@ -742,15 +744,17 @@ ir.cpp:
|
||||
# 149| r149_3(float) = Constant[1.0] :
|
||||
# 149| r149_4(float) = Add : r149_2, r149_3
|
||||
# 149| mu149_5(float) = Store : &:r149_1, r149_4
|
||||
# 149| r149_6(glval<float>) = VariableAddress[y] :
|
||||
# 149| mu149_7(float) = Store : &:r149_6, r149_2
|
||||
# 149| r149_6(float) = CopyValue : r149_2
|
||||
# 149| r149_7(glval<float>) = VariableAddress[y] :
|
||||
# 149| mu149_8(float) = Store : &:r149_7, r149_6
|
||||
# 150| r150_1(glval<float>) = VariableAddress[x] :
|
||||
# 150| r150_2(float) = Load : &:r150_1, ~mu144_4
|
||||
# 150| r150_3(float) = Constant[1.0] :
|
||||
# 150| r150_4(float) = Sub : r150_2, r150_3
|
||||
# 150| mu150_5(float) = Store : &:r150_1, r150_4
|
||||
# 150| r150_6(glval<float>) = VariableAddress[y] :
|
||||
# 150| mu150_7(float) = Store : &:r150_6, r150_2
|
||||
# 150| r150_6(float) = CopyValue : r150_2
|
||||
# 150| r150_7(glval<float>) = VariableAddress[y] :
|
||||
# 150| mu150_8(float) = Store : &:r150_7, r150_6
|
||||
# 151| v151_1(void) = NoOp :
|
||||
# 144| v144_7(void) = ReturnVoid :
|
||||
# 144| v144_8(void) = UnmodeledUse : mu*
|
||||
@@ -1057,15 +1061,17 @@ ir.cpp:
|
||||
# 209| r209_3(int) = Constant[1] :
|
||||
# 209| r209_4(int *) = PointerAdd[4] : r209_2, r209_3
|
||||
# 209| mu209_5(int *) = Store : &:r209_1, r209_4
|
||||
# 209| r209_6(glval<int *>) = VariableAddress[q] :
|
||||
# 209| mu209_7(int *) = Store : &:r209_6, r209_2
|
||||
# 209| r209_6(int *) = CopyValue : r209_2
|
||||
# 209| r209_7(glval<int *>) = VariableAddress[q] :
|
||||
# 209| mu209_8(int *) = Store : &:r209_7, r209_6
|
||||
# 210| r210_1(glval<int *>) = VariableAddress[p] :
|
||||
# 210| r210_2(int *) = Load : &:r210_1, ~mu204_4
|
||||
# 210| r210_3(int) = Constant[1] :
|
||||
# 210| r210_4(int *) = PointerSub[4] : r210_2, r210_3
|
||||
# 210| mu210_5(int *) = Store : &:r210_1, r210_4
|
||||
# 210| r210_6(glval<int *>) = VariableAddress[q] :
|
||||
# 210| mu210_7(int *) = Store : &:r210_6, r210_2
|
||||
# 210| r210_6(int *) = CopyValue : r210_2
|
||||
# 210| r210_7(glval<int *>) = VariableAddress[q] :
|
||||
# 210| mu210_8(int *) = Store : &:r210_7, r210_6
|
||||
# 211| v211_1(void) = NoOp :
|
||||
# 204| v204_9(void) = ReturnIndirection : &:r204_7, ~mu204_4
|
||||
# 204| v204_10(void) = ReturnVoid :
|
||||
|
||||
@@ -225,21 +225,38 @@ ssa.cpp:
|
||||
# 68| m68_9(char *) = InitializeParameter[p] : &:r68_8
|
||||
# 68| r68_10(char *) = Load : &:r68_8, m68_9
|
||||
# 68| m68_11(unknown) = InitializeIndirection[p] : &:r68_10
|
||||
#-----| Goto -> Block 3
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 70| Block 1
|
||||
# 69| Block 1
|
||||
# 69| m69_1(char *) = Phi : from 0:m68_9, from 2:m70_6
|
||||
# 69| m69_2(int) = Phi : from 0:m68_7, from 2:m69_8
|
||||
# 69| m69_3(unknown) = Phi : from 0:~m68_4, from 2:~m70_10
|
||||
# 69| r69_4(glval<int>) = VariableAddress[n] :
|
||||
# 69| r69_5(int) = Load : &:r69_4, m69_2
|
||||
# 69| r69_6(int) = Constant[1] :
|
||||
# 69| r69_7(int) = Sub : r69_5, r69_6
|
||||
# 69| m69_8(int) = Store : &:r69_4, r69_7
|
||||
# 69| r69_9(int) = CopyValue : r69_5
|
||||
# 69| r69_10(int) = Constant[0] :
|
||||
# 69| r69_11(bool) = CompareGT : r69_9, r69_10
|
||||
# 69| v69_12(void) = ConditionalBranch : r69_11
|
||||
#-----| False -> Block 3
|
||||
#-----| True -> Block 2
|
||||
|
||||
# 70| Block 2
|
||||
# 70| r70_1(char) = Constant[0] :
|
||||
# 70| r70_2(glval<char *>) = VariableAddress[p] :
|
||||
# 70| r70_3(char *) = Load : &:r70_2, m69_1
|
||||
# 70| r70_4(int) = Constant[1] :
|
||||
# 70| r70_5(char *) = PointerAdd[1] : r70_3, r70_4
|
||||
# 70| m70_6(char *) = Store : &:r70_2, r70_5
|
||||
# 70| r70_7(glval<char>) = CopyValue : r70_3
|
||||
# 70| m70_8(char) = Store : &:r70_7, r70_1
|
||||
# 70| m70_9(unknown) = Chi : total:m69_3, partial:m70_8
|
||||
#-----| Goto (back edge) -> Block 3
|
||||
# 70| r70_7(char *) = CopyValue : r70_3
|
||||
# 70| r70_8(glval<char>) = CopyValue : r70_7
|
||||
# 70| m70_9(char) = Store : &:r70_8, r70_1
|
||||
# 70| m70_10(unknown) = Chi : total:m69_3, partial:m70_9
|
||||
#-----| Goto (back edge) -> Block 1
|
||||
|
||||
# 71| Block 2
|
||||
# 71| Block 3
|
||||
# 71| v71_1(void) = NoOp :
|
||||
# 68| v68_12(void) = ReturnIndirection : &:r68_10, m68_11
|
||||
# 68| v68_13(void) = ReturnVoid :
|
||||
@@ -247,21 +264,6 @@ ssa.cpp:
|
||||
# 68| v68_15(void) = AliasedUse : ~m69_3
|
||||
# 68| v68_16(void) = ExitFunction :
|
||||
|
||||
# 69| Block 3
|
||||
# 69| m69_1(char *) = Phi : from 0:m68_9, from 1:m70_6
|
||||
# 69| m69_2(int) = Phi : from 0:m68_7, from 1:m69_8
|
||||
# 69| m69_3(unknown) = Phi : from 0:~m68_4, from 1:~m70_9
|
||||
# 69| r69_4(glval<int>) = VariableAddress[n] :
|
||||
# 69| r69_5(int) = Load : &:r69_4, m69_2
|
||||
# 69| r69_6(int) = Constant[1] :
|
||||
# 69| r69_7(int) = Sub : r69_5, r69_6
|
||||
# 69| m69_8(int) = Store : &:r69_4, r69_7
|
||||
# 69| r69_9(int) = Constant[0] :
|
||||
# 69| r69_10(bool) = CompareGT : r69_5, r69_9
|
||||
# 69| v69_11(void) = ConditionalBranch : r69_10
|
||||
#-----| False -> Block 2
|
||||
#-----| True -> Block 1
|
||||
|
||||
# 75| void ScalarPhi(bool)
|
||||
# 75| Block 0
|
||||
# 75| v75_1(void) = EnterFunction :
|
||||
|
||||
@@ -225,21 +225,38 @@ ssa.cpp:
|
||||
# 68| m68_9(char *) = InitializeParameter[p] : &:r68_8
|
||||
# 68| r68_10(char *) = Load : &:r68_8, m68_9
|
||||
# 68| m68_11(unknown) = InitializeIndirection[p] : &:r68_10
|
||||
#-----| Goto -> Block 3
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 70| Block 1
|
||||
# 69| Block 1
|
||||
# 69| m69_1(char *) = Phi : from 0:m68_9, from 2:m70_6
|
||||
# 69| m69_2(int) = Phi : from 0:m68_7, from 2:m69_8
|
||||
# 69| m69_3(unknown) = Phi : from 0:~m68_4, from 2:~m70_10
|
||||
# 69| r69_4(glval<int>) = VariableAddress[n] :
|
||||
# 69| r69_5(int) = Load : &:r69_4, m69_2
|
||||
# 69| r69_6(int) = Constant[1] :
|
||||
# 69| r69_7(int) = Sub : r69_5, r69_6
|
||||
# 69| m69_8(int) = Store : &:r69_4, r69_7
|
||||
# 69| r69_9(int) = CopyValue : r69_5
|
||||
# 69| r69_10(int) = Constant[0] :
|
||||
# 69| r69_11(bool) = CompareGT : r69_9, r69_10
|
||||
# 69| v69_12(void) = ConditionalBranch : r69_11
|
||||
#-----| False -> Block 3
|
||||
#-----| True -> Block 2
|
||||
|
||||
# 70| Block 2
|
||||
# 70| r70_1(char) = Constant[0] :
|
||||
# 70| r70_2(glval<char *>) = VariableAddress[p] :
|
||||
# 70| r70_3(char *) = Load : &:r70_2, m69_1
|
||||
# 70| r70_4(int) = Constant[1] :
|
||||
# 70| r70_5(char *) = PointerAdd[1] : r70_3, r70_4
|
||||
# 70| m70_6(char *) = Store : &:r70_2, r70_5
|
||||
# 70| r70_7(glval<char>) = CopyValue : r70_3
|
||||
# 70| m70_8(char) = Store : &:r70_7, r70_1
|
||||
# 70| m70_9(unknown) = Chi : total:m69_3, partial:m70_8
|
||||
#-----| Goto (back edge) -> Block 3
|
||||
# 70| r70_7(char *) = CopyValue : r70_3
|
||||
# 70| r70_8(glval<char>) = CopyValue : r70_7
|
||||
# 70| m70_9(char) = Store : &:r70_8, r70_1
|
||||
# 70| m70_10(unknown) = Chi : total:m69_3, partial:m70_9
|
||||
#-----| Goto (back edge) -> Block 1
|
||||
|
||||
# 71| Block 2
|
||||
# 71| Block 3
|
||||
# 71| v71_1(void) = NoOp :
|
||||
# 68| v68_12(void) = ReturnIndirection : &:r68_10, m68_11
|
||||
# 68| v68_13(void) = ReturnVoid :
|
||||
@@ -247,21 +264,6 @@ ssa.cpp:
|
||||
# 68| v68_15(void) = AliasedUse : ~m69_3
|
||||
# 68| v68_16(void) = ExitFunction :
|
||||
|
||||
# 69| Block 3
|
||||
# 69| m69_1(char *) = Phi : from 0:m68_9, from 1:m70_6
|
||||
# 69| m69_2(int) = Phi : from 0:m68_7, from 1:m69_8
|
||||
# 69| m69_3(unknown) = Phi : from 0:~m68_4, from 1:~m70_9
|
||||
# 69| r69_4(glval<int>) = VariableAddress[n] :
|
||||
# 69| r69_5(int) = Load : &:r69_4, m69_2
|
||||
# 69| r69_6(int) = Constant[1] :
|
||||
# 69| r69_7(int) = Sub : r69_5, r69_6
|
||||
# 69| m69_8(int) = Store : &:r69_4, r69_7
|
||||
# 69| r69_9(int) = Constant[0] :
|
||||
# 69| r69_10(bool) = CompareGT : r69_5, r69_9
|
||||
# 69| v69_11(void) = ConditionalBranch : r69_10
|
||||
#-----| False -> Block 2
|
||||
#-----| True -> Block 1
|
||||
|
||||
# 75| void ScalarPhi(bool)
|
||||
# 75| Block 0
|
||||
# 75| v75_1(void) = EnterFunction :
|
||||
|
||||
@@ -219,20 +219,36 @@ ssa.cpp:
|
||||
# 68| m68_8(char *) = InitializeParameter[p] : &:r68_7
|
||||
# 68| r68_9(char *) = Load : &:r68_7, m68_8
|
||||
# 68| mu68_10(unknown) = InitializeIndirection[p] : &:r68_9
|
||||
#-----| Goto -> Block 3
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 70| Block 1
|
||||
# 69| Block 1
|
||||
# 69| m69_1(char *) = Phi : from 0:m68_8, from 2:m70_6
|
||||
# 69| m69_2(int) = Phi : from 0:m68_6, from 2:m69_7
|
||||
# 69| r69_3(glval<int>) = VariableAddress[n] :
|
||||
# 69| r69_4(int) = Load : &:r69_3, m69_2
|
||||
# 69| r69_5(int) = Constant[1] :
|
||||
# 69| r69_6(int) = Sub : r69_4, r69_5
|
||||
# 69| m69_7(int) = Store : &:r69_3, r69_6
|
||||
# 69| r69_8(int) = CopyValue : r69_4
|
||||
# 69| r69_9(int) = Constant[0] :
|
||||
# 69| r69_10(bool) = CompareGT : r69_8, r69_9
|
||||
# 69| v69_11(void) = ConditionalBranch : r69_10
|
||||
#-----| False -> Block 3
|
||||
#-----| True -> Block 2
|
||||
|
||||
# 70| Block 2
|
||||
# 70| r70_1(char) = Constant[0] :
|
||||
# 70| r70_2(glval<char *>) = VariableAddress[p] :
|
||||
# 70| r70_3(char *) = Load : &:r70_2, m69_1
|
||||
# 70| r70_4(int) = Constant[1] :
|
||||
# 70| r70_5(char *) = PointerAdd[1] : r70_3, r70_4
|
||||
# 70| m70_6(char *) = Store : &:r70_2, r70_5
|
||||
# 70| r70_7(glval<char>) = CopyValue : r70_3
|
||||
# 70| mu70_8(char) = Store : &:r70_7, r70_1
|
||||
#-----| Goto (back edge) -> Block 3
|
||||
# 70| r70_7(char *) = CopyValue : r70_3
|
||||
# 70| r70_8(glval<char>) = CopyValue : r70_7
|
||||
# 70| mu70_9(char) = Store : &:r70_8, r70_1
|
||||
#-----| Goto (back edge) -> Block 1
|
||||
|
||||
# 71| Block 2
|
||||
# 71| Block 3
|
||||
# 71| v71_1(void) = NoOp :
|
||||
# 68| v68_11(void) = ReturnIndirection : &:r68_9, ~mu68_4
|
||||
# 68| v68_12(void) = ReturnVoid :
|
||||
@@ -240,20 +256,6 @@ ssa.cpp:
|
||||
# 68| v68_14(void) = AliasedUse : ~mu68_4
|
||||
# 68| v68_15(void) = ExitFunction :
|
||||
|
||||
# 69| Block 3
|
||||
# 69| m69_1(char *) = Phi : from 0:m68_8, from 1:m70_6
|
||||
# 69| m69_2(int) = Phi : from 0:m68_6, from 1:m69_7
|
||||
# 69| r69_3(glval<int>) = VariableAddress[n] :
|
||||
# 69| r69_4(int) = Load : &:r69_3, m69_2
|
||||
# 69| r69_5(int) = Constant[1] :
|
||||
# 69| r69_6(int) = Sub : r69_4, r69_5
|
||||
# 69| m69_7(int) = Store : &:r69_3, r69_6
|
||||
# 69| r69_8(int) = Constant[0] :
|
||||
# 69| r69_9(bool) = CompareGT : r69_4, r69_8
|
||||
# 69| v69_10(void) = ConditionalBranch : r69_9
|
||||
#-----| False -> Block 2
|
||||
#-----| True -> Block 1
|
||||
|
||||
# 75| void ScalarPhi(bool)
|
||||
# 75| Block 0
|
||||
# 75| v75_1(void) = EnterFunction :
|
||||
|
||||
@@ -219,20 +219,36 @@ ssa.cpp:
|
||||
# 68| m68_8(char *) = InitializeParameter[p] : &:r68_7
|
||||
# 68| r68_9(char *) = Load : &:r68_7, m68_8
|
||||
# 68| mu68_10(unknown) = InitializeIndirection[p] : &:r68_9
|
||||
#-----| Goto -> Block 3
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 70| Block 1
|
||||
# 69| Block 1
|
||||
# 69| m69_1(char *) = Phi : from 0:m68_8, from 2:m70_6
|
||||
# 69| m69_2(int) = Phi : from 0:m68_6, from 2:m69_7
|
||||
# 69| r69_3(glval<int>) = VariableAddress[n] :
|
||||
# 69| r69_4(int) = Load : &:r69_3, m69_2
|
||||
# 69| r69_5(int) = Constant[1] :
|
||||
# 69| r69_6(int) = Sub : r69_4, r69_5
|
||||
# 69| m69_7(int) = Store : &:r69_3, r69_6
|
||||
# 69| r69_8(int) = CopyValue : r69_4
|
||||
# 69| r69_9(int) = Constant[0] :
|
||||
# 69| r69_10(bool) = CompareGT : r69_8, r69_9
|
||||
# 69| v69_11(void) = ConditionalBranch : r69_10
|
||||
#-----| False -> Block 3
|
||||
#-----| True -> Block 2
|
||||
|
||||
# 70| Block 2
|
||||
# 70| r70_1(char) = Constant[0] :
|
||||
# 70| r70_2(glval<char *>) = VariableAddress[p] :
|
||||
# 70| r70_3(char *) = Load : &:r70_2, m69_1
|
||||
# 70| r70_4(int) = Constant[1] :
|
||||
# 70| r70_5(char *) = PointerAdd[1] : r70_3, r70_4
|
||||
# 70| m70_6(char *) = Store : &:r70_2, r70_5
|
||||
# 70| r70_7(glval<char>) = CopyValue : r70_3
|
||||
# 70| mu70_8(char) = Store : &:r70_7, r70_1
|
||||
#-----| Goto (back edge) -> Block 3
|
||||
# 70| r70_7(char *) = CopyValue : r70_3
|
||||
# 70| r70_8(glval<char>) = CopyValue : r70_7
|
||||
# 70| mu70_9(char) = Store : &:r70_8, r70_1
|
||||
#-----| Goto (back edge) -> Block 1
|
||||
|
||||
# 71| Block 2
|
||||
# 71| Block 3
|
||||
# 71| v71_1(void) = NoOp :
|
||||
# 68| v68_11(void) = ReturnIndirection : &:r68_9, ~mu68_4
|
||||
# 68| v68_12(void) = ReturnVoid :
|
||||
@@ -240,20 +256,6 @@ ssa.cpp:
|
||||
# 68| v68_14(void) = AliasedUse : ~mu68_4
|
||||
# 68| v68_15(void) = ExitFunction :
|
||||
|
||||
# 69| Block 3
|
||||
# 69| m69_1(char *) = Phi : from 0:m68_8, from 1:m70_6
|
||||
# 69| m69_2(int) = Phi : from 0:m68_6, from 1:m69_7
|
||||
# 69| r69_3(glval<int>) = VariableAddress[n] :
|
||||
# 69| r69_4(int) = Load : &:r69_3, m69_2
|
||||
# 69| r69_5(int) = Constant[1] :
|
||||
# 69| r69_6(int) = Sub : r69_4, r69_5
|
||||
# 69| m69_7(int) = Store : &:r69_3, r69_6
|
||||
# 69| r69_8(int) = Constant[0] :
|
||||
# 69| r69_9(bool) = CompareGT : r69_4, r69_8
|
||||
# 69| v69_10(void) = ConditionalBranch : r69_9
|
||||
#-----| False -> Block 2
|
||||
#-----| True -> Block 1
|
||||
|
||||
# 75| void ScalarPhi(bool)
|
||||
# 75| Block 0
|
||||
# 75| v75_1(void) = EnterFunction :
|
||||
|
||||
@@ -52,9 +52,9 @@
|
||||
| test.c:18:10:18:14 | Load: count | positive |
|
||||
| test.c:18:10:18:14 | Store: count | positive |
|
||||
| test.c:23:10:23:10 | Phi: p | positive |
|
||||
| test.c:24:5:24:9 | Load: count | positive |
|
||||
| test.c:24:5:24:11 | Add: ... ++ | positive strictlyPositive |
|
||||
| test.c:24:5:24:11 | Constant: ... ++ | positive strictlyPositive |
|
||||
| test.c:24:5:24:11 | Load: ... ++ | positive |
|
||||
| test.c:24:5:24:11 | Store: ... ++ | positive strictlyPositive |
|
||||
| test.c:25:5:25:22 | Store: ... = ... | positive |
|
||||
| test.c:25:13:25:17 | Load: count | positive strictlyPositive |
|
||||
@@ -70,8 +70,8 @@
|
||||
| test.c:33:26:33:26 | Load: i | positive |
|
||||
| test.c:33:26:33:28 | Add: ... + ... | positive strictlyPositive |
|
||||
| test.c:33:28:33:28 | Constant: 1 | positive strictlyPositive |
|
||||
| test.c:34:5:34:9 | Load: total | positive |
|
||||
| test.c:34:5:34:14 | Add: ... += ... | positive |
|
||||
| test.c:34:5:34:14 | Load: ... += ... | positive |
|
||||
| test.c:34:5:34:14 | Store: ... += ... | positive |
|
||||
| test.c:34:14:34:14 | Load: i | positive |
|
||||
| test.c:36:10:36:14 | Load: total | positive |
|
||||
@@ -82,12 +82,12 @@
|
||||
| test.c:42:15:42:15 | Phi: i | positive |
|
||||
| test.c:42:15:42:15 | Phi: i | positive |
|
||||
| test.c:42:19:42:19 | Constant: 2 | positive strictlyPositive |
|
||||
| test.c:42:22:42:22 | Load: i | positive |
|
||||
| test.c:42:22:42:24 | Add: ... ++ | positive strictlyPositive |
|
||||
| test.c:42:22:42:24 | Constant: ... ++ | positive strictlyPositive |
|
||||
| test.c:42:22:42:24 | Load: ... ++ | positive |
|
||||
| test.c:42:22:42:24 | Store: ... ++ | positive strictlyPositive |
|
||||
| test.c:43:5:43:9 | Load: total | positive |
|
||||
| test.c:43:5:43:14 | Add: ... += ... | positive |
|
||||
| test.c:43:5:43:14 | Load: ... += ... | positive |
|
||||
| test.c:43:5:43:14 | Store: ... += ... | positive |
|
||||
| test.c:43:14:43:14 | Load: i | positive |
|
||||
| test.c:45:10:45:14 | Load: total | positive |
|
||||
@@ -104,8 +104,8 @@
|
||||
| test.c:51:28:51:28 | Load: i | positive |
|
||||
| test.c:51:28:51:30 | Add: ... + ... | positive strictlyPositive |
|
||||
| test.c:51:30:51:30 | Constant: 1 | positive strictlyPositive |
|
||||
| test.c:52:5:52:9 | Load: total | positive |
|
||||
| test.c:52:5:52:14 | Add: ... += ... | positive |
|
||||
| test.c:52:5:52:14 | Load: ... += ... | positive |
|
||||
| test.c:52:5:52:14 | Store: ... += ... | positive |
|
||||
| test.c:52:14:52:14 | Load: i | positive |
|
||||
| test.c:54:10:54:14 | Load: total | positive |
|
||||
@@ -147,8 +147,8 @@
|
||||
| test.c:124:36:124:36 | Constant: (unsigned long long)... | positive strictlyPositive |
|
||||
| test.c:126:31:126:43 | Call: call to test12_helper | positive |
|
||||
| test.c:126:31:126:43 | Store: call to test12_helper | positive |
|
||||
| test.c:127:6:127:10 | Load: Start | positive |
|
||||
| test.c:127:6:127:24 | Add: ... += ... | positive strictlyPositive |
|
||||
| test.c:127:6:127:24 | Load: ... += ... | positive |
|
||||
| test.c:127:6:127:24 | Store: ... += ... | positive strictlyPositive |
|
||||
| test.c:127:15:127:20 | Load: Length | positive |
|
||||
| test.c:127:15:127:24 | Add: ... + ... | positive strictlyPositive |
|
||||
@@ -252,8 +252,8 @@
|
||||
| test.c:205:13:205:15 | Mul: ... * ... | positive |
|
||||
| test.c:205:13:205:15 | Store: ... * ... | positive |
|
||||
| test.c:205:15:205:15 | Load: b | positive |
|
||||
| test.c:206:5:206:9 | Load: total | positive |
|
||||
| test.c:206:5:206:14 | Add: ... += ... | positive |
|
||||
| test.c:206:5:206:14 | Load: ... += ... | positive |
|
||||
| test.c:206:5:206:14 | Store: ... += ... | positive |
|
||||
| test.c:206:14:206:14 | Load: r | positive |
|
||||
| test.c:208:7:208:7 | Constant: 3 | positive strictlyPositive |
|
||||
@@ -263,7 +263,7 @@
|
||||
| test.c:208:28:208:30 | Constant: - ... | negative strictlyNegative |
|
||||
| test.c:208:45:208:46 | Constant: 23 | positive strictlyPositive |
|
||||
| test.c:209:13:209:13 | Load: a | positive strictlyPositive |
|
||||
| test.c:210:5:210:14 | Load: ... += ... | positive |
|
||||
| test.c:210:5:210:9 | Load: total | positive |
|
||||
| test.c:212:7:212:7 | Constant: 3 | positive strictlyPositive |
|
||||
| test.c:212:17:212:17 | Load: a | positive strictlyPositive |
|
||||
| test.c:212:22:212:23 | Constant: 11 | positive strictlyPositive |
|
||||
@@ -304,8 +304,8 @@
|
||||
| test.c:233:13:233:15 | Mul: ... * ... | positive |
|
||||
| test.c:233:13:233:15 | Store: ... * ... | positive |
|
||||
| test.c:233:15:233:15 | Load: b | positive |
|
||||
| test.c:234:5:234:9 | Load: total | positive |
|
||||
| test.c:234:5:234:14 | Add: ... += ... | positive |
|
||||
| test.c:234:5:234:14 | Load: ... += ... | positive |
|
||||
| test.c:234:5:234:14 | Store: ... += ... | positive |
|
||||
| test.c:234:14:234:14 | Load: r | positive |
|
||||
| test.c:236:7:236:7 | Phi: 0 | positive |
|
||||
@@ -314,7 +314,7 @@
|
||||
| test.c:236:28:236:30 | Constant: - ... | negative strictlyNegative |
|
||||
| test.c:236:45:236:46 | Constant: 23 | positive strictlyPositive |
|
||||
| test.c:237:13:237:13 | Load: a | positive |
|
||||
| test.c:238:5:238:14 | Load: ... += ... | positive |
|
||||
| test.c:238:5:238:9 | Load: total | positive |
|
||||
| test.c:240:17:240:17 | Load: a | positive |
|
||||
| test.c:240:22:240:23 | Constant: 11 | positive strictlyPositive |
|
||||
| test.c:240:28:240:30 | Constant: - ... | negative strictlyNegative |
|
||||
@@ -375,8 +375,8 @@
|
||||
| test.c:289:13:289:15 | Mul: ... * ... | negative |
|
||||
| test.c:289:13:289:15 | Store: ... * ... | negative |
|
||||
| test.c:289:15:289:15 | Load: b | positive |
|
||||
| test.c:290:5:290:9 | Load: total | negative |
|
||||
| test.c:290:5:290:14 | Add: ... += ... | negative |
|
||||
| test.c:290:5:290:14 | Load: ... += ... | negative |
|
||||
| test.c:290:5:290:14 | Store: ... += ... | negative |
|
||||
| test.c:290:14:290:14 | Load: r | negative |
|
||||
| test.c:292:7:292:9 | Constant: - ... | negative strictlyNegative |
|
||||
@@ -384,7 +384,7 @@
|
||||
| test.c:292:29:292:31 | Constant: - ... | negative strictlyNegative |
|
||||
| test.c:292:46:292:47 | Constant: 23 | positive strictlyPositive |
|
||||
| test.c:293:13:293:13 | Load: a | negative |
|
||||
| test.c:294:5:294:14 | Load: ... += ... | negative |
|
||||
| test.c:294:5:294:9 | Load: total | negative |
|
||||
| test.c:296:7:296:9 | Constant: - ... | negative strictlyNegative |
|
||||
| test.c:296:29:296:31 | Constant: - ... | negative strictlyNegative |
|
||||
| test.c:297:13:297:13 | Load: a | negative |
|
||||
@@ -421,8 +421,8 @@
|
||||
| test.c:317:13:317:15 | Mul: ... * ... | negative |
|
||||
| test.c:317:13:317:15 | Store: ... * ... | negative |
|
||||
| test.c:317:15:317:15 | Load: b | positive |
|
||||
| test.c:318:5:318:9 | Load: total | negative |
|
||||
| test.c:318:5:318:14 | Add: ... += ... | negative |
|
||||
| test.c:318:5:318:14 | Load: ... += ... | negative |
|
||||
| test.c:318:5:318:14 | Store: ... += ... | negative |
|
||||
| test.c:318:14:318:14 | Load: r | negative |
|
||||
| test.c:320:7:320:9 | Constant: - ... | negative strictlyNegative |
|
||||
@@ -431,7 +431,7 @@
|
||||
| test.c:320:30:320:32 | Constant: - ... | negative strictlyNegative |
|
||||
| test.c:320:47:320:48 | Constant: 23 | positive strictlyPositive |
|
||||
| test.c:321:13:321:13 | Load: a | negative strictlyNegative |
|
||||
| test.c:322:5:322:14 | Load: ... += ... | negative |
|
||||
| test.c:322:5:322:9 | Load: total | negative |
|
||||
| test.c:324:7:324:9 | Constant: - ... | negative strictlyNegative |
|
||||
| test.c:324:24:324:25 | Constant: - ... | negative strictlyNegative |
|
||||
| test.c:324:30:324:32 | Constant: - ... | negative strictlyNegative |
|
||||
@@ -454,9 +454,9 @@
|
||||
| test.c:342:10:342:10 | Load: i | positive |
|
||||
| test.c:342:10:342:10 | Phi: i | positive |
|
||||
| test.c:342:14:342:14 | Constant: 3 | positive strictlyPositive |
|
||||
| test.c:343:5:343:5 | Load: i | positive |
|
||||
| test.c:343:5:343:7 | Add: ... ++ | positive strictlyPositive |
|
||||
| test.c:343:5:343:7 | Constant: ... ++ | positive strictlyPositive |
|
||||
| test.c:343:5:343:7 | Load: ... ++ | positive |
|
||||
| test.c:343:5:343:7 | Store: ... ++ | positive strictlyPositive |
|
||||
| test.c:345:3:345:7 | Store: ... = ... | positive strictlyPositive |
|
||||
| test.c:345:7:345:7 | Load: i | positive strictlyPositive |
|
||||
@@ -646,18 +646,18 @@
|
||||
| test.c:397:3:397:15 | Store: ... = ... | positive strictlyPositive |
|
||||
| test.c:397:9:397:11 | Add: ++ ... | positive strictlyPositive |
|
||||
| test.c:397:9:397:11 | Constant: ++ ... | positive strictlyPositive |
|
||||
| test.c:397:9:397:11 | Load: ++ ... | positive |
|
||||
| test.c:397:9:397:11 | Store: ++ ... | positive strictlyPositive |
|
||||
| test.c:397:9:397:14 | CopyValue: ... , ... | positive strictlyPositive |
|
||||
| test.c:397:11:397:11 | Load: y | positive |
|
||||
| test.c:397:14:397:14 | Load: y | positive strictlyPositive |
|
||||
| test.c:398:3:398:23 | Store: ... = ... | positive strictlyPositive |
|
||||
| test.c:398:9:398:9 | Load: y | positive strictlyPositive |
|
||||
| test.c:398:9:398:11 | Add: ... ++ | positive strictlyPositive |
|
||||
| test.c:398:9:398:11 | Constant: ... ++ | positive strictlyPositive |
|
||||
| test.c:398:9:398:11 | Load: ... ++ | positive strictlyPositive |
|
||||
| test.c:398:9:398:11 | Store: ... ++ | positive strictlyPositive |
|
||||
| test.c:398:9:398:22 | CopyValue: ... , ... | positive strictlyPositive |
|
||||
| test.c:398:14:398:14 | Load: y | positive strictlyPositive |
|
||||
| test.c:398:14:398:19 | Add: ... += ... | positive strictlyPositive |
|
||||
| test.c:398:14:398:19 | Load: ... += ... | positive strictlyPositive |
|
||||
| test.c:398:14:398:19 | Store: ... += ... | positive strictlyPositive |
|
||||
| test.c:398:19:398:19 | Constant: (unsigned int)... | positive strictlyPositive |
|
||||
| test.c:398:22:398:22 | Load: y | positive strictlyPositive |
|
||||
|
||||
Reference in New Issue
Block a user