From 56d3b4ef0dfb6d211fb4df3ae61afa785a1baeac Mon Sep 17 00:00:00 2001 From: Jan Rochel <jan.rochel@cea.fr> Date: Wed, 1 Nov 2023 02:33:10 +0100 Subject: [PATCH] [alias] print graphs in tests --- .../tests/basic/oracle/addrof.res.oracle | 22 + .../tests/basic/oracle/assignment1.res.oracle | 15 + .../tests/basic/oracle/assignment2.res.oracle | 20 + .../tests/basic/oracle/assignment3.res.oracle | 14 + .../tests/basic/oracle/assignment4.res.oracle | 23 + .../tests/basic/oracle/assignment5.res.oracle | 23 + .../alias/tests/basic/oracle/cast1.res.oracle | 15 + .../basic/oracle/conditional1.res.oracle | 14 + .../basic/oracle/conditional2.res.oracle | 20 + .../basic/oracle/conditional3.res.oracle | 34 ++ .../tests/basic/oracle/function1.res.oracle | 32 ++ .../tests/basic/oracle/function2.res.oracle | 137 ++++++ .../tests/basic/oracle/function3.res.oracle | 30 ++ .../tests/basic/oracle/function4.res.oracle | 19 + .../tests/basic/oracle/function5.res.oracle | 23 + .../tests/basic/oracle/function6.res.oracle | 24 + .../tests/basic/oracle/globctr.res.oracle | 15 + .../alias/tests/basic/oracle/loop.res.oracle | 19 + .../tests/basic/oracle/steensgaard.res.oracle | 24 + .../tests/basic/oracle/switch1.res.oracle | 17 + .../tests/basic/oracle/switch2.res.oracle | 19 + .../tests/basic/oracle/while_for1.res.oracle | 125 +++++ .../tests/basic/oracle/while_for2.res.oracle | 11 + .../tests/basic/oracle/while_for3.res.oracle | 14 + .../fixed_bugs/oracle/empty_nodes.res.oracle | 21 + .../fixed_bugs/oracle/gzip124.res.oracle | 15 + .../tests/fixed_bugs/oracle/origin.res.oracle | 11 + .../fixed_bugs/oracle/origin_simpl.res.oracle | 7 + .../tests/fixed_bugs/oracle/semver.res.oracle | 10 + .../tests/fixed_bugs/oracle/tkn-2.res.oracle | 9 + .../fixed_bugs/oracle/union_vmap.res.oracle | 24 + .../tests/offsets/oracle/array1.res.oracle | 17 + .../tests/offsets/oracle/array2.res.oracle | 14 + .../tests/offsets/oracle/array3.res.oracle | 129 +++++ .../tests/offsets/oracle/collapse1.res.oracle | 14 + .../tests/offsets/oracle/collapse2.res.oracle | 12 + .../tests/offsets/oracle/collapse3.res.oracle | 12 + .../tests/offsets/oracle/nested1.res.oracle | 187 ++++++++ .../tests/offsets/oracle/nested2.res.oracle | 151 ++++++ .../offsets/oracle/structure1.res.oracle | 20 + .../offsets/oracle/structure2.res.oracle | 17 + .../offsets/oracle/structure3.res.oracle | 29 ++ .../offsets/oracle/structure4.res.oracle | 134 ++++++ .../offsets/oracle/structure5.res.oracle | 153 ++++++ .../real_world/oracle/example1.res.oracle | 434 +++++++++++++++++ .../real_world/oracle/example2.res.oracle | 454 ++++++++++++++++++ .../real_world/oracle/function1_v2.res.oracle | 137 ++++++ src/plugins/alias/tests/test_config | 2 +- 48 files changed, 2721 insertions(+), 1 deletion(-) diff --git a/src/plugins/alias/tests/basic/oracle/addrof.res.oracle b/src/plugins/alias/tests/basic/oracle/addrof.res.oracle index c721b21001c..c2b1c63088a 100644 --- a/src/plugins/alias/tests/basic/oracle/addrof.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/addrof.res.oracle @@ -2,16 +2,38 @@ [alias] analysing function: main [alias] analysing instruction: a = & x; [alias] May-aliases after instruction a = & x; are { *a; x } +[alias] May-alias graph after instruction a = & x; is + 0:{ a } → 1:{ x } 1:{ x } → 3:{ } [alias] analysing instruction: b = & y; [alias] May-aliases after instruction b = & y; are { *a; x } { *b; y } +[alias] May-alias graph after instruction b = & y; is + 0:{ a } → 1:{ x } 1:{ x } → 3:{ } 5:{ b } → 6:{ y } + 6:{ y } → 8:{ } [alias] analysing instruction: y = & z; [alias] May-aliases after instruction y = & z; are { *a; x } { *b; y } { *(*b); *y; z } +[alias] May-alias graph after instruction y = & z; is + 0:{ a } → 1:{ x } 1:{ x } → 3:{ } 5:{ b } → 6:{ y } + 6:{ y } → 8:{ z } 8:{ z } → 11:{ } [alias] analysing instruction: *y = x; [alias] May-aliases after instruction *y = x; are { *(*b); *a; *y; x } { *b; a; y } +[alias] May-alias graph after instruction *y = x; is + 0:{ a } → 8:{ *y; x } 5:{ b } → 6:{ y } 6:{ y } → 8:{ *y; x } + 8:{ *y; x } → 3:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { *b; a; y } { *(*b); *a; *y; x; z } +[alias] May-alias graph after instruction __retres = 0; is + 0:{ a } → 1:{ *y; x; z } 1:{ *y; x; z } → 3:{ } + 5:{ b } → 6:{ y } 6:{ y } → 1:{ *y; x; z } [alias] May-aliases at the end of function main: { *b; a; y } { *(*b); *a; *y; x; z } +[alias] May-alias graph at the end of function main: + 0:{ a } → 1:{ *y; x; z } 1:{ *y; x; z } → 3:{ } + 5:{ b } → 6:{ y } 6:{ y } → 1:{ *y; x; z } +[alias] Summary of function main: + formals: + locals: a→{ *y; x; z } b→{ y } y→{ *y; x; z } x z p __retres + returns: __retres state: { *b; a; y } { *(*b); *a; *y; x; z } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/assignment1.res.oracle b/src/plugins/alias/tests/basic/oracle/assignment1.res.oracle index 0a62f46e5b1..4c31afc87e8 100644 --- a/src/plugins/alias/tests/basic/oracle/assignment1.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/assignment1.res.oracle @@ -2,18 +2,33 @@ [alias] analysing function: main [alias] analysing instruction: int *a = (int *)0; [alias] May-aliases after instruction int *a = (int *)0; are <none> +[alias] May-alias graph after instruction int *a = (int *)0; is <empty> [alias] analysing instruction: int *b = (int *)0; [alias] May-aliases after instruction int *b = (int *)0; are <none> +[alias] May-alias graph after instruction int *b = (int *)0; is <empty> [alias] analysing instruction: int *c = (int *)0; [alias] May-aliases after instruction int *c = (int *)0; are <none> +[alias] May-alias graph after instruction int *c = (int *)0; is <empty> [alias] analysing instruction: int *d = (int *)0; [alias] May-aliases after instruction int *d = (int *)0; are <none> +[alias] May-alias graph after instruction int *d = (int *)0; is <empty> [alias] analysing instruction: a = b; [alias] May-aliases after instruction a = b; are { a; b } +[alias] May-alias graph after instruction a = b; is 0:{ a; b } → 1:{ } [alias] analysing instruction: b = c; [alias] May-aliases after instruction b = c; are { a; b; c } +[alias] May-alias graph after instruction b = c; is 0:{ a; b; c } → 1:{ } [alias] analysing instruction: a = d; [alias] May-aliases after instruction a = d; are { a; b; c; d } +[alias] May-alias graph after instruction a = d; is 0:{ a; b; c; d } → 1:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { a; b; c; d } +[alias] May-alias graph after instruction __retres = 0; is + 0:{ a; b; c; d } → 1:{ } [alias] May-aliases at the end of function main: { a; b; c; d } +[alias] May-alias graph at the end of function main: + 0:{ a; b; c; d } → 1:{ } +[alias] Summary of function main: + formals: locals: a b c d __retres returns: __retres + state: { a; b; c; d } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/assignment2.res.oracle b/src/plugins/alias/tests/basic/oracle/assignment2.res.oracle index 02b7661040b..1481782c779 100644 --- a/src/plugins/alias/tests/basic/oracle/assignment2.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/assignment2.res.oracle @@ -2,18 +2,38 @@ [alias] analysing function: main [alias] analysing instruction: int **a = (int **)0; [alias] May-aliases after instruction int **a = (int **)0; are <none> +[alias] May-alias graph after instruction int **a = (int **)0; is <empty> [alias] analysing instruction: int *b = (int *)0; [alias] May-aliases after instruction int *b = (int *)0; are <none> +[alias] May-alias graph after instruction int *b = (int *)0; is <empty> [alias] analysing instruction: int **c = (int **)0; [alias] May-aliases after instruction int **c = (int **)0; are <none> +[alias] May-alias graph after instruction int **c = (int **)0; is <empty> [alias] analysing instruction: int *d = (int *)0; [alias] May-aliases after instruction int *d = (int *)0; are <none> +[alias] May-alias graph after instruction int *d = (int *)0; is <empty> [alias] analysing instruction: *a = b; [alias] May-aliases after instruction *a = b; are { *a; b } +[alias] May-alias graph after instruction *a = b; is + 0:{ a } → 1:{ *a; b } 1:{ *a; b } → 3:{ } [alias] analysing instruction: *c = d; [alias] May-aliases after instruction *c = d; are { *a; b } { *c; d } +[alias] May-alias graph after instruction *c = d; is + 0:{ a } → 1:{ *a; b } 1:{ *a; b } → 3:{ } 4:{ c } → 5:{ *c; d } + 5:{ *c; d } → 7:{ } [alias] analysing instruction: a = c; [alias] May-aliases after instruction a = c; are { a; c } { *a; *c; b; d } +[alias] May-alias graph after instruction a = c; is + 0:{ a; c } → 1:{ *a; *c; b; d } 1:{ *a; *c; b; d } → 3:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { a; c } { *a; *c; b; d } +[alias] May-alias graph after instruction __retres = 0; is + 0:{ a; c } → 1:{ *a; *c; b; d } 1:{ *a; *c; b; d } → 3:{ } [alias] May-aliases at the end of function main: { a; c } { *a; *c; b; d } +[alias] May-alias graph at the end of function main: + 0:{ a; c } → 1:{ *a; *c; b; d } 1:{ *a; *c; b; d } → 3:{ } +[alias] Summary of function main: + formals: + locals: a→{ *a; *c; b; d } b c→{ *a; *c; b; d } d __retres + returns: __retres state: { a; c } { *a; *c; b; d } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/assignment3.res.oracle b/src/plugins/alias/tests/basic/oracle/assignment3.res.oracle index 38afe15b985..1a83b4c75ed 100644 --- a/src/plugins/alias/tests/basic/oracle/assignment3.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/assignment3.res.oracle @@ -2,14 +2,28 @@ [alias] analysing function: main [alias] analysing instruction: int *a = (int *)0; [alias] May-aliases after instruction int *a = (int *)0; are <none> +[alias] May-alias graph after instruction int *a = (int *)0; is <empty> [alias] analysing instruction: int b = 0; [alias] May-aliases after instruction int b = 0; are <none> +[alias] May-alias graph after instruction int b = 0; is <empty> [alias] analysing instruction: int *c = (int *)0; [alias] May-aliases after instruction int *c = (int *)0; are <none> +[alias] May-alias graph after instruction int *c = (int *)0; is <empty> [alias] analysing instruction: a = & b; [alias] May-aliases after instruction a = & b; are <none> +[alias] May-alias graph after instruction a = & b; is 0:{ a } → 1:{ b } [alias] analysing instruction: c = & b; [alias] May-aliases after instruction c = & b; are { a; c } +[alias] May-alias graph after instruction c = & b; is + 0:{ a } → 5:{ b } 4:{ c } → 5:{ b } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { a; c } +[alias] May-alias graph after instruction __retres = 0; is + 0:{ a } → 5:{ b } 4:{ c } → 5:{ b } [alias] May-aliases at the end of function main: { a; c } +[alias] May-alias graph at the end of function main: + 0:{ a } → 5:{ b } 4:{ c } → 5:{ b } +[alias] Summary of function main: + formals: locals: a→{ b } b c→{ b } __retres + returns: __retres state: { a; c } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/assignment4.res.oracle b/src/plugins/alias/tests/basic/oracle/assignment4.res.oracle index 8d9d3556197..e526142c5b4 100644 --- a/src/plugins/alias/tests/basic/oracle/assignment4.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/assignment4.res.oracle @@ -2,18 +2,41 @@ [alias] analysing function: main [alias] analysing instruction: int **a = (int **)0; [alias] May-aliases after instruction int **a = (int **)0; are <none> +[alias] May-alias graph after instruction int **a = (int **)0; is <empty> [alias] analysing instruction: int *b = (int *)0; [alias] May-aliases after instruction int *b = (int *)0; are <none> +[alias] May-alias graph after instruction int *b = (int *)0; is <empty> [alias] analysing instruction: int **c = (int **)0; [alias] May-aliases after instruction int **c = (int **)0; are <none> +[alias] May-alias graph after instruction int **c = (int **)0; is <empty> [alias] analysing instruction: int *d = (int *)0; [alias] May-aliases after instruction int *d = (int *)0; are <none> +[alias] May-alias graph after instruction int *d = (int *)0; is <empty> [alias] analysing instruction: *a = b; [alias] May-aliases after instruction *a = b; are { *a; b } +[alias] May-alias graph after instruction *a = b; is + 0:{ a } → 1:{ *a; b } 1:{ *a; b } → 3:{ } [alias] analysing instruction: *c = d; [alias] May-aliases after instruction *c = d; are { *a; b } { *c; d } +[alias] May-alias graph after instruction *c = d; is + 0:{ a } → 1:{ *a; b } 1:{ *a; b } → 3:{ } 4:{ c } → 5:{ *c; d } + 5:{ *c; d } → 7:{ } [alias] analysing instruction: b = d; [alias] May-aliases after instruction b = d; are { a; c } { *a; *c; b; d } +[alias] May-alias graph after instruction b = d; is + 0:{ a } → 1:{ *a; *c; b; d } 1:{ *a; *c; b; d } → 3:{ } + 4:{ c } → 1:{ *a; *c; b; d } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { a; c } { *a; *c; b; d } +[alias] May-alias graph after instruction __retres = 0; is + 0:{ a } → 1:{ *a; *c; b; d } 1:{ *a; *c; b; d } → 3:{ } + 4:{ c } → 1:{ *a; *c; b; d } [alias] May-aliases at the end of function main: { a; c } { *a; *c; b; d } +[alias] May-alias graph at the end of function main: + 0:{ a } → 1:{ *a; *c; b; d } 1:{ *a; *c; b; d } → 3:{ } + 4:{ c } → 1:{ *a; *c; b; d } +[alias] Summary of function main: + formals: + locals: a→{ *a; *c; b; d } b c→{ *a; *c; b; d } d __retres + returns: __retres state: { a; c } { *a; *c; b; d } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/assignment5.res.oracle b/src/plugins/alias/tests/basic/oracle/assignment5.res.oracle index 023e852d039..dbf7dc9fa16 100644 --- a/src/plugins/alias/tests/basic/oracle/assignment5.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/assignment5.res.oracle @@ -2,20 +2,43 @@ [alias] analysing function: main [alias] analysing instruction: int ***a = (int ***)0; [alias] May-aliases after instruction int ***a = (int ***)0; are <none> +[alias] May-alias graph after instruction int ***a = (int ***)0; is <empty> [alias] analysing instruction: int **b = (int **)0; [alias] May-aliases after instruction int **b = (int **)0; are <none> +[alias] May-alias graph after instruction int **b = (int **)0; is <empty> [alias] analysing instruction: int *c = (int *)0; [alias] May-aliases after instruction int *c = (int *)0; are <none> +[alias] May-alias graph after instruction int *c = (int *)0; is <empty> [alias] analysing instruction: int *d = (int *)0; [alias] May-aliases after instruction int *d = (int *)0; are <none> +[alias] May-alias graph after instruction int *d = (int *)0; is <empty> [alias] analysing instruction: *a = b; [alias] May-aliases after instruction *a = b; are { *a; b } +[alias] May-alias graph after instruction *a = b; is + 0:{ a } → 1:{ *a; b } 1:{ *a; b } → 3:{ } [alias] analysing instruction: *b = c; [alias] May-aliases after instruction *b = c; are { *a; b } { *(*a); *b; c } +[alias] May-alias graph after instruction *b = c; is + 0:{ a } → 1:{ *a; b } 1:{ *a; b } → 3:{ *b; c } + 3:{ *b; c } → 5:{ } [alias] analysing instruction: d = *(*a); [alias] May-aliases after instruction d = *(*a); are { *a; b } { *(*a); *b; c; d } +[alias] May-alias graph after instruction d = *(*a); is + 0:{ a } → 1:{ *a; b } 1:{ *a; b } → 6:{ *(*a); *b; c; d } + 6:{ *(*a); *b; c; d } → 7:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { *a; b } { *(*a); *b; c; d } +[alias] May-alias graph after instruction __retres = 0; is + 0:{ a } → 1:{ *a; b } 1:{ *a; b } → 6:{ *(*a); *b; c; d } + 6:{ *(*a); *b; c; d } → 7:{ } [alias] May-aliases at the end of function main: { *a; b } { *(*a); *b; c; d } +[alias] May-alias graph at the end of function main: + 0:{ a } → 1:{ *a; b } 1:{ *a; b } → 6:{ *(*a); *b; c; d } + 6:{ *(*a); *b; c; d } → 7:{ } +[alias] Summary of function main: + formals: + locals: a→{ *a; b } b→{ *(*a); *b; c; d } c d __retres + returns: __retres state: { *a; b } { *(*a); *b; c; d } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/cast1.res.oracle b/src/plugins/alias/tests/basic/oracle/cast1.res.oracle index 8a1dd1b9c58..2ff8f37ad86 100644 --- a/src/plugins/alias/tests/basic/oracle/cast1.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/cast1.res.oracle @@ -2,18 +2,33 @@ [alias] analysing function: main [alias] analysing instruction: int *a = (int *)0; [alias] May-aliases after instruction int *a = (int *)0; are <none> +[alias] May-alias graph after instruction int *a = (int *)0; is <empty> [alias] analysing instruction: int *b = (int *)0; [alias] May-aliases after instruction int *b = (int *)0; are <none> +[alias] May-alias graph after instruction int *b = (int *)0; is <empty> [alias] analysing instruction: float *c = (float *)0; [alias] May-aliases after instruction float *c = (float *)0; are <none> +[alias] May-alias graph after instruction float *c = (float *)0; is <empty> [alias] analysing instruction: float *d = (float *)0; [alias] May-aliases after instruction float *d = (float *)0; are <none> +[alias] May-alias graph after instruction float *d = (float *)0; is <empty> [alias] analysing instruction: a = (int *)c; [alias:unsafe-cast] cast1.c:10: Warning: unsafe cast from float * to int * [alias] May-aliases after instruction a = (int *)c; are { a; c } +[alias] May-alias graph after instruction a = (int *)c; is 0:{ a; c } → 1:{ } [alias] analysing instruction: d = (float *)b; [alias:unsafe-cast] cast1.c:11: Warning: unsafe cast from int * to float * [alias] May-aliases after instruction d = (float *)b; are { a; c } { b; d } +[alias] May-alias graph after instruction d = (float *)b; is + 0:{ a; c } → 1:{ } 4:{ b; d } → 5:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { a; c } { b; d } +[alias] May-alias graph after instruction __retres = 0; is + 0:{ a; c } → 1:{ } 4:{ b; d } → 5:{ } [alias] May-aliases at the end of function main: { a; c } { b; d } +[alias] May-alias graph at the end of function main: + 0:{ a; c } → 1:{ } 4:{ b; d } → 5:{ } +[alias] Summary of function main: + formals: locals: a b c d __retres returns: __retres + state: { a; c } { b; d } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/conditional1.res.oracle b/src/plugins/alias/tests/basic/oracle/conditional1.res.oracle index 878ffd6070b..ede3b2e36f8 100644 --- a/src/plugins/alias/tests/basic/oracle/conditional1.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/conditional1.res.oracle @@ -2,16 +2,30 @@ [alias] analysing function: main [alias] analysing instruction: int *a = (int *)0; [alias] May-aliases after instruction int *a = (int *)0; are <none> +[alias] May-alias graph after instruction int *a = (int *)0; is <empty> [alias] analysing instruction: int *b = (int *)0; [alias] May-aliases after instruction int *b = (int *)0; are <none> +[alias] May-alias graph after instruction int *b = (int *)0; is <empty> [alias] analysing instruction: int *c = (int *)0; [alias] May-aliases after instruction int *c = (int *)0; are <none> +[alias] May-alias graph after instruction int *c = (int *)0; is <empty> [alias] analysing instruction: a = b; [alias] May-aliases after instruction a = b; are { a; b } +[alias] May-alias graph after instruction a = b; is 0:{ a; b } → 1:{ } [alias] analysing instruction: a = c; [alias] May-aliases after instruction a = c; are { a; c } +[alias] May-alias graph after instruction a = c; is 4:{ a; c } → 5:{ } [alias] analysing instruction: *a = 4; [alias] May-aliases after instruction *a = 4; are { a; b; c } +[alias] May-alias graph after instruction *a = 4; is 0:{ a; b; c } → 1:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { a; b; c } +[alias] May-alias graph after instruction __retres = 0; is + 0:{ a; b; c } → 1:{ } [alias] May-aliases at the end of function main: { a; b; c } +[alias] May-alias graph at the end of function main: + 0:{ a; b; c } → 1:{ } +[alias] Summary of function main: + formals: locals: a b c __retres returns: __retres + state: { a; b; c } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/conditional2.res.oracle b/src/plugins/alias/tests/basic/oracle/conditional2.res.oracle index 74a6ebea0fc..e89a21d4d30 100644 --- a/src/plugins/alias/tests/basic/oracle/conditional2.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/conditional2.res.oracle @@ -2,18 +2,38 @@ [alias] analysing function: main [alias] analysing instruction: b = & c; [alias] May-aliases after instruction b = & c; are { *b; c } +[alias] May-alias graph after instruction b = & c; is + 0:{ b } → 1:{ c } 1:{ c } → 3:{ } [alias] analysing instruction: c = & d; [alias] May-aliases after instruction c = & d; are { *b; c } { *(*b); *c; d } +[alias] May-alias graph after instruction c = & d; is + 0:{ b } → 1:{ c } 1:{ c } → 3:{ d } 3:{ d } → 6:{ } [alias] analysing instruction: d = & e; [alias] May-aliases after instruction d = & e; are { *b; c } { *(*b); *c; d } +[alias] May-alias graph after instruction d = & e; is + 0:{ b } → 1:{ c } 1:{ c } → 3:{ d } 3:{ d } → 6:{ e } [alias] analysing instruction: a = b; [alias] May-aliases after instruction a = b; are { *a; *b; c } { *(*a); *(*b); *c; d } { a; b } +[alias] May-alias graph after instruction a = b; is + 3:{ d } → 6:{ e } 10:{ a; b } → 11:{ c } 11:{ c } → 3:{ d } [alias] analysing instruction: a = & c; [alias] May-aliases after instruction a = & c; are { *a; *b; c } { *(*a); *(*b); *c; d } { a; b } +[alias] May-alias graph after instruction a = & c; is + 0:{ b } → 13:{ c } 3:{ d } → 6:{ e } 12:{ a } → 13:{ c } + 13:{ c } → 3:{ d } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { *a; *b; c } { *(*a); *(*b); *c; d } { a; b } +[alias] May-alias graph after instruction __retres = 0; is + 3:{ d } → 6:{ e } 10:{ a; b } → 11:{ c } 11:{ c } → 3:{ d } [alias] May-aliases at the end of function main: { *a; *b; c } { *(*a); *(*b); *c; d } { a; b } +[alias] May-alias graph at the end of function main: + 3:{ d } → 6:{ e } 10:{ a; b } → 11:{ c } 11:{ c } → 3:{ d } +[alias] Summary of function main: + formals: + locals: a→{ c } b→{ c } c→{ d } d→{ e } e __retres + returns: __retres state: { *a; *b; c } { *(*a); *(*b); *c; d } { a; b } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/conditional3.res.oracle b/src/plugins/alias/tests/basic/oracle/conditional3.res.oracle index d91937c0431..8cc6d480f52 100644 --- a/src/plugins/alias/tests/basic/oracle/conditional3.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/conditional3.res.oracle @@ -2,34 +2,68 @@ [alias] analysing function: main [alias] analysing instruction: a = b; [alias] May-aliases after instruction a = b; are { a; b } +[alias] May-alias graph after instruction a = b; is 0:{ a; b } → 1:{ } [alias] analysing instruction: b = & i; [alias] May-aliases after instruction b = & i; are { a; b } { *a; *b; i } +[alias] May-alias graph after instruction b = & i; is + 0:{ a; b } → 1:{ i } 1:{ i } → 5:{ } [alias] analysing instruction: i = & x; [alias] May-aliases after instruction i = & x; are { a; b } { *a; *b; i } { *(*a); *(*b); *i; x } +[alias] May-alias graph after instruction i = & x; is + 0:{ a; b } → 1:{ i } 1:{ i } → 5:{ x } 5:{ x } → 8:{ } [alias] analysing instruction: x = & t; [alias] May-aliases after instruction x = & t; are { a; b } { *a; *b; i } { *(*a); *(*b); *i; x } { *(*(*a)); *(*(*b)); *(*i); *x; t } +[alias] May-alias graph after instruction x = & t; is + 0:{ a; b } → 1:{ i } 1:{ i } → 5:{ x } 5:{ x } → 8:{ t } + 8:{ t } → 11:{ } [alias] analysing instruction: a = c; [alias] May-aliases after instruction a = c; are { a; c } +[alias] May-alias graph after instruction a = c; is 13:{ a; c } → 14:{ } [alias] analysing instruction: c = & j; [alias] May-aliases after instruction c = & j; are { a; c } { *a; *c; j } +[alias] May-alias graph after instruction c = & j; is + 13:{ a; c } → 14:{ j } 14:{ j } → 18:{ } [alias] analysing instruction: j = & y; [alias] May-aliases after instruction j = & y; are { a; c } { *a; *c; j } { *(*a); *(*c); *j; y } +[alias] May-alias graph after instruction j = & y; is + 13:{ a; c } → 14:{ j } 14:{ j } → 18:{ y } 18:{ y } → 21:{ } [alias] analysing instruction: y = & u; [alias] May-aliases after instruction y = & u; are { a; c } { *a; *c; j } { *(*a); *(*c); *j; y } { *(*(*a)); *(*(*c)); *(*j); *y; u } +[alias] May-alias graph after instruction y = & u; is + 13:{ a; c } → 14:{ j } 14:{ j } → 18:{ y } 18:{ y } → 21:{ u } + 21:{ u } → 24:{ } [alias] analysing instruction: p = 0; [alias] May-aliases after instruction p = 0; are { a; b; c } { *a; *b; *c; i; j } { *(*a); *(*b); *(*c); *i; *j; x; y } { *(*(*a)); *(*(*b)); *(*(*c)); *(*i); *(*j); *x; *y; t; u } +[alias] May-alias graph after instruction p = 0; is + 0:{ a; b; c } → 1:{ i; j } 1:{ i; j } → 5:{ x; y } + 5:{ x; y } → 8:{ t; u } 8:{ t; u } → 11:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { a; b; c } { *a; *b; *c; i; j } { *(*a); *(*b); *(*c); *i; *j; x; y } { *(*(*a)); *(*(*b)); *(*(*c)); *(*i); *(*j); *x; *y; t; u } +[alias] May-alias graph after instruction __retres = 0; is + 0:{ a; b; c } → 1:{ i; j } 1:{ i; j } → 5:{ x; y } + 5:{ x; y } → 8:{ t; u } 8:{ t; u } → 11:{ } [alias] May-aliases at the end of function main: { a; b; c } { *a; *b; *c; i; j } { *(*a); *(*b); *(*c); *i; *j; x; y } { *(*(*a)); *(*(*b)); *(*(*c)); *(*i); *(*j); *x; *y; t; u } +[alias] May-alias graph at the end of function main: + 0:{ a; b; c } → 1:{ i; j } 1:{ i; j } → 5:{ x; y } + 5:{ x; y } → 8:{ t; u } 8:{ t; u } → 11:{ } +[alias] Summary of function main: + formals: + locals: a→{ i; j } b→{ i; j } c→{ i; j } i→{ x; y } j→{ x; y } + x→{ t; u } y→{ t; u } t u p __retres + returns: __retres + state: { a; b; c } { *a; *b; *c; i; j } + { *(*a); *(*b); *(*c); *i; *j; x; y } + { *(*(*a)); *(*(*b)); *(*(*c)); *(*i); *(*j); *x; *y; t; u } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/function1.res.oracle b/src/plugins/alias/tests/basic/oracle/function1.res.oracle index d97b433f717..53a681adaf7 100644 --- a/src/plugins/alias/tests/basic/oracle/function1.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/function1.res.oracle @@ -2,30 +2,62 @@ [alias] analysing function: main [alias] analysing instruction: int *a = (int *)0; [alias] May-aliases after instruction int *a = (int *)0; are <none> +[alias] May-alias graph after instruction int *a = (int *)0; is <empty> [alias] analysing instruction: int *b = (int *)0; [alias] May-aliases after instruction int *b = (int *)0; are <none> +[alias] May-alias graph after instruction int *b = (int *)0; is <empty> [alias] analysing instruction: int *c = (int *)0; [alias] May-aliases after instruction int *c = (int *)0; are <none> +[alias] May-alias graph after instruction int *c = (int *)0; is <empty> [alias] analysing instruction: int *d = (int *)0; [alias] May-aliases after instruction int *d = (int *)0; are <none> +[alias] May-alias graph after instruction int *d = (int *)0; is <empty> [alias] analysing instruction: swap(a,b); [alias] analysing function: swap [alias] analysing instruction: int *z = (int *)0; [alias] May-aliases after instruction int *z = (int *)0; are <none> +[alias] May-alias graph after instruction int *z = (int *)0; is <empty> [alias] analysing instruction: z = x; [alias] May-aliases after instruction z = x; are { x; z } +[alias] May-alias graph after instruction z = x; is 0:{ x; z } → 1:{ } [alias] analysing instruction: x = y; [alias] May-aliases after instruction x = y; are { x; y; z } +[alias] May-alias graph after instruction x = y; is 0:{ x; y; z } → 1:{ } [alias] analysing instruction: y = z; [alias] May-aliases after instruction y = z; are { x; y; z } +[alias] May-alias graph after instruction y = z; is 0:{ x; y; z } → 1:{ } [alias] May-aliases at the end of function swap: { x; y; z } +[alias] May-alias graph at the end of function swap: + 0:{ x; y; z } → 1:{ } +[alias] Summary of function swap: + formals: x y locals: z returns: <none> state: { x; y; z } [alias] May-aliases after instruction swap(a,b); are { a; b } +[alias] May-alias graph after instruction swap(a,b); is + 8:{ a } → 7:{ } 10:{ b } → 7:{ } [alias] analysing instruction: swap(c,d); [alias] May-aliases after instruction swap(c,d); are { a; b } { c; d } +[alias] May-alias graph after instruction swap(c,d); is + 8:{ a } → 7:{ } 10:{ b } → 7:{ } 14:{ c } → 13:{ } + 16:{ d } → 13:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { a; b } { c; d } +[alias] May-alias graph after instruction __retres = 0; is + 8:{ a } → 7:{ } 10:{ b } → 7:{ } 14:{ c } → 13:{ } + 16:{ d } → 13:{ } [alias] May-aliases at the end of function main: { a; b } { c; d } +[alias] May-alias graph at the end of function main: + 8:{ a } → 7:{ } 10:{ b } → 7:{ } 14:{ c } → 13:{ } + 16:{ d } → 13:{ } +[alias] Summary of function main: + formals: locals: a b c d __retres returns: __retres + state: { a; b } { c; d } [alias] analysing function: swap [alias] analysing instruction: int *z = (int *)0; [alias] May-aliases after instruction int *z = (int *)0; are <none> +[alias] May-alias graph after instruction int *z = (int *)0; is <empty> [alias] May-aliases at the end of function swap: { x; y; z } +[alias] May-alias graph at the end of function swap: + 0:{ x; y; z } → 1:{ } +[alias] Summary of function swap: + formals: x y locals: z returns: <none> state: { x; y; z } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/function2.res.oracle b/src/plugins/alias/tests/basic/oracle/function2.res.oracle index 1e4decb3e43..bf75d622971 100644 --- a/src/plugins/alias/tests/basic/oracle/function2.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/function2.res.oracle @@ -1,136 +1,273 @@ [kernel] Parsing function2.c (with preprocessing) [alias] analysing function: _Exit [alias] May-aliases at the end of function _Exit: ⊥ +[alias] May-alias graph at the end of function _Exit: + ⊥ [alias] analysing function: abort [alias] May-aliases at the end of function abort: ⊥ +[alias] May-alias graph at the end of function abort: + ⊥ [alias] analysing function: abs [alias] May-aliases at the end of function abs: ⊥ +[alias] May-alias graph at the end of function abs: + ⊥ [alias] analysing function: at_quick_exit [alias] May-aliases at the end of function at_quick_exit: ⊥ +[alias] May-alias graph at the end of function at_quick_exit: + ⊥ [alias] analysing function: atexit [alias] May-aliases at the end of function atexit: ⊥ +[alias] May-alias graph at the end of function atexit: + ⊥ [alias] analysing function: atof [alias] May-aliases at the end of function atof: ⊥ +[alias] May-alias graph at the end of function atof: + ⊥ [alias] analysing function: atoi [alias] May-aliases at the end of function atoi: ⊥ +[alias] May-alias graph at the end of function atoi: + ⊥ [alias] analysing function: atol [alias] May-aliases at the end of function atol: ⊥ +[alias] May-alias graph at the end of function atol: + ⊥ [alias] analysing function: atoll [alias] May-aliases at the end of function atoll: ⊥ +[alias] May-alias graph at the end of function atoll: + ⊥ [alias] analysing function: bsearch [alias] May-aliases at the end of function bsearch: ⊥ +[alias] May-alias graph at the end of function bsearch: + ⊥ [alias] analysing function: calloc [alias] May-aliases at the end of function calloc: ⊥ +[alias] May-alias graph at the end of function calloc: + ⊥ [alias] analysing function: div [alias] May-aliases at the end of function div: ⊥ +[alias] May-alias graph at the end of function div: + ⊥ [alias] analysing function: drand48 [alias] May-aliases at the end of function drand48: ⊥ +[alias] May-alias graph at the end of function drand48: + ⊥ [alias] analysing function: erand48 [alias] May-aliases at the end of function erand48: ⊥ +[alias] May-alias graph at the end of function erand48: + ⊥ [alias] analysing function: exit [alias] May-aliases at the end of function exit: ⊥ +[alias] May-alias graph at the end of function exit: + ⊥ [alias] analysing function: free [alias] May-aliases at the end of function free: ⊥ +[alias] May-alias graph at the end of function free: + ⊥ [alias] analysing function: getenv [alias] May-aliases at the end of function getenv: ⊥ +[alias] May-alias graph at the end of function getenv: + ⊥ [alias] analysing function: jrand48 [alias] May-aliases at the end of function jrand48: ⊥ +[alias] May-alias graph at the end of function jrand48: + ⊥ [alias] analysing function: labs [alias] May-aliases at the end of function labs: ⊥ +[alias] May-alias graph at the end of function labs: + ⊥ [alias] analysing function: lcong48 [alias] May-aliases at the end of function lcong48: ⊥ +[alias] May-alias graph at the end of function lcong48: + ⊥ [alias] analysing function: ldiv [alias] May-aliases at the end of function ldiv: ⊥ +[alias] May-alias graph at the end of function ldiv: + ⊥ [alias] analysing function: llabs [alias] May-aliases at the end of function llabs: ⊥ +[alias] May-alias graph at the end of function llabs: + ⊥ [alias] analysing function: lldiv [alias] May-aliases at the end of function lldiv: ⊥ +[alias] May-alias graph at the end of function lldiv: + ⊥ [alias] analysing function: lrand48 [alias] May-aliases at the end of function lrand48: ⊥ +[alias] May-alias graph at the end of function lrand48: + ⊥ [alias] analysing function: main [alias] analysing instruction: int *a = (int *)0; [alias] May-aliases after instruction int *a = (int *)0; are <none> +[alias] May-alias graph after instruction int *a = (int *)0; is <empty> [alias] analysing instruction: int *b = (int *)0; [alias] May-aliases after instruction int *b = (int *)0; are <none> +[alias] May-alias graph after instruction int *b = (int *)0; is <empty> [alias] analysing instruction: a = my_malloc(2); [alias] analysing function: my_malloc [alias] analysing instruction: int *res = (int *)0; [alias] May-aliases after instruction int *res = (int *)0; are <none> +[alias] May-alias graph after instruction int *res = (int *)0; is <empty> [alias] analysing instruction: res = (int *)malloc((size_t)size); [alias] May-aliases after instruction res = (int *)malloc((size_t)size); are <none> +[alias] May-alias graph after instruction res = (int *)malloc((size_t)size); is + 0:{ res } → 1:{ } [alias] May-aliases at the end of function my_malloc: <none> +[alias] May-alias graph at the end of function my_malloc: + 0:{ res } → 1:{ } +[alias] Summary of function my_malloc: + formals: size locals: res returns: res state: <none> [alias] May-aliases after instruction a = my_malloc(2); are <none> +[alias] May-alias graph after instruction a = my_malloc(2); is + 4:{ a } → 3:{ } [alias] analysing instruction: b = my_malloc(3); [alias] May-aliases after instruction b = my_malloc(3); are <none> +[alias] May-alias graph after instruction b = my_malloc(3); is + 4:{ a } → 3:{ } 8:{ b } → 7:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are <none> +[alias] May-alias graph after instruction __retres = 0; is + 4:{ a } → 3:{ } 8:{ b } → 7:{ } [alias] May-aliases at the end of function main: <none> +[alias] May-alias graph at the end of function main: + 4:{ a } → 3:{ } 8:{ b } → 7:{ } +[alias] Summary of function main: + formals: locals: a b __retres returns: __retres state: <none> [alias] analysing function: malloc [alias] May-aliases at the end of function malloc: ⊥ +[alias] May-alias graph at the end of function malloc: + ⊥ [alias] analysing function: mblen [alias] May-aliases at the end of function mblen: ⊥ +[alias] May-alias graph at the end of function mblen: + ⊥ [alias] analysing function: mbstowcs [alias] May-aliases at the end of function mbstowcs: ⊥ +[alias] May-alias graph at the end of function mbstowcs: + ⊥ [alias] analysing function: mbtowc [alias] May-aliases at the end of function mbtowc: ⊥ +[alias] May-alias graph at the end of function mbtowc: + ⊥ [alias] analysing function: mkstemp [alias] May-aliases at the end of function mkstemp: ⊥ +[alias] May-alias graph at the end of function mkstemp: + ⊥ [alias] analysing function: mkstemps [alias] May-aliases at the end of function mkstemps: ⊥ +[alias] May-alias graph at the end of function mkstemps: + ⊥ [alias] analysing function: mrand48 [alias] May-aliases at the end of function mrand48: ⊥ +[alias] May-alias graph at the end of function mrand48: + ⊥ [alias] analysing function: my_malloc [alias] analysing instruction: int *res = (int *)0; [alias] May-aliases after instruction int *res = (int *)0; are <none> +[alias] May-alias graph after instruction int *res = (int *)0; is <empty> [alias] May-aliases at the end of function my_malloc: <none> +[alias] May-alias graph at the end of function my_malloc: + 0:{ res } → 1:{ } +[alias] Summary of function my_malloc: + formals: size locals: res returns: res state: <none> [alias] analysing function: nrand48 [alias] May-aliases at the end of function nrand48: ⊥ +[alias] May-alias graph at the end of function nrand48: + ⊥ [alias] analysing function: posix_memalign [alias] May-aliases at the end of function posix_memalign: ⊥ +[alias] May-alias graph at the end of function posix_memalign: + ⊥ [alias] analysing function: putenv [alias] May-aliases at the end of function putenv: ⊥ +[alias] May-alias graph at the end of function putenv: + ⊥ [alias] analysing function: qsort [alias] May-aliases at the end of function qsort: ⊥ +[alias] May-alias graph at the end of function qsort: + ⊥ [alias] analysing function: quick_exit [alias] May-aliases at the end of function quick_exit: ⊥ +[alias] May-alias graph at the end of function quick_exit: + ⊥ [alias] analysing function: rand [alias] May-aliases at the end of function rand: ⊥ +[alias] May-alias graph at the end of function rand: + ⊥ [alias] analysing function: random [alias] May-aliases at the end of function random: ⊥ +[alias] May-alias graph at the end of function random: + ⊥ [alias] analysing function: realloc [alias] May-aliases at the end of function realloc: ⊥ +[alias] May-alias graph at the end of function realloc: + ⊥ [alias] analysing function: reallocarray [alias] May-aliases at the end of function reallocarray: ⊥ +[alias] May-alias graph at the end of function reallocarray: + ⊥ [alias] analysing function: seed48 [alias] May-aliases at the end of function seed48: ⊥ +[alias] May-alias graph at the end of function seed48: + ⊥ [alias] analysing function: setenv [alias] May-aliases at the end of function setenv: ⊥ +[alias] May-alias graph at the end of function setenv: + ⊥ [alias] analysing function: srand [alias] May-aliases at the end of function srand: ⊥ +[alias] May-alias graph at the end of function srand: + ⊥ [alias] analysing function: srand48 [alias] May-aliases at the end of function srand48: ⊥ +[alias] May-alias graph at the end of function srand48: + ⊥ [alias] analysing function: srandom [alias] May-aliases at the end of function srandom: ⊥ +[alias] May-alias graph at the end of function srandom: + ⊥ [alias] analysing function: strtod [alias] May-aliases at the end of function strtod: ⊥ +[alias] May-alias graph at the end of function strtod: + ⊥ [alias] analysing function: strtof [alias] May-aliases at the end of function strtof: ⊥ +[alias] May-alias graph at the end of function strtof: + ⊥ [alias] analysing function: strtol [alias] May-aliases at the end of function strtol: ⊥ +[alias] May-alias graph at the end of function strtol: + ⊥ [alias] analysing function: strtold [alias] May-aliases at the end of function strtold: ⊥ +[alias] May-alias graph at the end of function strtold: + ⊥ [alias] analysing function: strtoll [alias] May-aliases at the end of function strtoll: ⊥ +[alias] May-alias graph at the end of function strtoll: + ⊥ [alias] analysing function: strtoul [alias] May-aliases at the end of function strtoul: ⊥ +[alias] May-alias graph at the end of function strtoul: + ⊥ [alias] analysing function: strtoull [alias] May-aliases at the end of function strtoull: ⊥ +[alias] May-alias graph at the end of function strtoull: + ⊥ [alias] analysing function: system [alias] May-aliases at the end of function system: ⊥ +[alias] May-alias graph at the end of function system: + ⊥ [alias] analysing function: unsetenv [alias] May-aliases at the end of function unsetenv: ⊥ +[alias] May-alias graph at the end of function unsetenv: + ⊥ [alias] analysing function: wcstombs [alias] May-aliases at the end of function wcstombs: ⊥ +[alias] May-alias graph at the end of function wcstombs: + ⊥ [alias] analysing function: wctomb [alias] May-aliases at the end of function wctomb: ⊥ +[alias] May-alias graph at the end of function wctomb: + ⊥ +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/function3.res.oracle b/src/plugins/alias/tests/basic/oracle/function3.res.oracle index b45284aa949..4acd7896168 100644 --- a/src/plugins/alias/tests/basic/oracle/function3.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/function3.res.oracle @@ -2,26 +2,56 @@ [alias] analysing function: f1 [alias] analysing instruction: int *tmp = x; [alias] May-aliases after instruction int *tmp = x; are { x; tmp } +[alias] May-alias graph after instruction int *tmp = x; is + 0:{ x; tmp } → 1:{ } [alias] analysing instruction: x = y; [alias] May-aliases after instruction x = y; are { x; y; tmp } +[alias] May-alias graph after instruction x = y; is 0:{ x; y; tmp } → 1:{ } [alias] analysing instruction: y = tmp; [alias] May-aliases after instruction y = tmp; are { x; y; tmp } +[alias] May-alias graph after instruction y = tmp; is 0:{ x; y; tmp } → 1:{ } [alias] analysing instruction: __retres = (void *)0; [alias] May-aliases after instruction __retres = (void *)0; are { x; y; tmp } +[alias] May-alias graph after instruction __retres = (void *)0; is + 0:{ x; y; tmp } → 1:{ } [alias] May-aliases at the end of function f1: { x; y; tmp } +[alias] May-alias graph at the end of function f1: + 0:{ x; y; tmp } → 1:{ } +[alias] Summary of function f1: + formals: x y locals: tmp __retres returns: __retres + state: { x; y; tmp } [alias] analysing function: main [alias] analysing instruction: int *a = (int *)0; [alias] May-aliases after instruction int *a = (int *)0; are <none> +[alias] May-alias graph after instruction int *a = (int *)0; is <empty> [alias] analysing instruction: int *b = (int *)0; [alias] May-aliases after instruction int *b = (int *)0; are <none> +[alias] May-alias graph after instruction int *b = (int *)0; is <empty> [alias] analysing instruction: int *c = (int *)0; [alias] May-aliases after instruction int *c = (int *)0; are <none> +[alias] May-alias graph after instruction int *c = (int *)0; is <empty> [alias] analysing instruction: int *d = (int *)0; [alias] May-aliases after instruction int *d = (int *)0; are <none> +[alias] May-alias graph after instruction int *d = (int *)0; is <empty> [alias] analysing instruction: f1(a,b); [alias] May-aliases after instruction f1(a,b); are { a; b } +[alias] May-alias graph after instruction f1(a,b); is + 16:{ a } → 9:{ } 18:{ b } → 9:{ } [alias] analysing instruction: f1(c,d); [alias] May-aliases after instruction f1(c,d); are { a; b } { c; d } +[alias] May-alias graph after instruction f1(c,d); is + 16:{ a } → 9:{ } 18:{ b } → 9:{ } 28:{ c } → 21:{ } + 30:{ d } → 21:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { a; b } { c; d } +[alias] May-alias graph after instruction __retres = 0; is + 16:{ a } → 9:{ } 18:{ b } → 9:{ } 28:{ c } → 21:{ } + 30:{ d } → 21:{ } [alias] May-aliases at the end of function main: { a; b } { c; d } +[alias] May-alias graph at the end of function main: + 16:{ a } → 9:{ } 18:{ b } → 9:{ } 28:{ c } → 21:{ } + 30:{ d } → 21:{ } +[alias] Summary of function main: + formals: locals: a b c d __retres returns: __retres + state: { a; b } { c; d } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/function4.res.oracle b/src/plugins/alias/tests/basic/oracle/function4.res.oracle index fb629f9683c..8dbe90ab465 100644 --- a/src/plugins/alias/tests/basic/oracle/function4.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/function4.res.oracle @@ -1,17 +1,36 @@ [kernel] Parsing function4.c (with preprocessing) [alias] analysing function: addr [alias] May-aliases at the end of function addr: <none> +[alias] May-alias graph at the end of function addr: + <empty> +[alias] Summary of function addr: + formals: x locals: returns: x state: <none> [alias] analysing function: main [alias] analysing instruction: int *a = (int *)0; [alias] May-aliases after instruction int *a = (int *)0; are <none> +[alias] May-alias graph after instruction int *a = (int *)0; is <empty> [alias] analysing instruction: int *b = (int *)0; [alias] May-aliases after instruction int *b = (int *)0; are <none> +[alias] May-alias graph after instruction int *b = (int *)0; is <empty> [alias] analysing instruction: int c = 0; [alias] May-aliases after instruction int c = 0; are <none> +[alias] May-alias graph after instruction int c = 0; is <empty> [alias] analysing instruction: a = addr(& c); [alias] May-aliases after instruction a = addr(& c); are <none> +[alias] May-alias graph after instruction a = addr(& c); is + 4:{ a } → 3:{ c } 7:{ } → 3:{ c } [alias] analysing instruction: b = & c; [alias] May-aliases after instruction b = & c; are { a; b } +[alias] May-alias graph after instruction b = & c; is + 4:{ a } → 9:{ c } 7:{ } → 9:{ c } 8:{ b } → 9:{ c } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { a; b } +[alias] May-alias graph after instruction __retres = 0; is + 4:{ a } → 9:{ c } 7:{ } → 9:{ c } 8:{ b } → 9:{ c } [alias] May-aliases at the end of function main: { a; b } +[alias] May-alias graph at the end of function main: + 4:{ a } → 9:{ c } 7:{ } → 9:{ c } 8:{ b } → 9:{ c } +[alias] Summary of function main: + formals: locals: a→{ c } b→{ c } c __retres + returns: __retres state: { a; b } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/function5.res.oracle b/src/plugins/alias/tests/basic/oracle/function5.res.oracle index 53362c373d1..c7d33151e1a 100644 --- a/src/plugins/alias/tests/basic/oracle/function5.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/function5.res.oracle @@ -2,20 +2,43 @@ [alias] analysing function: choice [alias] analysing instruction: int c = 0; [alias] May-aliases after instruction int c = 0; are <none> +[alias] May-alias graph after instruction int c = 0; is <empty> [alias] analysing instruction: __retres = x; [alias] May-aliases after instruction __retres = x; are { x; __retres } +[alias] May-alias graph after instruction __retres = x; is + 0:{ x; __retres } → 1:{ } [alias] analysing instruction: __retres = y; [alias] May-aliases after instruction __retres = y; are { y; __retres } +[alias] May-alias graph after instruction __retres = y; is + 4:{ y; __retres } → 5:{ } [alias] May-aliases at the end of function choice: { x; y; __retres } +[alias] May-alias graph at the end of function choice: + 0:{ x; y; __retres } → 1:{ } +[alias] Summary of function choice: + formals: x y locals: c __retres returns: __retres + state: { x; y; __retres } [alias] analysing function: main [alias] analysing instruction: int *a = (int *)0; [alias] May-aliases after instruction int *a = (int *)0; are <none> +[alias] May-alias graph after instruction int *a = (int *)0; is <empty> [alias] analysing instruction: int *b = (int *)0; [alias] May-aliases after instruction int *b = (int *)0; are <none> +[alias] May-alias graph after instruction int *b = (int *)0; is <empty> [alias] analysing instruction: int *c = (int *)0; [alias] May-aliases after instruction int *c = (int *)0; are <none> +[alias] May-alias graph after instruction int *c = (int *)0; is <empty> [alias] analysing instruction: c = choice(a,b); [alias] May-aliases after instruction c = choice(a,b); are { a; b; c } +[alias] May-alias graph after instruction c = choice(a,b); is + 10:{ c } → 9:{ } 12:{ a } → 9:{ } 14:{ b } → 9:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { a; b; c } +[alias] May-alias graph after instruction __retres = 0; is + 10:{ c } → 9:{ } 12:{ a } → 9:{ } 14:{ b } → 9:{ } [alias] May-aliases at the end of function main: { a; b; c } +[alias] May-alias graph at the end of function main: + 10:{ c } → 9:{ } 12:{ a } → 9:{ } 14:{ b } → 9:{ } +[alias] Summary of function main: + formals: locals: a b c __retres returns: __retres + state: { a; b; c } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/function6.res.oracle b/src/plugins/alias/tests/basic/oracle/function6.res.oracle index 4d8f8fa4a01..74f1dd62b95 100644 --- a/src/plugins/alias/tests/basic/oracle/function6.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/function6.res.oracle @@ -2,30 +2,54 @@ [alias] analysing function: main [alias] analysing instruction: int *a = (int *)0; [alias] May-aliases after instruction int *a = (int *)0; are <none> +[alias] May-alias graph after instruction int *a = (int *)0; is <empty> [alias] analysing instruction: int *b = (int *)0; [alias] May-aliases after instruction int *b = (int *)0; are <none> +[alias] May-alias graph after instruction int *b = (int *)0; is <empty> [alias] analysing instruction: int *c = (int *)0; [alias] May-aliases after instruction int *c = (int *)0; are <none> +[alias] May-alias graph after instruction int *c = (int *)0; is <empty> [alias] analysing instruction: int *d = (int *)0; [alias] May-aliases after instruction int *d = (int *)0; are <none> +[alias] May-alias graph after instruction int *d = (int *)0; is <empty> [alias] analysing instruction: swap(a,b); [alias] analysing function: swap [alias] analysing instruction: int z = 0; [alias] May-aliases after instruction int z = 0; are <none> +[alias] May-alias graph after instruction int z = 0; is <empty> [alias] analysing instruction: z = *x; [alias] May-aliases after instruction z = *x; are <none> +[alias] May-alias graph after instruction z = *x; is <empty> [alias] analysing instruction: *x = *y; [alias] May-aliases after instruction *x = *y; are <none> +[alias] May-alias graph after instruction *x = *y; is <empty> [alias] analysing instruction: *y = z; [alias] May-aliases after instruction *y = z; are <none> +[alias] May-alias graph after instruction *y = z; is <empty> [alias] May-aliases at the end of function swap: <none> +[alias] May-alias graph at the end of function swap: + <empty> +[alias] Summary of function swap: [alias] May-aliases after instruction swap(a,b); are <none> +[alias] May-alias graph after instruction swap(a,b); is <empty> [alias] analysing instruction: swap(c,d); [alias] May-aliases after instruction swap(c,d); are <none> +[alias] May-alias graph after instruction swap(c,d); is <empty> [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are <none> +[alias] May-alias graph after instruction __retres = 0; is <empty> [alias] May-aliases at the end of function main: <none> +[alias] May-alias graph at the end of function main: + <empty> +[alias] Summary of function main: + formals: locals: a b c d __retres returns: __retres + state: <none> [alias] analysing function: swap [alias] analysing instruction: int z = 0; [alias] May-aliases after instruction int z = 0; are <none> +[alias] May-alias graph after instruction int z = 0; is <empty> [alias] May-aliases at the end of function swap: <none> +[alias] May-alias graph at the end of function swap: + <empty> +[alias] Summary of function swap: +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/globctr.res.oracle b/src/plugins/alias/tests/basic/oracle/globctr.res.oracle index 64f2826db29..e5df545b132 100644 --- a/src/plugins/alias/tests/basic/oracle/globctr.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/globctr.res.oracle @@ -2,18 +2,33 @@ [alias] analysing function: f [alias] analysing instruction: int y = 0; [alias] May-aliases after instruction int y = 0; are <none> +[alias] May-alias graph after instruction int y = 0; is <empty> [alias] analysing instruction: *x = y; [alias] May-aliases after instruction *x = y; are <none> +[alias] May-alias graph after instruction *x = y; is <empty> [alias] May-aliases at the end of function f: <none> +[alias] May-alias graph at the end of function f: + <empty> +[alias] Summary of function f: [alias] analysing function: main [alias] analysing instruction: int *a = (int *)0; [alias] May-aliases after instruction int *a = (int *)0; are <none> +[alias] May-alias graph after instruction int *a = (int *)0; is <empty> [alias] analysing instruction: int *b = (int *)0; [alias] May-aliases after instruction int *b = (int *)0; are <none> +[alias] May-alias graph after instruction int *b = (int *)0; is <empty> [alias] analysing instruction: f(a); [alias] May-aliases after instruction f(a); are <none> +[alias] May-alias graph after instruction f(a); is <empty> [alias] analysing instruction: f(b); [alias] May-aliases after instruction f(b); are <none> +[alias] May-alias graph after instruction f(b); is <empty> [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are <none> +[alias] May-alias graph after instruction __retres = 0; is <empty> [alias] May-aliases at the end of function main: <none> +[alias] May-alias graph at the end of function main: + <empty> +[alias] Summary of function main: + formals: locals: a b __retres returns: __retres state: <none> +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/loop.res.oracle b/src/plugins/alias/tests/basic/oracle/loop.res.oracle index 9ef827f6daf..3bc56d48778 100644 --- a/src/plugins/alias/tests/basic/oracle/loop.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/loop.res.oracle @@ -2,18 +2,37 @@ [alias] analysing function: main [alias] analysing instruction: int l[1] = {0}; [alias] May-aliases after instruction int l[1] = {0}; are <none> +[alias] May-alias graph after instruction int l[1] = {0}; is <empty> [alias] analysing instruction: int *n_0 = & l[1]; [alias] May-aliases after instruction int *n_0 = & l[1]; are <none> +[alias] May-alias graph after instruction int *n_0 = & l[1]; is + 0:{ n_0 } → 1:{ l[0..] } [alias] analysing instruction: n_0 = & l[1] + 0; [alias] May-aliases after instruction n_0 = & l[1] + 0; are <none> +[alias] May-alias graph after instruction n_0 = & l[1] + 0; is + 0:{ n_0 } → 1:{ l[0..] } [alias] analysing instruction: int w = 0; [alias] May-aliases after instruction int w = 0; are <none> +[alias] May-alias graph after instruction int w = 0; is + 0:{ n_0 } → 1:{ l[0..] } [alias] analysing instruction: l[0] = *(& l[1] + 0); [alias] May-aliases after instruction l[0] = *(& l[1] + 0); are <none> +[alias] May-alias graph after instruction l[0] = *(& l[1] + 0); is + 0:{ n_0 } → 1:{ l[0..] } [alias] analysing instruction: int l[1] = {0}; [alias] May-aliases after instruction int l[1] = {0}; are <none> +[alias] May-alias graph after instruction int l[1] = {0}; is + 0:{ n_0 } → 1:{ l[0..] } [alias] analysing instruction: int *n_0 = & l[1]; [alias] May-aliases after instruction int *n_0 = & l[1]; are <none> +[alias] May-alias graph after instruction int *n_0 = & l[1]; is + 0:{ n_0 } → 1:{ l[0..] } [alias:no-return] loop.c:4: Warning: function main does not return; analysis may be unsound [alias] May-aliases at the end of function main: <none> +[alias] May-alias graph at the end of function main: + <empty> +[alias] Summary of function main: + formals: locals: l n_0 w __retres returns: __retres + state: <none> +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/steensgaard.res.oracle b/src/plugins/alias/tests/basic/oracle/steensgaard.res.oracle index fdb1f8f1ce3..fd9b99fe183 100644 --- a/src/plugins/alias/tests/basic/oracle/steensgaard.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/steensgaard.res.oracle @@ -2,16 +2,40 @@ [alias] analysing function: main [alias] analysing instruction: a = & x; [alias] May-aliases after instruction a = & x; are <none> +[alias] May-alias graph after instruction a = & x; is 0:{ a } → 1:{ x } [alias] analysing instruction: b = & y; [alias] May-aliases after instruction b = & y; are { *b; y } +[alias] May-alias graph after instruction b = & y; is + 0:{ a } → 1:{ x } 4:{ b } → 5:{ y } 5:{ y } → 7:{ } [alias] analysing instruction: y = & z; [alias] May-aliases after instruction y = & z; are { *b; y } +[alias] May-alias graph after instruction y = & z; is + 0:{ a } → 1:{ x } 4:{ b } → 5:{ y } 5:{ y } → 7:{ z } [alias] analysing instruction: y = & x; [alias] May-aliases after instruction y = & x; are { *b; a; y } +[alias] May-alias graph after instruction y = & x; is + 0:{ a } → 7:{ x } 4:{ b } → 5:{ y } 5:{ y } → 7:{ x } [alias] analysing instruction: c = & y; [alias] May-aliases after instruction c = & y; are { *b; *c; a; y } { b; c } +[alias] May-alias graph after instruction c = & y; is + 0:{ a } → 1:{ x; z } 4:{ b } → 13:{ y } 12:{ c } → 13:{ y } + 13:{ y } → 1:{ x; z } [alias] analysing instruction: *y = 4; [alias] May-aliases after instruction *y = 4; are { *b; *c; a; y } { b; c } +[alias] May-alias graph after instruction *y = 4; is + 0:{ a } → 1:{ x; z } 4:{ b } → 13:{ y } 12:{ c } → 13:{ y } + 13:{ y } → 1:{ x; z } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { *b; *c; a; y } { b; c } +[alias] May-alias graph after instruction __retres = 0; is + 0:{ a } → 1:{ x; z } 4:{ b } → 13:{ y } 12:{ c } → 13:{ y } + 13:{ y } → 1:{ x; z } [alias] May-aliases at the end of function main: { *b; *c; a; y } { b; c } +[alias] May-alias graph at the end of function main: + 0:{ a } → 1:{ x; z } 4:{ b } → 13:{ y } 12:{ c } → 13:{ y } + 13:{ y } → 1:{ x; z } +[alias] Summary of function main: + formals: + locals: a→{ x; z } b→{ y } c→{ y } y→{ x; z } x z p __retres + returns: __retres state: { *b; *c; a; y } { b; c } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/switch1.res.oracle b/src/plugins/alias/tests/basic/oracle/switch1.res.oracle index 1d3c1881fa9..5d4e7565c29 100644 --- a/src/plugins/alias/tests/basic/oracle/switch1.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/switch1.res.oracle @@ -2,18 +2,35 @@ [alias] analysing function: main [alias] analysing instruction: int *a = (int *)0; [alias] May-aliases after instruction int *a = (int *)0; are <none> +[alias] May-alias graph after instruction int *a = (int *)0; is <empty> [alias] analysing instruction: int *b = (int *)0; [alias] May-aliases after instruction int *b = (int *)0; are <none> +[alias] May-alias graph after instruction int *b = (int *)0; is <empty> [alias] analysing instruction: int *c = (int *)0; [alias] May-aliases after instruction int *c = (int *)0; are <none> +[alias] May-alias graph after instruction int *c = (int *)0; is <empty> [alias] analysing instruction: int *d = (int *)0; [alias] May-aliases after instruction int *d = (int *)0; are <none> +[alias] May-alias graph after instruction int *d = (int *)0; is <empty> [alias] analysing instruction: int e = 0; [alias] May-aliases after instruction int e = 0; are <none> +[alias] May-alias graph after instruction int e = 0; is <empty> [alias] analysing instruction: case 1: a = d; [alias] May-aliases after instruction case 1: a = d; are { a; d } +[alias] May-alias graph after instruction case 1: a = d; is + 0:{ a; d } → 1:{ } [alias] analysing instruction: case 2: b = d; [alias] May-aliases after instruction case 2: b = d; are { b; d } +[alias] May-alias graph after instruction case 2: b = d; is + 4:{ b; d } → 5:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { a; b; d } +[alias] May-alias graph after instruction __retres = 0; is + 0:{ a; b; d } → 1:{ } [alias] May-aliases at the end of function main: { a; b; d } +[alias] May-alias graph at the end of function main: + 0:{ a; b; d } → 1:{ } +[alias] Summary of function main: + formals: locals: a b c d e __retres returns: __retres + state: { a; b; d } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/switch2.res.oracle b/src/plugins/alias/tests/basic/oracle/switch2.res.oracle index 8097b1a0db5..35c8cb7b5d7 100644 --- a/src/plugins/alias/tests/basic/oracle/switch2.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/switch2.res.oracle @@ -2,20 +2,39 @@ [alias] analysing function: main [alias] analysing instruction: int *a = (int *)0; [alias] May-aliases after instruction int *a = (int *)0; are <none> +[alias] May-alias graph after instruction int *a = (int *)0; is <empty> [alias] analysing instruction: int *b = (int *)0; [alias] May-aliases after instruction int *b = (int *)0; are <none> +[alias] May-alias graph after instruction int *b = (int *)0; is <empty> [alias] analysing instruction: int *c = (int *)0; [alias] May-aliases after instruction int *c = (int *)0; are <none> +[alias] May-alias graph after instruction int *c = (int *)0; is <empty> [alias] analysing instruction: int *d = (int *)0; [alias] May-aliases after instruction int *d = (int *)0; are <none> +[alias] May-alias graph after instruction int *d = (int *)0; is <empty> [alias] analysing instruction: int e = 0; [alias] May-aliases after instruction int e = 0; are <none> +[alias] May-alias graph after instruction int e = 0; is <empty> [alias] analysing instruction: case 1: a = d; [alias] May-aliases after instruction case 1: a = d; are { a; d } +[alias] May-alias graph after instruction case 1: a = d; is + 0:{ a; d } → 1:{ } [alias] analysing instruction: case 2: b = d; [alias] May-aliases after instruction case 2: b = d; are { b; d } +[alias] May-alias graph after instruction case 2: b = d; is + 4:{ b; d } → 5:{ } [alias] analysing instruction: default: c = d; [alias] May-aliases after instruction default: c = d; are { c; d } +[alias] May-alias graph after instruction default: c = d; is + 8:{ c; d } → 9:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { a; b; c; d } +[alias] May-alias graph after instruction __retres = 0; is + 0:{ a; b; c; d } → 1:{ } [alias] May-aliases at the end of function main: { a; b; c; d } +[alias] May-alias graph at the end of function main: + 0:{ a; b; c; d } → 1:{ } +[alias] Summary of function main: + formals: locals: a b c d e __retres returns: __retres + state: { a; b; c; d } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/while_for1.res.oracle b/src/plugins/alias/tests/basic/oracle/while_for1.res.oracle index 228274eef6f..b79b50e7195 100644 --- a/src/plugins/alias/tests/basic/oracle/while_for1.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/while_for1.res.oracle @@ -1,127 +1,252 @@ [kernel] Parsing while_for1.c (with preprocessing) [alias] analysing function: _Exit [alias] May-aliases at the end of function _Exit: ⊥ +[alias] May-alias graph at the end of function _Exit: + ⊥ [alias] analysing function: abort [alias] May-aliases at the end of function abort: ⊥ +[alias] May-alias graph at the end of function abort: + ⊥ [alias] analysing function: abs [alias] May-aliases at the end of function abs: ⊥ +[alias] May-alias graph at the end of function abs: + ⊥ [alias] analysing function: at_quick_exit [alias] May-aliases at the end of function at_quick_exit: ⊥ +[alias] May-alias graph at the end of function at_quick_exit: + ⊥ [alias] analysing function: atexit [alias] May-aliases at the end of function atexit: ⊥ +[alias] May-alias graph at the end of function atexit: + ⊥ [alias] analysing function: atof [alias] May-aliases at the end of function atof: ⊥ +[alias] May-alias graph at the end of function atof: + ⊥ [alias] analysing function: atoi [alias] May-aliases at the end of function atoi: ⊥ +[alias] May-alias graph at the end of function atoi: + ⊥ [alias] analysing function: atol [alias] May-aliases at the end of function atol: ⊥ +[alias] May-alias graph at the end of function atol: + ⊥ [alias] analysing function: atoll [alias] May-aliases at the end of function atoll: ⊥ +[alias] May-alias graph at the end of function atoll: + ⊥ [alias] analysing function: bsearch [alias] May-aliases at the end of function bsearch: ⊥ +[alias] May-alias graph at the end of function bsearch: + ⊥ [alias] analysing function: calloc [alias] May-aliases at the end of function calloc: ⊥ +[alias] May-alias graph at the end of function calloc: + ⊥ [alias] analysing function: div [alias] May-aliases at the end of function div: ⊥ +[alias] May-alias graph at the end of function div: + ⊥ [alias] analysing function: drand48 [alias] May-aliases at the end of function drand48: ⊥ +[alias] May-alias graph at the end of function drand48: + ⊥ [alias] analysing function: erand48 [alias] May-aliases at the end of function erand48: ⊥ +[alias] May-alias graph at the end of function erand48: + ⊥ [alias] analysing function: exit [alias] May-aliases at the end of function exit: ⊥ +[alias] May-alias graph at the end of function exit: + ⊥ [alias] analysing function: free [alias] May-aliases at the end of function free: ⊥ +[alias] May-alias graph at the end of function free: + ⊥ [alias] analysing function: getenv [alias] May-aliases at the end of function getenv: ⊥ +[alias] May-alias graph at the end of function getenv: + ⊥ [alias] analysing function: jrand48 [alias] May-aliases at the end of function jrand48: ⊥ +[alias] May-alias graph at the end of function jrand48: + ⊥ [alias] analysing function: labs [alias] May-aliases at the end of function labs: ⊥ +[alias] May-alias graph at the end of function labs: + ⊥ [alias] analysing function: lcong48 [alias] May-aliases at the end of function lcong48: ⊥ +[alias] May-alias graph at the end of function lcong48: + ⊥ [alias] analysing function: ldiv [alias] May-aliases at the end of function ldiv: ⊥ +[alias] May-alias graph at the end of function ldiv: + ⊥ [alias] analysing function: llabs [alias] May-aliases at the end of function llabs: ⊥ +[alias] May-alias graph at the end of function llabs: + ⊥ [alias] analysing function: lldiv [alias] May-aliases at the end of function lldiv: ⊥ +[alias] May-alias graph at the end of function lldiv: + ⊥ [alias] analysing function: lrand48 [alias] May-aliases at the end of function lrand48: ⊥ +[alias] May-alias graph at the end of function lrand48: + ⊥ [alias] analysing function: main [alias] analysing instruction: int *s = (int *)0; [alias] May-aliases after instruction int *s = (int *)0; are <none> +[alias] May-alias graph after instruction int *s = (int *)0; is <empty> [alias] analysing instruction: int idx = 0; [alias] May-aliases after instruction int idx = 0; are <none> +[alias] May-alias graph after instruction int idx = 0; is <empty> [alias] analysing instruction: s = (int *)malloc((size_t)idx); [alias] May-aliases after instruction s = (int *)malloc((size_t)idx); are <none> +[alias] May-alias graph after instruction s = (int *)malloc((size_t)idx); is + 0:{ s } → 1:{ } [alias] analysing instruction: idx ++; [alias] May-aliases after instruction idx ++; are <none> +[alias] May-alias graph after instruction idx ++; is 0:{ s } → 1:{ } [alias] analysing instruction: s = (int *)malloc((size_t)idx); [alias] May-aliases after instruction s = (int *)malloc((size_t)idx); are <none> +[alias] May-alias graph after instruction s = (int *)malloc((size_t)idx); is + 0:{ s } → 1:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are <none> +[alias] May-alias graph after instruction __retres = 0; is 0:{ s } → 1:{ } [alias] May-aliases at the end of function main: <none> +[alias] May-alias graph at the end of function main: + 0:{ s } → 1:{ } +[alias] Summary of function main: + formals: locals: s idx __retres returns: __retres state: <none> [alias] analysing function: malloc [alias] May-aliases at the end of function malloc: ⊥ +[alias] May-alias graph at the end of function malloc: + ⊥ [alias] analysing function: mblen [alias] May-aliases at the end of function mblen: ⊥ +[alias] May-alias graph at the end of function mblen: + ⊥ [alias] analysing function: mbstowcs [alias] May-aliases at the end of function mbstowcs: ⊥ +[alias] May-alias graph at the end of function mbstowcs: + ⊥ [alias] analysing function: mbtowc [alias] May-aliases at the end of function mbtowc: ⊥ +[alias] May-alias graph at the end of function mbtowc: + ⊥ [alias] analysing function: mkstemp [alias] May-aliases at the end of function mkstemp: ⊥ +[alias] May-alias graph at the end of function mkstemp: + ⊥ [alias] analysing function: mkstemps [alias] May-aliases at the end of function mkstemps: ⊥ +[alias] May-alias graph at the end of function mkstemps: + ⊥ [alias] analysing function: mrand48 [alias] May-aliases at the end of function mrand48: ⊥ +[alias] May-alias graph at the end of function mrand48: + ⊥ [alias] analysing function: nrand48 [alias] May-aliases at the end of function nrand48: ⊥ +[alias] May-alias graph at the end of function nrand48: + ⊥ [alias] analysing function: posix_memalign [alias] May-aliases at the end of function posix_memalign: ⊥ +[alias] May-alias graph at the end of function posix_memalign: + ⊥ [alias] analysing function: putenv [alias] May-aliases at the end of function putenv: ⊥ +[alias] May-alias graph at the end of function putenv: + ⊥ [alias] analysing function: qsort [alias] May-aliases at the end of function qsort: ⊥ +[alias] May-alias graph at the end of function qsort: + ⊥ [alias] analysing function: quick_exit [alias] May-aliases at the end of function quick_exit: ⊥ +[alias] May-alias graph at the end of function quick_exit: + ⊥ [alias] analysing function: rand [alias] May-aliases at the end of function rand: ⊥ +[alias] May-alias graph at the end of function rand: + ⊥ [alias] analysing function: random [alias] May-aliases at the end of function random: ⊥ +[alias] May-alias graph at the end of function random: + ⊥ [alias] analysing function: realloc [alias] May-aliases at the end of function realloc: ⊥ +[alias] May-alias graph at the end of function realloc: + ⊥ [alias] analysing function: reallocarray [alias] May-aliases at the end of function reallocarray: ⊥ +[alias] May-alias graph at the end of function reallocarray: + ⊥ [alias] analysing function: seed48 [alias] May-aliases at the end of function seed48: ⊥ +[alias] May-alias graph at the end of function seed48: + ⊥ [alias] analysing function: setenv [alias] May-aliases at the end of function setenv: ⊥ +[alias] May-alias graph at the end of function setenv: + ⊥ [alias] analysing function: srand [alias] May-aliases at the end of function srand: ⊥ +[alias] May-alias graph at the end of function srand: + ⊥ [alias] analysing function: srand48 [alias] May-aliases at the end of function srand48: ⊥ +[alias] May-alias graph at the end of function srand48: + ⊥ [alias] analysing function: srandom [alias] May-aliases at the end of function srandom: ⊥ +[alias] May-alias graph at the end of function srandom: + ⊥ [alias] analysing function: strtod [alias] May-aliases at the end of function strtod: ⊥ +[alias] May-alias graph at the end of function strtod: + ⊥ [alias] analysing function: strtof [alias] May-aliases at the end of function strtof: ⊥ +[alias] May-alias graph at the end of function strtof: + ⊥ [alias] analysing function: strtol [alias] May-aliases at the end of function strtol: ⊥ +[alias] May-alias graph at the end of function strtol: + ⊥ [alias] analysing function: strtold [alias] May-aliases at the end of function strtold: ⊥ +[alias] May-alias graph at the end of function strtold: + ⊥ [alias] analysing function: strtoll [alias] May-aliases at the end of function strtoll: ⊥ +[alias] May-alias graph at the end of function strtoll: + ⊥ [alias] analysing function: strtoul [alias] May-aliases at the end of function strtoul: ⊥ +[alias] May-alias graph at the end of function strtoul: + ⊥ [alias] analysing function: strtoull [alias] May-aliases at the end of function strtoull: ⊥ +[alias] May-alias graph at the end of function strtoull: + ⊥ [alias] analysing function: system [alias] May-aliases at the end of function system: ⊥ +[alias] May-alias graph at the end of function system: + ⊥ [alias] analysing function: unsetenv [alias] May-aliases at the end of function unsetenv: ⊥ +[alias] May-alias graph at the end of function unsetenv: + ⊥ [alias] analysing function: wcstombs [alias] May-aliases at the end of function wcstombs: ⊥ +[alias] May-alias graph at the end of function wcstombs: + ⊥ [alias] analysing function: wctomb [alias] May-aliases at the end of function wctomb: ⊥ +[alias] May-alias graph at the end of function wctomb: + ⊥ +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/while_for2.res.oracle b/src/plugins/alias/tests/basic/oracle/while_for2.res.oracle index c7c4c865fea..d6cd6b220b4 100644 --- a/src/plugins/alias/tests/basic/oracle/while_for2.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/while_for2.res.oracle @@ -2,12 +2,23 @@ [alias] analysing function: main [alias] analysing instruction: int *a = (int *)0; [alias] May-aliases after instruction int *a = (int *)0; are <none> +[alias] May-alias graph after instruction int *a = (int *)0; is <empty> [alias] analysing instruction: int *b = (int *)0; [alias] May-aliases after instruction int *b = (int *)0; are <none> +[alias] May-alias graph after instruction int *b = (int *)0; is <empty> [alias] analysing instruction: int *c = (int *)0; [alias] May-aliases after instruction int *c = (int *)0; are <none> +[alias] May-alias graph after instruction int *c = (int *)0; is <empty> [alias] analysing instruction: a = b; [alias] May-aliases after instruction a = b; are { a; b } +[alias] May-alias graph after instruction a = b; is 0:{ a; b } → 1:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { a; b } +[alias] May-alias graph after instruction __retres = 0; is 0:{ a; b } → 1:{ } [alias] May-aliases at the end of function main: { a; b } +[alias] May-alias graph at the end of function main: + 0:{ a; b } → 1:{ } +[alias] Summary of function main: + formals: locals: a b c __retres returns: __retres + state: { a; b } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/oracle/while_for3.res.oracle b/src/plugins/alias/tests/basic/oracle/while_for3.res.oracle index 40720eb3def..24560b86f6e 100644 --- a/src/plugins/alias/tests/basic/oracle/while_for3.res.oracle +++ b/src/plugins/alias/tests/basic/oracle/while_for3.res.oracle @@ -2,18 +2,32 @@ [alias] analysing function: main [alias] analysing instruction: int *a = (int *)0; [alias] May-aliases after instruction int *a = (int *)0; are <none> +[alias] May-alias graph after instruction int *a = (int *)0; is <empty> [alias] analysing instruction: int *b = (int *)0; [alias] May-aliases after instruction int *b = (int *)0; are <none> +[alias] May-alias graph after instruction int *b = (int *)0; is <empty> [alias] analysing instruction: int *c = (int *)0; [alias] May-aliases after instruction int *c = (int *)0; are <none> +[alias] May-alias graph after instruction int *c = (int *)0; is <empty> [alias] analysing instruction: int i = 0; [alias] May-aliases after instruction int i = 0; are <none> +[alias] May-alias graph after instruction int i = 0; is <empty> [alias] analysing instruction: a = b; [alias] May-aliases after instruction a = b; are { a; b } +[alias] May-alias graph after instruction a = b; is 0:{ a; b } → 1:{ } [alias] analysing instruction: __Cont: i ++; [alias] May-aliases after instruction __Cont: i ++; are { a; b } +[alias] May-alias graph after instruction __Cont: i ++; is 0:{ a; b } → 1:{ } [alias] analysing instruction: a = b; [alias] May-aliases after instruction a = b; are { a; b } +[alias] May-alias graph after instruction a = b; is 0:{ a; b } → 1:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { a; b } +[alias] May-alias graph after instruction __retres = 0; is 0:{ a; b } → 1:{ } [alias] May-aliases at the end of function main: { a; b } +[alias] May-alias graph at the end of function main: + 0:{ a; b } → 1:{ } +[alias] Summary of function main: + formals: locals: a b c i __retres returns: __retres + state: { a; b } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/fixed_bugs/oracle/empty_nodes.res.oracle b/src/plugins/alias/tests/fixed_bugs/oracle/empty_nodes.res.oracle index 3f911591f73..443ae47d142 100644 --- a/src/plugins/alias/tests/fixed_bugs/oracle/empty_nodes.res.oracle +++ b/src/plugins/alias/tests/fixed_bugs/oracle/empty_nodes.res.oracle @@ -2,13 +2,34 @@ [alias] analysing function: f [alias] analysing instruction: *y = t + (*y - *x); [alias] May-aliases after instruction *y = t + (*y - *x); are { *y; t } +[alias] May-alias graph after instruction *y = t + (*y - *x); is + 0:{ y } → 1:{ *y; t } 1:{ *y; t } → 3:{ } [alias] analysing instruction: *z = t + (*z - *x); [alias] May-aliases after instruction *z = t + (*z - *x); are { *y; *z; t } { y; z } +[alias] May-alias graph after instruction *z = t + (*z - *x); is + 0:{ y } → 5:{ *y; *z; t } 4:{ z } → 5:{ *y; *z; t } + 5:{ *y; *z; t } → 3:{ } [alias] analysing instruction: *x = t; [alias] May-aliases after instruction *x = t; are { *x; *y; *z; t } { x; y; z } +[alias] May-alias graph after instruction *x = t; is + 0:{ y } → 7:{ *x; *y; *z; t } 4:{ z } → 7:{ *x; *y; *z; t } + 6:{ x } → 7:{ *x; *y; *z; t } 7:{ *x; *y; *z; t } → 3:{ } [alias] May-aliases at the end of function f: { *x; *y; *z; t } { x; y; z } +[alias] May-alias graph at the end of function f: + 0:{ y } → 7:{ *x; *y; *z; t } 4:{ z } → 7:{ *x; *y; *z; t } + 6:{ x } → 7:{ *x; *y; *z; t } 7:{ *x; *y; *z; t } → 3:{ } +[alias] Summary of function f: + formals: x→{ *x; *y; *z; t } y→{ *x; *y; *z; t } z→{ *x; *y; *z; t } + locals: t returns: <none> state: { *x; *y; *z; t } { x; y; z } [alias] analysing function: g [alias] analysing instruction: f(a,a,a); [alias] May-aliases after instruction f(a,a,a); are <none> +[alias] May-alias graph after instruction f(a,a,a); is + 15:{ } → 11:{ } 16:{ a } → 15:{ } [alias] May-aliases at the end of function g: <none> +[alias] May-alias graph at the end of function g: + 15:{ } → 11:{ } 16:{ a } → 15:{ } +[alias] Summary of function g: + formals: a locals: returns: <none> state: <none> +[alias] Analysis complete diff --git a/src/plugins/alias/tests/fixed_bugs/oracle/gzip124.res.oracle b/src/plugins/alias/tests/fixed_bugs/oracle/gzip124.res.oracle index fd9878fef65..e612a89c586 100644 --- a/src/plugins/alias/tests/fixed_bugs/oracle/gzip124.res.oracle +++ b/src/plugins/alias/tests/fixed_bugs/oracle/gzip124.res.oracle @@ -2,14 +2,29 @@ [alias] analysing function: main [alias] analysing instruction: short tmp_0 = (short)0; [alias] May-aliases after instruction short tmp_0 = (short)0; are <none> +[alias] May-alias graph after instruction short tmp_0 = (short)0; is <empty> [alias] analysing instruction: *(& prev[1] + 0) = tmp_0; [alias] May-aliases after instruction *(& prev[1] + 0) = tmp_0; are <none> +[alias] May-alias graph after instruction *(& prev[1] + 0) = tmp_0; is <empty> [alias] analysing instruction: prev[0] = (short)0; [alias] May-aliases after instruction prev[0] = (short)0; are <none> +[alias] May-alias graph after instruction prev[0] = (short)0; is <empty> [alias] analysing instruction: p = & prev[1] + (int)*p; [alias] May-aliases after instruction p = & prev[1] + (int)*p; are <none> +[alias] May-alias graph after instruction p = & prev[1] + (int)*p; is + 0:{ p } → 1:{ prev[0..] } [alias] analysing instruction: p = & prev[*p]; [alias] May-aliases after instruction p = & prev[*p]; are <none> +[alias] May-alias graph after instruction p = & prev[*p]; is + 4:{ p } → 5:{ prev[0..] } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are <none> +[alias] May-alias graph after instruction __retres = 0; is + 0:{ p } → 1:{ prev[0..] } [alias] May-aliases at the end of function main: <none> +[alias] May-alias graph at the end of function main: + 0:{ p } → 1:{ prev[0..] } +[alias] Summary of function main: + formals: locals: __retres prev p→{ prev[0..] } tmp_0 + returns: __retres state: <none> +[alias] Analysis complete diff --git a/src/plugins/alias/tests/fixed_bugs/oracle/origin.res.oracle b/src/plugins/alias/tests/fixed_bugs/oracle/origin.res.oracle index 5804eca90b4..3b78e81856d 100644 --- a/src/plugins/alias/tests/fixed_bugs/oracle/origin.res.oracle +++ b/src/plugins/alias/tests/fixed_bugs/oracle/origin.res.oracle @@ -4,11 +4,22 @@ [alias] analysing function: f [alias] analysing instruction: tmp = & f; [alias] May-aliases after instruction tmp = & f; are <none> +[alias] May-alias graph after instruction tmp = & f; is 0:{ tmp } → 1:{ f } [alias] analysing instruction: tmp = (void (*)(void))*((char *)(v.t)); [alias:unsafe-cast] origin.c:8: Warning: unsafe cast from char to void (*)(void) [alias:unsafe-cast] origin.c:8: Warning: unsafe cast from int * to char * [alias] May-aliases after instruction tmp = (void (*)(void))*((char *)(v.t)); are { v.t; tmp } +[alias] May-alias graph after instruction tmp = (void (*)(void))*((char *)(v.t)); + is 0:{ v.t; tmp } → 1:{ f } [alias] analysing instruction: int g = (int)tmp; [alias] May-aliases after instruction int g = (int)tmp; are { v.t; tmp } +[alias] May-alias graph after instruction int g = (int)tmp; is + 0:{ v.t; tmp } → 1:{ f } [alias] May-aliases at the end of function f: { v.t; tmp } +[alias] May-alias graph at the end of function f: + 0:{ v.t; tmp } → 1:{ f } +[alias] Summary of function f: + formals: locals: g tmp→{ f } returns: <none> + state: { v.t; tmp } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/fixed_bugs/oracle/origin_simpl.res.oracle b/src/plugins/alias/tests/fixed_bugs/oracle/origin_simpl.res.oracle index e0e7350e8bb..cc580d0c444 100644 --- a/src/plugins/alias/tests/fixed_bugs/oracle/origin_simpl.res.oracle +++ b/src/plugins/alias/tests/fixed_bugs/oracle/origin_simpl.res.oracle @@ -4,4 +4,11 @@ [alias:unsafe-cast] origin_simpl.c:9: Warning: unsafe cast from int to void * [alias:unsafe-cast] origin_simpl.c:9: Warning: unsafe cast from char * to int * [alias] May-aliases after instruction tmp = (void *)*((int *)(t)); are { t; tmp } +[alias] May-alias graph after instruction tmp = (void *)*((int *)(t)); is + 0:{ t; tmp } → 1:{ } [alias] May-aliases at the end of function f: { t; tmp } +[alias] May-alias graph at the end of function f: + 0:{ t; tmp } → 1:{ } +[alias] Summary of function f: + formals: locals: tmp returns: <none> state: { t; tmp } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/fixed_bugs/oracle/semver.res.oracle b/src/plugins/alias/tests/fixed_bugs/oracle/semver.res.oracle index bdc3f9de654..14786295a9e 100644 --- a/src/plugins/alias/tests/fixed_bugs/oracle/semver.res.oracle +++ b/src/plugins/alias/tests/fixed_bugs/oracle/semver.res.oracle @@ -1,12 +1,22 @@ [kernel] Parsing semver.c (with preprocessing) [alias] analysing function: f [alias] May-aliases at the end of function f: <none> +[alias] May-alias graph at the end of function f: + <empty> +[alias] Summary of function f: [alias] analysing function: main [alias] analysing instruction: f((int *)*("1" + 2)); [alias:unsafe-cast] semver.c:6: Warning: unsafe cast from char to int * [alias:unsupported:addr] semver.c:6: Warning: unsupported feature: explicit pointer address: (int *)*("1" + 2); analysis may be unsound [alias] May-aliases after instruction f((int *)*("1" + 2)); are <none> +[alias] May-alias graph after instruction f((int *)*("1" + 2)); is <empty> [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are <none> +[alias] May-alias graph after instruction __retres = 0; is <empty> [alias] May-aliases at the end of function main: <none> +[alias] May-alias graph at the end of function main: + <empty> +[alias] Summary of function main: + formals: locals: __retres returns: __retres state: <none> +[alias] Analysis complete diff --git a/src/plugins/alias/tests/fixed_bugs/oracle/tkn-2.res.oracle b/src/plugins/alias/tests/fixed_bugs/oracle/tkn-2.res.oracle index 7843cab1557..6718bf0c370 100644 --- a/src/plugins/alias/tests/fixed_bugs/oracle/tkn-2.res.oracle +++ b/src/plugins/alias/tests/fixed_bugs/oracle/tkn-2.res.oracle @@ -4,6 +4,15 @@ [alias:unsafe-cast] tkn-2.c:6: Warning: unsafe cast from int ** to int * [alias] tkn-2.c:6: Warning: ignoring assignment of the form: a = (int *)(& a) [alias] May-aliases after instruction a = (int *)(& a); are <none> +[alias] May-alias graph after instruction a = (int *)(& a); is + 0:{ a } → 1:{ } 2:{ } → 0:{ a } [alias] analysing instruction: __retres = *a; [alias] May-aliases after instruction __retres = *a; are <none> +[alias] May-alias graph after instruction __retres = *a; is + 0:{ a } → 1:{ } 2:{ } → 0:{ a } [alias] May-aliases at the end of function main: <none> +[alias] May-alias graph at the end of function main: + 0:{ a } → 1:{ } 2:{ } → 0:{ a } +[alias] Summary of function main: + formals: locals: a __retres returns: __retres state: <none> +[alias] Analysis complete diff --git a/src/plugins/alias/tests/fixed_bugs/oracle/union_vmap.res.oracle b/src/plugins/alias/tests/fixed_bugs/oracle/union_vmap.res.oracle index 7ea35d5b5b0..901bb8dd000 100644 --- a/src/plugins/alias/tests/fixed_bugs/oracle/union_vmap.res.oracle +++ b/src/plugins/alias/tests/fixed_bugs/oracle/union_vmap.res.oracle @@ -3,19 +3,43 @@ [alias] analysing instruction: char *s2 = CPS_SplitWord((char *)"a"); [alias] analysing function: CPS_SplitWord [alias] May-aliases at the end of function CPS_SplitWord: <none> +[alias] May-alias graph at the end of function CPS_SplitWord: + <empty> +[alias] Summary of function CPS_SplitWord: + formals: line locals: returns: line state: <none> [alias:unsafe-cast] union_vmap.c:11: Warning: unsafe cast from char const * to char * [alias] May-aliases after instruction char *s2 = CPS_SplitWord((char *)"a"); are <none> +[alias] May-alias graph after instruction char *s2 = CPS_SplitWord((char *)"a"); + is 4:{ s2 } → 3:{ } [alias] analysing instruction: char *s3 = CPS_SplitWord((char *)"b"); [alias:unsafe-cast] union_vmap.c:12: Warning: unsafe cast from char const * to char * [alias] May-aliases after instruction char *s3 = CPS_SplitWord((char *)"b"); are <none> +[alias] May-alias graph after instruction char *s3 = CPS_SplitWord((char *)"b"); + is 4:{ s2 } → 3:{ } 8:{ s3 } → 7:{ } [alias] analysing instruction: *key = s3; [alias] May-aliases after instruction *key = s3; are { *key; s3 } +[alias] May-alias graph after instruction *key = s3; is + 4:{ s2 } → 3:{ } 10:{ key } → 11:{ *key; s3 } + 11:{ *key; s3 } → 7:{ } [alias] analysing instruction: *key = s2; [alias] May-aliases after instruction *key = s2; are { *key; s2 } +[alias] May-alias graph after instruction *key = s2; is + 8:{ s3 } → 7:{ } 12:{ key } → 13:{ *key; s2 } + 13:{ *key; s2 } → 3:{ } [alias] May-aliases at the end of function CPS_ParseKey: { *key; s2; s3 } +[alias] May-alias graph at the end of function CPS_ParseKey: + 4:{ *key; s2; s3 } → 3:{ } 10:{ key } → 4:{ *key; s2; s3 } +[alias] Summary of function CPS_ParseKey: + formals: locals: key→{ *key; s2; s3 } s2 s3 returns: <none> + state: { *key; s2; s3 } [alias] analysing function: CPS_SplitWord [alias] May-aliases at the end of function CPS_SplitWord: <none> +[alias] May-alias graph at the end of function CPS_SplitWord: + <empty> +[alias] Summary of function CPS_SplitWord: + formals: line locals: returns: line state: <none> +[alias] Analysis complete diff --git a/src/plugins/alias/tests/offsets/oracle/array1.res.oracle b/src/plugins/alias/tests/offsets/oracle/array1.res.oracle index d49ca85c658..c821849b395 100644 --- a/src/plugins/alias/tests/offsets/oracle/array1.res.oracle +++ b/src/plugins/alias/tests/offsets/oracle/array1.res.oracle @@ -2,16 +2,33 @@ [alias] analysing function: main [alias] analysing instruction: tab[0] = 0; [alias] May-aliases after instruction tab[0] = 0; are <none> +[alias] May-alias graph after instruction tab[0] = 0; is <empty> [alias] analysing instruction: tab[1] = 1; [alias] May-aliases after instruction tab[1] = 1; are <none> +[alias] May-alias graph after instruction tab[1] = 1; is <empty> [alias] analysing instruction: tab[2] = tab[1] + 1; [alias] May-aliases after instruction tab[2] = tab[1] + 1; are <none> +[alias] May-alias graph after instruction tab[2] = tab[1] + 1; is <empty> [alias] analysing instruction: int *x = & tab[1]; [alias] May-aliases after instruction int *x = & tab[1]; are <none> +[alias] May-alias graph after instruction int *x = & tab[1]; is + 0:{ x } → 1:{ tab[0..] } [alias] analysing instruction: int *y = & tab[2]; [alias] May-aliases after instruction int *y = & tab[2]; are { x; y } +[alias] May-alias graph after instruction int *y = & tab[2]; is + 0:{ x } → 5:{ tab[0..] } 4:{ y } → 5:{ tab[0..] } [alias] analysing instruction: tab[3] = *x + *y; [alias] May-aliases after instruction tab[3] = *x + *y; are { x; y } +[alias] May-alias graph after instruction tab[3] = *x + *y; is + 0:{ x } → 5:{ tab[0..] } 4:{ y } → 5:{ tab[0..] } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { x; y } +[alias] May-alias graph after instruction __retres = 0; is + 0:{ x } → 5:{ tab[0..] } 4:{ y } → 5:{ tab[0..] } [alias] May-aliases at the end of function main: { x; y } +[alias] May-alias graph at the end of function main: + 0:{ x } → 5:{ tab[0..] } 4:{ y } → 5:{ tab[0..] } +[alias] Summary of function main: + formals: locals: tab x→{ tab[0..] } y→{ tab[0..] } __retres + returns: __retres state: { x; y } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/offsets/oracle/array2.res.oracle b/src/plugins/alias/tests/offsets/oracle/array2.res.oracle index 69f16a022f8..bd04a4dd06d 100644 --- a/src/plugins/alias/tests/offsets/oracle/array2.res.oracle +++ b/src/plugins/alias/tests/offsets/oracle/array2.res.oracle @@ -2,12 +2,26 @@ [alias] analysing function: main [alias] analysing instruction: mat[0][0] = 0; [alias] May-aliases after instruction mat[0][0] = 0; are <none> +[alias] May-alias graph after instruction mat[0][0] = 0; is <empty> [alias] analysing instruction: mat[0][1] = 1; [alias] May-aliases after instruction mat[0][1] = 1; are <none> +[alias] May-alias graph after instruction mat[0][1] = 1; is <empty> [alias] analysing instruction: *x = mat[1]; [alias] May-aliases after instruction *x = mat[1]; are <none> +[alias] May-alias graph after instruction *x = mat[1]; is + 0:{ x } → 1:{ *x } 1:{ *x } → 2:{ mat[0..] } [alias] analysing instruction: *y = *(*(x + 0)); [alias] May-aliases after instruction *y = *(*(x + 0)); are <none> +[alias] May-alias graph after instruction *y = *(*(x + 0)); is + 0:{ x } → 1:{ *x } 1:{ *x } → 2:{ mat[0..] } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are <none> +[alias] May-alias graph after instruction __retres = 0; is + 0:{ x } → 1:{ *x } 1:{ *x } → 2:{ mat[0..] } [alias] May-aliases at the end of function main: <none> +[alias] May-alias graph at the end of function main: + 0:{ x } → 1:{ *x } 1:{ *x } → 2:{ mat[0..] } +[alias] Summary of function main: + formals: locals: mat x→{ *x } y __retres returns: __retres + state: <none> +[alias] Analysis complete diff --git a/src/plugins/alias/tests/offsets/oracle/array3.res.oracle b/src/plugins/alias/tests/offsets/oracle/array3.res.oracle index 30544c8240a..151198ba598 100644 --- a/src/plugins/alias/tests/offsets/oracle/array3.res.oracle +++ b/src/plugins/alias/tests/offsets/oracle/array3.res.oracle @@ -1,127 +1,256 @@ [kernel] Parsing array3.c (with preprocessing) [alias] analysing function: _Exit [alias] May-aliases at the end of function _Exit: ⊥ +[alias] May-alias graph at the end of function _Exit: + ⊥ [alias] analysing function: abort [alias] May-aliases at the end of function abort: ⊥ +[alias] May-alias graph at the end of function abort: + ⊥ [alias] analysing function: abs [alias] May-aliases at the end of function abs: ⊥ +[alias] May-alias graph at the end of function abs: + ⊥ [alias] analysing function: at_quick_exit [alias] May-aliases at the end of function at_quick_exit: ⊥ +[alias] May-alias graph at the end of function at_quick_exit: + ⊥ [alias] analysing function: atexit [alias] May-aliases at the end of function atexit: ⊥ +[alias] May-alias graph at the end of function atexit: + ⊥ [alias] analysing function: atof [alias] May-aliases at the end of function atof: ⊥ +[alias] May-alias graph at the end of function atof: + ⊥ [alias] analysing function: atoi [alias] May-aliases at the end of function atoi: ⊥ +[alias] May-alias graph at the end of function atoi: + ⊥ [alias] analysing function: atol [alias] May-aliases at the end of function atol: ⊥ +[alias] May-alias graph at the end of function atol: + ⊥ [alias] analysing function: atoll [alias] May-aliases at the end of function atoll: ⊥ +[alias] May-alias graph at the end of function atoll: + ⊥ [alias] analysing function: bsearch [alias] May-aliases at the end of function bsearch: ⊥ +[alias] May-alias graph at the end of function bsearch: + ⊥ [alias] analysing function: calloc [alias] May-aliases at the end of function calloc: ⊥ +[alias] May-alias graph at the end of function calloc: + ⊥ [alias] analysing function: div [alias] May-aliases at the end of function div: ⊥ +[alias] May-alias graph at the end of function div: + ⊥ [alias] analysing function: drand48 [alias] May-aliases at the end of function drand48: ⊥ +[alias] May-alias graph at the end of function drand48: + ⊥ [alias] analysing function: erand48 [alias] May-aliases at the end of function erand48: ⊥ +[alias] May-alias graph at the end of function erand48: + ⊥ [alias] analysing function: exit [alias] May-aliases at the end of function exit: ⊥ +[alias] May-alias graph at the end of function exit: + ⊥ [alias] analysing function: free [alias] May-aliases at the end of function free: ⊥ +[alias] May-alias graph at the end of function free: + ⊥ [alias] analysing function: getenv [alias] May-aliases at the end of function getenv: ⊥ +[alias] May-alias graph at the end of function getenv: + ⊥ [alias] analysing function: jrand48 [alias] May-aliases at the end of function jrand48: ⊥ +[alias] May-alias graph at the end of function jrand48: + ⊥ [alias] analysing function: labs [alias] May-aliases at the end of function labs: ⊥ +[alias] May-alias graph at the end of function labs: + ⊥ [alias] analysing function: lcong48 [alias] May-aliases at the end of function lcong48: ⊥ +[alias] May-alias graph at the end of function lcong48: + ⊥ [alias] analysing function: ldiv [alias] May-aliases at the end of function ldiv: ⊥ +[alias] May-alias graph at the end of function ldiv: + ⊥ [alias] analysing function: llabs [alias] May-aliases at the end of function llabs: ⊥ +[alias] May-alias graph at the end of function llabs: + ⊥ [alias] analysing function: lldiv [alias] May-aliases at the end of function lldiv: ⊥ +[alias] May-alias graph at the end of function lldiv: + ⊥ [alias] analysing function: lrand48 [alias] May-aliases at the end of function lrand48: ⊥ +[alias] May-alias graph at the end of function lrand48: + ⊥ [alias] analysing function: main [alias] analysing instruction: int *x = malloc((unsigned long)4 * sizeof(int)); [alias] May-aliases after instruction int *x = malloc((unsigned long)4 * sizeof(int)); are <none> +[alias] May-alias graph after instruction + int *x = malloc((unsigned long)4 * sizeof(int)); is 0:{ x } → 1:{ } [alias] analysing instruction: int *y = malloc((unsigned long)4 * sizeof(int)); [alias] May-aliases after instruction int *y = malloc((unsigned long)4 * sizeof(int)); are <none> +[alias] May-alias graph after instruction + int *y = malloc((unsigned long)4 * sizeof(int)); is + 0:{ x } → 1:{ } 2:{ y } → 3:{ } [alias] analysing instruction: x = mat[0]; [alias] May-aliases after instruction x = mat[0]; are <none> +[alias] May-alias graph after instruction x = mat[0]; is + 0:{ x } → 1:{ mat[0..] } 2:{ y } → 3:{ } [alias] analysing instruction: y = mat[1]; [alias] May-aliases after instruction y = mat[1]; are { x; y } +[alias] May-alias graph after instruction y = mat[1]; is + 0:{ x } → 3:{ mat[0..] } 2:{ y } → 3:{ mat[0..] } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { x; y } +[alias] May-alias graph after instruction __retres = 0; is + 0:{ x } → 3:{ mat[0..] } 2:{ y } → 3:{ mat[0..] } [alias] May-aliases at the end of function main: { x; y } +[alias] May-alias graph at the end of function main: + 0:{ x } → 3:{ mat[0..] } 2:{ y } → 3:{ mat[0..] } +[alias] Summary of function main: + formals: locals: mat x→{ mat[0..] } y→{ mat[0..] } __retres + returns: __retres state: { x; y } [alias] analysing function: malloc [alias] May-aliases at the end of function malloc: ⊥ +[alias] May-alias graph at the end of function malloc: + ⊥ [alias] analysing function: mblen [alias] May-aliases at the end of function mblen: ⊥ +[alias] May-alias graph at the end of function mblen: + ⊥ [alias] analysing function: mbstowcs [alias] May-aliases at the end of function mbstowcs: ⊥ +[alias] May-alias graph at the end of function mbstowcs: + ⊥ [alias] analysing function: mbtowc [alias] May-aliases at the end of function mbtowc: ⊥ +[alias] May-alias graph at the end of function mbtowc: + ⊥ [alias] analysing function: mkstemp [alias] May-aliases at the end of function mkstemp: ⊥ +[alias] May-alias graph at the end of function mkstemp: + ⊥ [alias] analysing function: mkstemps [alias] May-aliases at the end of function mkstemps: ⊥ +[alias] May-alias graph at the end of function mkstemps: + ⊥ [alias] analysing function: mrand48 [alias] May-aliases at the end of function mrand48: ⊥ +[alias] May-alias graph at the end of function mrand48: + ⊥ [alias] analysing function: nrand48 [alias] May-aliases at the end of function nrand48: ⊥ +[alias] May-alias graph at the end of function nrand48: + ⊥ [alias] analysing function: posix_memalign [alias] May-aliases at the end of function posix_memalign: ⊥ +[alias] May-alias graph at the end of function posix_memalign: + ⊥ [alias] analysing function: putenv [alias] May-aliases at the end of function putenv: ⊥ +[alias] May-alias graph at the end of function putenv: + ⊥ [alias] analysing function: qsort [alias] May-aliases at the end of function qsort: ⊥ +[alias] May-alias graph at the end of function qsort: + ⊥ [alias] analysing function: quick_exit [alias] May-aliases at the end of function quick_exit: ⊥ +[alias] May-alias graph at the end of function quick_exit: + ⊥ [alias] analysing function: rand [alias] May-aliases at the end of function rand: ⊥ +[alias] May-alias graph at the end of function rand: + ⊥ [alias] analysing function: random [alias] May-aliases at the end of function random: ⊥ +[alias] May-alias graph at the end of function random: + ⊥ [alias] analysing function: realloc [alias] May-aliases at the end of function realloc: ⊥ +[alias] May-alias graph at the end of function realloc: + ⊥ [alias] analysing function: reallocarray [alias] May-aliases at the end of function reallocarray: ⊥ +[alias] May-alias graph at the end of function reallocarray: + ⊥ [alias] analysing function: seed48 [alias] May-aliases at the end of function seed48: ⊥ +[alias] May-alias graph at the end of function seed48: + ⊥ [alias] analysing function: setenv [alias] May-aliases at the end of function setenv: ⊥ +[alias] May-alias graph at the end of function setenv: + ⊥ [alias] analysing function: srand [alias] May-aliases at the end of function srand: ⊥ +[alias] May-alias graph at the end of function srand: + ⊥ [alias] analysing function: srand48 [alias] May-aliases at the end of function srand48: ⊥ +[alias] May-alias graph at the end of function srand48: + ⊥ [alias] analysing function: srandom [alias] May-aliases at the end of function srandom: ⊥ +[alias] May-alias graph at the end of function srandom: + ⊥ [alias] analysing function: strtod [alias] May-aliases at the end of function strtod: ⊥ +[alias] May-alias graph at the end of function strtod: + ⊥ [alias] analysing function: strtof [alias] May-aliases at the end of function strtof: ⊥ +[alias] May-alias graph at the end of function strtof: + ⊥ [alias] analysing function: strtol [alias] May-aliases at the end of function strtol: ⊥ +[alias] May-alias graph at the end of function strtol: + ⊥ [alias] analysing function: strtold [alias] May-aliases at the end of function strtold: ⊥ +[alias] May-alias graph at the end of function strtold: + ⊥ [alias] analysing function: strtoll [alias] May-aliases at the end of function strtoll: ⊥ +[alias] May-alias graph at the end of function strtoll: + ⊥ [alias] analysing function: strtoul [alias] May-aliases at the end of function strtoul: ⊥ +[alias] May-alias graph at the end of function strtoul: + ⊥ [alias] analysing function: strtoull [alias] May-aliases at the end of function strtoull: ⊥ +[alias] May-alias graph at the end of function strtoull: + ⊥ [alias] analysing function: system [alias] May-aliases at the end of function system: ⊥ +[alias] May-alias graph at the end of function system: + ⊥ [alias] analysing function: unsetenv [alias] May-aliases at the end of function unsetenv: ⊥ +[alias] May-alias graph at the end of function unsetenv: + ⊥ [alias] analysing function: wcstombs [alias] May-aliases at the end of function wcstombs: ⊥ +[alias] May-alias graph at the end of function wcstombs: + ⊥ [alias] analysing function: wctomb [alias] May-aliases at the end of function wctomb: ⊥ +[alias] May-alias graph at the end of function wctomb: + ⊥ +[alias] Analysis complete diff --git a/src/plugins/alias/tests/offsets/oracle/collapse1.res.oracle b/src/plugins/alias/tests/offsets/oracle/collapse1.res.oracle index 9b588f2f8f2..e4249a441ad 100644 --- a/src/plugins/alias/tests/offsets/oracle/collapse1.res.oracle +++ b/src/plugins/alias/tests/offsets/oracle/collapse1.res.oracle @@ -2,18 +2,32 @@ [alias] analysing function: main [alias] analysing instruction: tab[0] = 0; [alias] May-aliases after instruction tab[0] = 0; are <none> +[alias] May-alias graph after instruction tab[0] = 0; is <empty> [alias] analysing instruction: tab[1] = 1; [alias] May-aliases after instruction tab[1] = 1; are <none> +[alias] May-alias graph after instruction tab[1] = 1; is <empty> [alias] analysing instruction: tab[2] = tab[1] + 1; [alias] May-aliases after instruction tab[2] = tab[1] + 1; are <none> +[alias] May-alias graph after instruction tab[2] = tab[1] + 1; is <empty> [alias] analysing instruction: int x = 0; [alias] May-aliases after instruction int x = 0; are <none> +[alias] May-alias graph after instruction int x = 0; is <empty> [alias] analysing instruction: int i = 0; [alias] May-aliases after instruction int i = 0; are <none> +[alias] May-alias graph after instruction int i = 0; is <empty> [alias] analysing instruction: x = tab[i]; [alias] May-aliases after instruction x = tab[i]; are <none> +[alias] May-alias graph after instruction x = tab[i]; is <empty> [alias] analysing instruction: i ++; [alias] May-aliases after instruction i ++; are <none> +[alias] May-alias graph after instruction i ++; is <empty> [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are <none> +[alias] May-alias graph after instruction __retres = 0; is <empty> [alias] May-aliases at the end of function main: <none> +[alias] May-alias graph at the end of function main: + <empty> +[alias] Summary of function main: + formals: locals: tab x i __retres returns: __retres + state: <none> +[alias] Analysis complete diff --git a/src/plugins/alias/tests/offsets/oracle/collapse2.res.oracle b/src/plugins/alias/tests/offsets/oracle/collapse2.res.oracle index 34b8bd11975..07d8fde2b7c 100644 --- a/src/plugins/alias/tests/offsets/oracle/collapse2.res.oracle +++ b/src/plugins/alias/tests/offsets/oracle/collapse2.res.oracle @@ -2,16 +2,28 @@ [alias] analysing function: main [alias] analysing instruction: mat[0][0] = 0; [alias] May-aliases after instruction mat[0][0] = 0; are <none> +[alias] May-alias graph after instruction mat[0][0] = 0; is <empty> [alias] analysing instruction: mat[0][1] = 1; [alias] May-aliases after instruction mat[0][1] = 1; are <none> +[alias] May-alias graph after instruction mat[0][1] = 1; is <empty> [alias] analysing instruction: int i = 2; [alias] May-aliases after instruction int i = 2; are <none> +[alias] May-alias graph after instruction int i = 2; is <empty> [alias] analysing instruction: mat[1][i] = i; [alias] May-aliases after instruction mat[1][i] = i; are <none> +[alias] May-alias graph after instruction mat[1][i] = i; is <empty> [alias] analysing instruction: i ++; [alias] May-aliases after instruction i ++; are <none> +[alias] May-alias graph after instruction i ++; is <empty> [alias] analysing instruction: mat[1][i] = 2; [alias] May-aliases after instruction mat[1][i] = 2; are <none> +[alias] May-alias graph after instruction mat[1][i] = 2; is <empty> [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are <none> +[alias] May-alias graph after instruction __retres = 0; is <empty> [alias] May-aliases at the end of function main: <none> +[alias] May-alias graph at the end of function main: + <empty> +[alias] Summary of function main: + formals: locals: mat i __retres returns: __retres state: <none> +[alias] Analysis complete diff --git a/src/plugins/alias/tests/offsets/oracle/collapse3.res.oracle b/src/plugins/alias/tests/offsets/oracle/collapse3.res.oracle index 4193c3f90a2..225de1d3417 100644 --- a/src/plugins/alias/tests/offsets/oracle/collapse3.res.oracle +++ b/src/plugins/alias/tests/offsets/oracle/collapse3.res.oracle @@ -2,16 +2,28 @@ [alias] analysing function: main [alias] analysing instruction: mat[0][0] = 0; [alias] May-aliases after instruction mat[0][0] = 0; are <none> +[alias] May-alias graph after instruction mat[0][0] = 0; is <empty> [alias] analysing instruction: mat[0][1] = 1; [alias] May-aliases after instruction mat[0][1] = 1; are <none> +[alias] May-alias graph after instruction mat[0][1] = 1; is <empty> [alias] analysing instruction: int i = 2; [alias] May-aliases after instruction int i = 2; are <none> +[alias] May-alias graph after instruction int i = 2; is <empty> [alias] analysing instruction: mat[i][1] = i; [alias] May-aliases after instruction mat[i][1] = i; are <none> +[alias] May-alias graph after instruction mat[i][1] = i; is <empty> [alias] analysing instruction: i ++; [alias] May-aliases after instruction i ++; are <none> +[alias] May-alias graph after instruction i ++; is <empty> [alias] analysing instruction: mat[i][1] = 2; [alias] May-aliases after instruction mat[i][1] = 2; are <none> +[alias] May-alias graph after instruction mat[i][1] = 2; is <empty> [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are <none> +[alias] May-alias graph after instruction __retres = 0; is <empty> [alias] May-aliases at the end of function main: <none> +[alias] May-alias graph at the end of function main: + <empty> +[alias] Summary of function main: + formals: locals: mat i __retres returns: __retres state: <none> +[alias] Analysis complete diff --git a/src/plugins/alias/tests/offsets/oracle/nested1.res.oracle b/src/plugins/alias/tests/offsets/oracle/nested1.res.oracle index a5a58748f91..650eac343ab 100644 --- a/src/plugins/alias/tests/offsets/oracle/nested1.res.oracle +++ b/src/plugins/alias/tests/offsets/oracle/nested1.res.oracle @@ -1,168 +1,355 @@ [kernel] Parsing nested1.c (with preprocessing) [alias] analysing function: _Exit [alias] May-aliases at the end of function _Exit: ⊥ +[alias] May-alias graph at the end of function _Exit: + ⊥ [alias] analysing function: abort [alias] May-aliases at the end of function abort: ⊥ +[alias] May-alias graph at the end of function abort: + ⊥ [alias] analysing function: abs [alias] May-aliases at the end of function abs: ⊥ +[alias] May-alias graph at the end of function abs: + ⊥ [alias] analysing function: at_quick_exit [alias] May-aliases at the end of function at_quick_exit: ⊥ +[alias] May-alias graph at the end of function at_quick_exit: + ⊥ [alias] analysing function: atexit [alias] May-aliases at the end of function atexit: ⊥ +[alias] May-alias graph at the end of function atexit: + ⊥ [alias] analysing function: atof [alias] May-aliases at the end of function atof: ⊥ +[alias] May-alias graph at the end of function atof: + ⊥ [alias] analysing function: atoi [alias] May-aliases at the end of function atoi: ⊥ +[alias] May-alias graph at the end of function atoi: + ⊥ [alias] analysing function: atol [alias] May-aliases at the end of function atol: ⊥ +[alias] May-alias graph at the end of function atol: + ⊥ [alias] analysing function: atoll [alias] May-aliases at the end of function atoll: ⊥ +[alias] May-alias graph at the end of function atoll: + ⊥ [alias] analysing function: bsearch [alias] May-aliases at the end of function bsearch: ⊥ +[alias] May-alias graph at the end of function bsearch: + ⊥ [alias] analysing function: calloc [alias] May-aliases at the end of function calloc: ⊥ +[alias] May-alias graph at the end of function calloc: + ⊥ [alias] analysing function: div [alias] May-aliases at the end of function div: ⊥ +[alias] May-alias graph at the end of function div: + ⊥ [alias] analysing function: drand48 [alias] May-aliases at the end of function drand48: ⊥ +[alias] May-alias graph at the end of function drand48: + ⊥ [alias] analysing function: erand48 [alias] May-aliases at the end of function erand48: ⊥ +[alias] May-alias graph at the end of function erand48: + ⊥ [alias] analysing function: exit [alias] May-aliases at the end of function exit: ⊥ +[alias] May-alias graph at the end of function exit: + ⊥ [alias] analysing function: free [alias] May-aliases at the end of function free: ⊥ +[alias] May-alias graph at the end of function free: + ⊥ [alias] analysing function: getenv [alias] May-aliases at the end of function getenv: ⊥ +[alias] May-alias graph at the end of function getenv: + ⊥ [alias] analysing function: jrand48 [alias] May-aliases at the end of function jrand48: ⊥ +[alias] May-alias graph at the end of function jrand48: + ⊥ [alias] analysing function: labs [alias] May-aliases at the end of function labs: ⊥ +[alias] May-alias graph at the end of function labs: + ⊥ [alias] analysing function: lcong48 [alias] May-aliases at the end of function lcong48: ⊥ +[alias] May-alias graph at the end of function lcong48: + ⊥ [alias] analysing function: ldiv [alias] May-aliases at the end of function ldiv: ⊥ +[alias] May-alias graph at the end of function ldiv: + ⊥ [alias] analysing function: llabs [alias] May-aliases at the end of function llabs: ⊥ +[alias] May-alias graph at the end of function llabs: + ⊥ [alias] analysing function: lldiv [alias] May-aliases at the end of function lldiv: ⊥ +[alias] May-alias graph at the end of function lldiv: + ⊥ [alias] analysing function: lrand48 [alias] May-aliases at the end of function lrand48: ⊥ +[alias] May-alias graph at the end of function lrand48: + ⊥ [alias] analysing function: main [alias] analysing instruction: st_1_t x1 = {.a = 0, .b = 1}; [alias] May-aliases after instruction st_1_t x1 = {.a = 0, .b = 1}; are <none> +[alias] May-alias graph after instruction st_1_t x1 = {.a = 0, .b = 1}; is + <empty> [alias] analysing instruction: st_1_t x2 = {.a = 1, .b = 2}; [alias] May-aliases after instruction st_1_t x2 = {.a = 1, .b = 2}; are <none> +[alias] May-alias graph after instruction st_1_t x2 = {.a = 1, .b = 2}; is + <empty> [alias] analysing instruction: tab_y[0] = & x1; [alias] May-aliases after instruction tab_y[0] = & x1; are <none> +[alias] May-alias graph after instruction tab_y[0] = & x1; is + 0:{ tab_y[0..] } → 1:{ x1 } [alias] analysing instruction: tab_y[1] = & x2; [alias] May-aliases after instruction tab_y[1] = & x2; are <none> +[alias] May-alias graph after instruction tab_y[1] = & x2; is + 0:{ tab_y[0..] } → 1:{ x1; x2 } [alias] analysing instruction: st_2_t *z1 = malloc(sizeof(st_2_t)); [alias] May-aliases after instruction st_2_t *z1 = malloc(sizeof(st_2_t)); are <none> +[alias] May-alias graph after instruction st_2_t *z1 = malloc(sizeof(st_2_t)); + is 0:{ tab_y[0..] } → 1:{ x1; x2 } 5:{ z1 } → 6:{ } [alias] analysing instruction: st_2_t *z2 = malloc(sizeof(st_2_t)); [alias] May-aliases after instruction st_2_t *z2 = malloc(sizeof(st_2_t)); are <none> +[alias] May-alias graph after instruction st_2_t *z2 = malloc(sizeof(st_2_t)); + is + 0:{ tab_y[0..] } → 1:{ x1; x2 } 5:{ z1 } → 6:{ } 7:{ z2 } → 8:{ } [alias] analysing instruction: st_3_t *t = malloc(sizeof(st_3_t)); [alias] May-aliases after instruction st_3_t *t = malloc(sizeof(st_3_t)); are <none> +[alias] May-alias graph after instruction st_3_t *t = malloc(sizeof(st_3_t)); is + 0:{ tab_y[0..] } → 1:{ x1; x2 } 5:{ z1 } → 6:{ } + 7:{ z2 } → 8:{ } 9:{ t } → 10:{ } [alias] analysing instruction: int *a = malloc(sizeof(int)); [alias] May-aliases after instruction int *a = malloc(sizeof(int)); are <none> +[alias] May-alias graph after instruction int *a = malloc(sizeof(int)); is + 0:{ tab_y[0..] } → 1:{ x1; x2 } 5:{ z1 } → 6:{ } + 7:{ z2 } → 8:{ } 9:{ t } → 10:{ } 11:{ a } → 12:{ } [alias] analysing instruction: int *b = malloc(sizeof(int)); [alias] May-aliases after instruction int *b = malloc(sizeof(int)); are <none> +[alias] May-alias graph after instruction int *b = malloc(sizeof(int)); is + 0:{ tab_y[0..] } → 1:{ x1; x2 } 5:{ z1 } → 6:{ } + 7:{ z2 } → 8:{ } 9:{ t } → 10:{ } 11:{ a } → 12:{ } + 13:{ b } → 14:{ } [alias] analysing instruction: *a = 0; [alias] May-aliases after instruction *a = 0; are <none> +[alias] May-alias graph after instruction *a = 0; is + 0:{ tab_y[0..] } → 1:{ x1; x2 } 5:{ z1 } → 6:{ } + 7:{ z2 } → 8:{ } 9:{ t } → 10:{ } 11:{ a } → 12:{ } + 13:{ b } → 14:{ } [alias] analysing instruction: *b = 5; [alias] May-aliases after instruction *b = 5; are <none> +[alias] May-alias graph after instruction *b = 5; is + 0:{ tab_y[0..] } → 1:{ x1; x2 } 5:{ z1 } → 6:{ } + 7:{ z2 } → 8:{ } 9:{ t } → 10:{ } 11:{ a } → 12:{ } + 13:{ b } → 14:{ } [alias] analysing instruction: z1->s = (struct struct_1_t *)tab_y[0]; [alias:unsafe-cast] nested1.c:47: Warning: unsafe cast from st_1_t * to struct struct_1_t * [alias] May-aliases after instruction z1->s = (struct struct_1_t *)tab_y[0]; are { z1->s; tab_y[0..] } +[alias] May-alias graph after instruction z1->s = (struct struct_1_t *)tab_y[0]; + is + 5:{ z1 } → 6:{ } 7:{ z2 } → 8:{ } 9:{ t } → 10:{ } + 11:{ a } → 12:{ } 13:{ b } → 14:{ } + 15:{ z1->s; tab_y[0..] } → 1:{ x1; x2 } [alias] analysing instruction: z2->s = (struct struct_1_t *)tab_y[1]; [alias:unsafe-cast] nested1.c:48: Warning: unsafe cast from st_1_t * to struct struct_1_t * [alias] May-aliases after instruction z2->s = (struct struct_1_t *)tab_y[1]; are { z1->s; z2->s; tab_y[0..] } +[alias] May-alias graph after instruction z2->s = (struct struct_1_t *)tab_y[1]; + is + 5:{ z1 } → 6:{ } 7:{ z2 } → 8:{ } 9:{ t } → 10:{ } + 11:{ a } → 12:{ } 13:{ b } → 14:{ } + 16:{ z1->s; z2->s; tab_y[0..] } → 1:{ x1; x2 } [alias] analysing instruction: z1->c = a; [alias] May-aliases after instruction z1->c = a; are { z1->s; z2->s; tab_y[0..] } { z1->c; a } +[alias] May-alias graph after instruction z1->c = a; is + 5:{ z1 } → 6:{ } 7:{ z2 } → 8:{ } 9:{ t } → 10:{ } + 13:{ b } → 14:{ } 16:{ z1->s; z2->s; tab_y[0..] } → 1:{ x1; x2 } + 17:{ z1->c; a } → 12:{ } [alias] analysing instruction: z2->c = b; [alias] May-aliases after instruction z2->c = b; are { z1->s; z2->s; tab_y[0..] } { z1->c; a } { z2->c; b } +[alias] May-alias graph after instruction z2->c = b; is + 5:{ z1 } → 6:{ } 7:{ z2 } → 8:{ } 9:{ t } → 10:{ } + 16:{ z1->s; z2->s; tab_y[0..] } → 1:{ x1; x2 } + 17:{ z1->c; a } → 12:{ } 18:{ z2->c; b } → 14:{ } [alias] analysing instruction: t->t = (struct struct_2_t *)z1; [alias:unsafe-cast] nested1.c:51: Warning: unsafe cast from st_2_t * to struct struct_2_t * [alias] May-aliases after instruction t->t = (struct struct_2_t *)z1; are { z1->s; z2->s; tab_y[0..] } { t->t; z1 } { z1->c; a } { z2->c; b } +[alias] May-alias graph after instruction t->t = (struct struct_2_t *)z1; is + 7:{ z2 } → 8:{ } 9:{ t } → 10:{ } + 16:{ z1->s; z2->s; tab_y[0..] } → 1:{ x1; x2 } + 17:{ z1->c; a } → 12:{ } 18:{ z2->c; b } → 14:{ } + 19:{ t->t; z1 } → 6:{ } [alias] analysing instruction: t->d = a; [alias] May-aliases after instruction t->d = a; are { z1->s; z2->s; tab_y[0..] } { t->t; z1 } { z1->c; t->d; a } { z2->c; b } +[alias] May-alias graph after instruction t->d = a; is + 7:{ z2 } → 8:{ } 9:{ t } → 10:{ } + 16:{ z1->s; z2->s; tab_y[0..] } → 1:{ x1; x2 } + 18:{ z2->c; b } → 14:{ } 19:{ t->t; z1 } → 6:{ } + 20:{ z1->c; t->d; a } → 12:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { z1->s; z2->s; tab_y[0..] } { t->t; z1 } { z1->c; t->d; a } { z2->c; b } +[alias] May-alias graph after instruction __retres = 0; is + 7:{ z2 } → 8:{ } 9:{ t } → 10:{ } + 16:{ z1->s; z2->s; tab_y[0..] } → 1:{ x1; x2 } + 18:{ z2->c; b } → 14:{ } 19:{ t->t; z1 } → 6:{ } + 20:{ z1->c; t->d; a } → 12:{ } [alias] May-aliases at the end of function main: { z1->s; z2->s; tab_y[0..] } { t->t; z1 } { z1->c; t->d; a } { z2->c; b } +[alias] May-alias graph at the end of function main: + 7:{ z2 } → 8:{ } 9:{ t } → 10:{ } + 16:{ z1->s; z2->s; tab_y[0..] } → 1:{ x1; x2 } + 18:{ z2->c; b } → 14:{ } 19:{ t->t; z1 } → 6:{ } + 20:{ z1->c; t->d; a } → 12:{ } +[alias] Summary of function main: + formals: locals: x1 x2 tab_y z1 z2 t a b __retres + returns: __retres + state: { z1->s; z2->s; tab_y[0..] } { t->t; z1 } { z1->c; t->d; a } + { z2->c; b } [alias] analysing function: malloc [alias] May-aliases at the end of function malloc: ⊥ +[alias] May-alias graph at the end of function malloc: + ⊥ [alias] analysing function: mblen [alias] May-aliases at the end of function mblen: ⊥ +[alias] May-alias graph at the end of function mblen: + ⊥ [alias] analysing function: mbstowcs [alias] May-aliases at the end of function mbstowcs: ⊥ +[alias] May-alias graph at the end of function mbstowcs: + ⊥ [alias] analysing function: mbtowc [alias] May-aliases at the end of function mbtowc: ⊥ +[alias] May-alias graph at the end of function mbtowc: + ⊥ [alias] analysing function: mkstemp [alias] May-aliases at the end of function mkstemp: ⊥ +[alias] May-alias graph at the end of function mkstemp: + ⊥ [alias] analysing function: mkstemps [alias] May-aliases at the end of function mkstemps: ⊥ +[alias] May-alias graph at the end of function mkstemps: + ⊥ [alias] analysing function: mrand48 [alias] May-aliases at the end of function mrand48: ⊥ +[alias] May-alias graph at the end of function mrand48: + ⊥ [alias] analysing function: nrand48 [alias] May-aliases at the end of function nrand48: ⊥ +[alias] May-alias graph at the end of function nrand48: + ⊥ [alias] analysing function: posix_memalign [alias] May-aliases at the end of function posix_memalign: ⊥ +[alias] May-alias graph at the end of function posix_memalign: + ⊥ [alias] analysing function: putenv [alias] May-aliases at the end of function putenv: ⊥ +[alias] May-alias graph at the end of function putenv: + ⊥ [alias] analysing function: qsort [alias] May-aliases at the end of function qsort: ⊥ +[alias] May-alias graph at the end of function qsort: + ⊥ [alias] analysing function: quick_exit [alias] May-aliases at the end of function quick_exit: ⊥ +[alias] May-alias graph at the end of function quick_exit: + ⊥ [alias] analysing function: rand [alias] May-aliases at the end of function rand: ⊥ +[alias] May-alias graph at the end of function rand: + ⊥ [alias] analysing function: random [alias] May-aliases at the end of function random: ⊥ +[alias] May-alias graph at the end of function random: + ⊥ [alias] analysing function: realloc [alias] May-aliases at the end of function realloc: ⊥ +[alias] May-alias graph at the end of function realloc: + ⊥ [alias] analysing function: reallocarray [alias] May-aliases at the end of function reallocarray: ⊥ +[alias] May-alias graph at the end of function reallocarray: + ⊥ [alias] analysing function: seed48 [alias] May-aliases at the end of function seed48: ⊥ +[alias] May-alias graph at the end of function seed48: + ⊥ [alias] analysing function: setenv [alias] May-aliases at the end of function setenv: ⊥ +[alias] May-alias graph at the end of function setenv: + ⊥ [alias] analysing function: srand [alias] May-aliases at the end of function srand: ⊥ +[alias] May-alias graph at the end of function srand: + ⊥ [alias] analysing function: srand48 [alias] May-aliases at the end of function srand48: ⊥ +[alias] May-alias graph at the end of function srand48: + ⊥ [alias] analysing function: srandom [alias] May-aliases at the end of function srandom: ⊥ +[alias] May-alias graph at the end of function srandom: + ⊥ [alias] analysing function: strtod [alias] May-aliases at the end of function strtod: ⊥ +[alias] May-alias graph at the end of function strtod: + ⊥ [alias] analysing function: strtof [alias] May-aliases at the end of function strtof: ⊥ +[alias] May-alias graph at the end of function strtof: + ⊥ [alias] analysing function: strtol [alias] May-aliases at the end of function strtol: ⊥ +[alias] May-alias graph at the end of function strtol: + ⊥ [alias] analysing function: strtold [alias] May-aliases at the end of function strtold: ⊥ +[alias] May-alias graph at the end of function strtold: + ⊥ [alias] analysing function: strtoll [alias] May-aliases at the end of function strtoll: ⊥ +[alias] May-alias graph at the end of function strtoll: + ⊥ [alias] analysing function: strtoul [alias] May-aliases at the end of function strtoul: ⊥ +[alias] May-alias graph at the end of function strtoul: + ⊥ [alias] analysing function: strtoull [alias] May-aliases at the end of function strtoull: ⊥ +[alias] May-alias graph at the end of function strtoull: + ⊥ [alias] analysing function: system [alias] May-aliases at the end of function system: ⊥ +[alias] May-alias graph at the end of function system: + ⊥ [alias] analysing function: unsetenv [alias] May-aliases at the end of function unsetenv: ⊥ +[alias] May-alias graph at the end of function unsetenv: + ⊥ [alias] analysing function: wcstombs [alias] May-aliases at the end of function wcstombs: ⊥ +[alias] May-alias graph at the end of function wcstombs: + ⊥ [alias] analysing function: wctomb [alias] May-aliases at the end of function wctomb: ⊥ +[alias] May-alias graph at the end of function wctomb: + ⊥ +[alias] Analysis complete diff --git a/src/plugins/alias/tests/offsets/oracle/nested2.res.oracle b/src/plugins/alias/tests/offsets/oracle/nested2.res.oracle index 3ec5a96f69e..b3fc55f974f 100644 --- a/src/plugins/alias/tests/offsets/oracle/nested2.res.oracle +++ b/src/plugins/alias/tests/offsets/oracle/nested2.res.oracle @@ -1,152 +1,303 @@ [kernel] Parsing nested2.c (with preprocessing) [alias] analysing function: _Exit [alias] May-aliases at the end of function _Exit: ⊥ +[alias] May-alias graph at the end of function _Exit: + ⊥ [alias] analysing function: abort [alias] May-aliases at the end of function abort: ⊥ +[alias] May-alias graph at the end of function abort: + ⊥ [alias] analysing function: abs [alias] May-aliases at the end of function abs: ⊥ +[alias] May-alias graph at the end of function abs: + ⊥ [alias] analysing function: at_quick_exit [alias] May-aliases at the end of function at_quick_exit: ⊥ +[alias] May-alias graph at the end of function at_quick_exit: + ⊥ [alias] analysing function: atexit [alias] May-aliases at the end of function atexit: ⊥ +[alias] May-alias graph at the end of function atexit: + ⊥ [alias] analysing function: atof [alias] May-aliases at the end of function atof: ⊥ +[alias] May-alias graph at the end of function atof: + ⊥ [alias] analysing function: atoi [alias] May-aliases at the end of function atoi: ⊥ +[alias] May-alias graph at the end of function atoi: + ⊥ [alias] analysing function: atol [alias] May-aliases at the end of function atol: ⊥ +[alias] May-alias graph at the end of function atol: + ⊥ [alias] analysing function: atoll [alias] May-aliases at the end of function atoll: ⊥ +[alias] May-alias graph at the end of function atoll: + ⊥ [alias] analysing function: bsearch [alias] May-aliases at the end of function bsearch: ⊥ +[alias] May-alias graph at the end of function bsearch: + ⊥ [alias] analysing function: calloc [alias] May-aliases at the end of function calloc: ⊥ +[alias] May-alias graph at the end of function calloc: + ⊥ [alias] analysing function: div [alias] May-aliases at the end of function div: ⊥ +[alias] May-alias graph at the end of function div: + ⊥ [alias] analysing function: drand48 [alias] May-aliases at the end of function drand48: ⊥ +[alias] May-alias graph at the end of function drand48: + ⊥ [alias] analysing function: erand48 [alias] May-aliases at the end of function erand48: ⊥ +[alias] May-alias graph at the end of function erand48: + ⊥ [alias] analysing function: exit [alias] May-aliases at the end of function exit: ⊥ +[alias] May-alias graph at the end of function exit: + ⊥ [alias] analysing function: free [alias] May-aliases at the end of function free: ⊥ +[alias] May-alias graph at the end of function free: + ⊥ [alias] analysing function: getenv [alias] May-aliases at the end of function getenv: ⊥ +[alias] May-alias graph at the end of function getenv: + ⊥ [alias] analysing function: jrand48 [alias] May-aliases at the end of function jrand48: ⊥ +[alias] May-alias graph at the end of function jrand48: + ⊥ [alias] analysing function: labs [alias] May-aliases at the end of function labs: ⊥ +[alias] May-alias graph at the end of function labs: + ⊥ [alias] analysing function: lcong48 [alias] May-aliases at the end of function lcong48: ⊥ +[alias] May-alias graph at the end of function lcong48: + ⊥ [alias] analysing function: ldiv [alias] May-aliases at the end of function ldiv: ⊥ +[alias] May-alias graph at the end of function ldiv: + ⊥ [alias] analysing function: llabs [alias] May-aliases at the end of function llabs: ⊥ +[alias] May-alias graph at the end of function llabs: + ⊥ [alias] analysing function: lldiv [alias] May-aliases at the end of function lldiv: ⊥ +[alias] May-alias graph at the end of function lldiv: + ⊥ [alias] analysing function: lrand48 [alias] May-aliases at the end of function lrand48: ⊥ +[alias] May-alias graph at the end of function lrand48: + ⊥ [alias] analysing function: main [alias] analysing instruction: st_1_t x1 = {.a = 0, .b = 1}; [alias] May-aliases after instruction st_1_t x1 = {.a = 0, .b = 1}; are <none> +[alias] May-alias graph after instruction st_1_t x1 = {.a = 0, .b = 1}; is + <empty> [alias] analysing instruction: st_1_t x2 = {.a = 2, .b = 3}; [alias] May-aliases after instruction st_1_t x2 = {.a = 2, .b = 3}; are <none> +[alias] May-alias graph after instruction st_1_t x2 = {.a = 2, .b = 3}; is + <empty> [alias] analysing instruction: st_2_t *z1 = malloc(sizeof(st_2_t)); [alias] May-aliases after instruction st_2_t *z1 = malloc(sizeof(st_2_t)); are <none> +[alias] May-alias graph after instruction st_2_t *z1 = malloc(sizeof(st_2_t)); + is 0:{ z1 } → 1:{ } [alias] analysing instruction: st_3_t *t = malloc(sizeof(st_3_t)); [alias] May-aliases after instruction st_3_t *t = malloc(sizeof(st_3_t)); are <none> +[alias] May-alias graph after instruction st_3_t *t = malloc(sizeof(st_3_t)); is + 0:{ z1 } → 1:{ } 2:{ t } → 3:{ } [alias] analysing instruction: int *a = malloc(sizeof(int)); [alias] May-aliases after instruction int *a = malloc(sizeof(int)); are <none> +[alias] May-alias graph after instruction int *a = malloc(sizeof(int)); is + 0:{ z1 } → 1:{ } 2:{ t } → 3:{ } 4:{ a } → 5:{ } [alias] analysing instruction: *a = 0; [alias] May-aliases after instruction *a = 0; are <none> +[alias] May-alias graph after instruction *a = 0; is + 0:{ z1 } → 1:{ } 2:{ t } → 3:{ } 4:{ a } → 5:{ } [alias] analysing instruction: z1->s[0] = (struct struct_1_t *)(& x1); [alias:unsafe-cast] nested2.c:42: Warning: unsafe cast from st_1_t * to struct struct_1_t * [alias] May-aliases after instruction z1->s[0] = (struct struct_1_t *)(& x1); are <none> +[alias] May-alias graph after instruction z1->s[0] = (struct struct_1_t *)(& x1); + is + 0:{ z1 } → 1:{ } 2:{ t } → 3:{ } 4:{ a } → 5:{ } + 6:{ z1->s[0..] } → 7:{ x1 } [alias] analysing instruction: z1->s[1] = (struct struct_1_t *)(& x2); [alias:unsafe-cast] nested2.c:43: Warning: unsafe cast from st_1_t * to struct struct_1_t * [alias] May-aliases after instruction z1->s[1] = (struct struct_1_t *)(& x2); are <none> +[alias] May-alias graph after instruction z1->s[1] = (struct struct_1_t *)(& x2); + is + 0:{ z1 } → 1:{ } 2:{ t } → 3:{ } 4:{ a } → 5:{ } + 6:{ z1->s[0..] } → 7:{ x1; x2 } [alias] analysing instruction: z1->c = a; [alias] May-aliases after instruction z1->c = a; are { z1->c; a } +[alias] May-alias graph after instruction z1->c = a; is + 0:{ z1 } → 1:{ } 2:{ t } → 3:{ } + 6:{ z1->s[0..] } → 7:{ x1; x2 } 11:{ z1->c; a } → 5:{ } [alias] analysing instruction: t->t = (struct struct_2_t *)z1; [alias:unsafe-cast] nested2.c:45: Warning: unsafe cast from st_2_t * to struct struct_2_t * [alias] May-aliases after instruction t->t = (struct struct_2_t *)z1; are { t->t; z1 } { z1->c; a } +[alias] May-alias graph after instruction t->t = (struct struct_2_t *)z1; is + 2:{ t } → 3:{ } 6:{ z1->s[0..] } → 7:{ x1; x2 } + 11:{ z1->c; a } → 5:{ } 12:{ t->t; z1 } → 1:{ } [alias] analysing instruction: t->d = a; [alias] May-aliases after instruction t->d = a; are { t->t; z1 } { z1->c; t->d; a } +[alias] May-alias graph after instruction t->d = a; is + 2:{ t } → 3:{ } 6:{ z1->s[0..] } → 7:{ x1; x2 } + 12:{ t->t; z1 } → 1:{ } 13:{ z1->c; t->d; a } → 5:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { t->t; z1 } { z1->c; t->d; a } +[alias] May-alias graph after instruction __retres = 0; is + 2:{ t } → 3:{ } 6:{ z1->s[0..] } → 7:{ x1; x2 } + 12:{ t->t; z1 } → 1:{ } 13:{ z1->c; t->d; a } → 5:{ } [alias] May-aliases at the end of function main: { t->t; z1 } { z1->c; t->d; a } +[alias] May-alias graph at the end of function main: + 2:{ t } → 3:{ } 6:{ z1->s[0..] } → 7:{ x1; x2 } + 12:{ t->t; z1 } → 1:{ } 13:{ z1->c; t->d; a } → 5:{ } +[alias] Summary of function main: + formals: locals: x1 x2 z1 t a __retres returns: __retres + state: { t->t; z1 } { z1->c; t->d; a } [alias] analysing function: malloc [alias] May-aliases at the end of function malloc: ⊥ +[alias] May-alias graph at the end of function malloc: + ⊥ [alias] analysing function: mblen [alias] May-aliases at the end of function mblen: ⊥ +[alias] May-alias graph at the end of function mblen: + ⊥ [alias] analysing function: mbstowcs [alias] May-aliases at the end of function mbstowcs: ⊥ +[alias] May-alias graph at the end of function mbstowcs: + ⊥ [alias] analysing function: mbtowc [alias] May-aliases at the end of function mbtowc: ⊥ +[alias] May-alias graph at the end of function mbtowc: + ⊥ [alias] analysing function: mkstemp [alias] May-aliases at the end of function mkstemp: ⊥ +[alias] May-alias graph at the end of function mkstemp: + ⊥ [alias] analysing function: mkstemps [alias] May-aliases at the end of function mkstemps: ⊥ +[alias] May-alias graph at the end of function mkstemps: + ⊥ [alias] analysing function: mrand48 [alias] May-aliases at the end of function mrand48: ⊥ +[alias] May-alias graph at the end of function mrand48: + ⊥ [alias] analysing function: nrand48 [alias] May-aliases at the end of function nrand48: ⊥ +[alias] May-alias graph at the end of function nrand48: + ⊥ [alias] analysing function: posix_memalign [alias] May-aliases at the end of function posix_memalign: ⊥ +[alias] May-alias graph at the end of function posix_memalign: + ⊥ [alias] analysing function: putenv [alias] May-aliases at the end of function putenv: ⊥ +[alias] May-alias graph at the end of function putenv: + ⊥ [alias] analysing function: qsort [alias] May-aliases at the end of function qsort: ⊥ +[alias] May-alias graph at the end of function qsort: + ⊥ [alias] analysing function: quick_exit [alias] May-aliases at the end of function quick_exit: ⊥ +[alias] May-alias graph at the end of function quick_exit: + ⊥ [alias] analysing function: rand [alias] May-aliases at the end of function rand: ⊥ +[alias] May-alias graph at the end of function rand: + ⊥ [alias] analysing function: random [alias] May-aliases at the end of function random: ⊥ +[alias] May-alias graph at the end of function random: + ⊥ [alias] analysing function: realloc [alias] May-aliases at the end of function realloc: ⊥ +[alias] May-alias graph at the end of function realloc: + ⊥ [alias] analysing function: reallocarray [alias] May-aliases at the end of function reallocarray: ⊥ +[alias] May-alias graph at the end of function reallocarray: + ⊥ [alias] analysing function: seed48 [alias] May-aliases at the end of function seed48: ⊥ +[alias] May-alias graph at the end of function seed48: + ⊥ [alias] analysing function: setenv [alias] May-aliases at the end of function setenv: ⊥ +[alias] May-alias graph at the end of function setenv: + ⊥ [alias] analysing function: srand [alias] May-aliases at the end of function srand: ⊥ +[alias] May-alias graph at the end of function srand: + ⊥ [alias] analysing function: srand48 [alias] May-aliases at the end of function srand48: ⊥ +[alias] May-alias graph at the end of function srand48: + ⊥ [alias] analysing function: srandom [alias] May-aliases at the end of function srandom: ⊥ +[alias] May-alias graph at the end of function srandom: + ⊥ [alias] analysing function: strtod [alias] May-aliases at the end of function strtod: ⊥ +[alias] May-alias graph at the end of function strtod: + ⊥ [alias] analysing function: strtof [alias] May-aliases at the end of function strtof: ⊥ +[alias] May-alias graph at the end of function strtof: + ⊥ [alias] analysing function: strtol [alias] May-aliases at the end of function strtol: ⊥ +[alias] May-alias graph at the end of function strtol: + ⊥ [alias] analysing function: strtold [alias] May-aliases at the end of function strtold: ⊥ +[alias] May-alias graph at the end of function strtold: + ⊥ [alias] analysing function: strtoll [alias] May-aliases at the end of function strtoll: ⊥ +[alias] May-alias graph at the end of function strtoll: + ⊥ [alias] analysing function: strtoul [alias] May-aliases at the end of function strtoul: ⊥ +[alias] May-alias graph at the end of function strtoul: + ⊥ [alias] analysing function: strtoull [alias] May-aliases at the end of function strtoull: ⊥ +[alias] May-alias graph at the end of function strtoull: + ⊥ [alias] analysing function: system [alias] May-aliases at the end of function system: ⊥ +[alias] May-alias graph at the end of function system: + ⊥ [alias] analysing function: unsetenv [alias] May-aliases at the end of function unsetenv: ⊥ +[alias] May-alias graph at the end of function unsetenv: + ⊥ [alias] analysing function: wcstombs [alias] May-aliases at the end of function wcstombs: ⊥ +[alias] May-alias graph at the end of function wcstombs: + ⊥ [alias] analysing function: wctomb [alias] May-aliases at the end of function wctomb: ⊥ +[alias] May-alias graph at the end of function wctomb: + ⊥ +[alias] Analysis complete diff --git a/src/plugins/alias/tests/offsets/oracle/structure1.res.oracle b/src/plugins/alias/tests/offsets/oracle/structure1.res.oracle index b325558af32..668bf60c584 100644 --- a/src/plugins/alias/tests/offsets/oracle/structure1.res.oracle +++ b/src/plugins/alias/tests/offsets/oracle/structure1.res.oracle @@ -2,18 +2,38 @@ [alias] analysing function: main [alias] analysing instruction: st_1_t x = {.a = 0, .b = 1}; [alias] May-aliases after instruction st_1_t x = {.a = 0, .b = 1}; are <none> +[alias] May-alias graph after instruction st_1_t x = {.a = 0, .b = 1}; is + <empty> [alias] analysing instruction: st_2_t y = {.a = 3, .c = 4}; [alias] May-aliases after instruction st_2_t y = {.a = 3, .c = 4}; are <none> +[alias] May-alias graph after instruction st_2_t y = {.a = 3, .c = 4}; is + <empty> [alias] analysing instruction: st_1_t *p_x = & x; [alias] May-aliases after instruction st_1_t *p_x = & x; are <none> +[alias] May-alias graph after instruction st_1_t *p_x = & x; is + 0:{ p_x } → 1:{ x } [alias] analysing instruction: st_2_t *p_y = & y; [alias] May-aliases after instruction st_2_t *p_y = & y; are <none> +[alias] May-alias graph after instruction st_2_t *p_y = & y; is + 0:{ p_x } → 1:{ x } 4:{ p_y } → 5:{ y } [alias] analysing instruction: p_x->a = 3; [alias] May-aliases after instruction p_x->a = 3; are <none> +[alias] May-alias graph after instruction p_x->a = 3; is + 0:{ p_x } → 1:{ x } 4:{ p_y } → 5:{ y } [alias] analysing instruction: p_x = (st_1_t *)p_y; [alias:unsafe-cast] structure1.c:28: Warning: unsafe cast from st_2_t * to st_1_t * [alias] May-aliases after instruction p_x = (st_1_t *)p_y; are { p_x; p_y } +[alias] May-alias graph after instruction p_x = (st_1_t *)p_y; is + 0:{ p_x; p_y } → 1:{ x; y } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { p_x; p_y } +[alias] May-alias graph after instruction __retres = 0; is + 0:{ p_x; p_y } → 1:{ x; y } [alias] May-aliases at the end of function main: { p_x; p_y } +[alias] May-alias graph at the end of function main: + 0:{ p_x; p_y } → 1:{ x; y } +[alias] Summary of function main: + formals: locals: x y p_x→{ x; y } p_y→{ x; y } __retres + returns: __retres state: { p_x; p_y } +[alias] Analysis complete diff --git a/src/plugins/alias/tests/offsets/oracle/structure2.res.oracle b/src/plugins/alias/tests/offsets/oracle/structure2.res.oracle index 2b2f7ecd4e5..6d772d05177 100644 --- a/src/plugins/alias/tests/offsets/oracle/structure2.res.oracle +++ b/src/plugins/alias/tests/offsets/oracle/structure2.res.oracle @@ -2,18 +2,35 @@ [alias] analysing function: main [alias] analysing instruction: st_1_t x1 = {.a = 0, .b = 1}; [alias] May-aliases after instruction st_1_t x1 = {.a = 0, .b = 1}; are <none> +[alias] May-alias graph after instruction st_1_t x1 = {.a = 0, .b = 1}; is + <empty> [alias] analysing instruction: st_1_t x2 = {.a = 1, .b = 2}; [alias] May-aliases after instruction st_1_t x2 = {.a = 1, .b = 2}; are <none> +[alias] May-alias graph after instruction st_1_t x2 = {.a = 1, .b = 2}; is + <empty> [alias] analysing instruction: st_2_t y = {.s = (struct struct_1_t *)(& x1), .c = 4}; [alias:unsafe-cast] structure2.c:21: Warning: unsafe cast from st_1_t * to struct struct_1_t * [alias] May-aliases after instruction st_2_t y = {.s = (struct struct_1_t *)(& x1), .c = 4}; are <none> +[alias] May-alias graph after instruction + st_2_t y = {.s = (struct struct_1_t *)(& x1), .c = 4}; is + 0:{ y.s } → 1:{ x1 } [alias] analysing instruction: y.s = (struct struct_1_t *)(& x2); [alias:unsafe-cast] structure2.c:23: Warning: unsafe cast from st_1_t * to struct struct_1_t * [alias] May-aliases after instruction y.s = (struct struct_1_t *)(& x2); are <none> +[alias] May-alias graph after instruction y.s = (struct struct_1_t *)(& x2); is + 0:{ y.s } → 1:{ x1; x2 } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are <none> +[alias] May-alias graph after instruction __retres = 0; is + 0:{ y.s } → 1:{ x1; x2 } [alias] May-aliases at the end of function main: <none> +[alias] May-alias graph at the end of function main: + 0:{ y.s } → 1:{ x1; x2 } +[alias] Summary of function main: + formals: locals: x1 x2 y __retres returns: __retres + state: <none> +[alias] Analysis complete diff --git a/src/plugins/alias/tests/offsets/oracle/structure3.res.oracle b/src/plugins/alias/tests/offsets/oracle/structure3.res.oracle index 7ec86d402cb..6c9609a49da 100644 --- a/src/plugins/alias/tests/offsets/oracle/structure3.res.oracle +++ b/src/plugins/alias/tests/offsets/oracle/structure3.res.oracle @@ -2,32 +2,61 @@ [alias] analysing function: main [alias] analysing instruction: st_1_t x1 = {.a = 0, .b = 1}; [alias] May-aliases after instruction st_1_t x1 = {.a = 0, .b = 1}; are <none> +[alias] May-alias graph after instruction st_1_t x1 = {.a = 0, .b = 1}; is + <empty> [alias] analysing instruction: st_1_t x2 = {.a = 1, .b = 2}; [alias] May-aliases after instruction st_1_t x2 = {.a = 1, .b = 2}; are <none> +[alias] May-alias graph after instruction st_1_t x2 = {.a = 1, .b = 2}; is + <empty> [alias] analysing instruction: st_2_t y1 = {.s = (struct struct_1_t *)(& x1), .c = 3}; [alias:unsafe-cast] structure3.c:31: Warning: unsafe cast from st_1_t * to struct struct_1_t * [alias] May-aliases after instruction st_2_t y1 = {.s = (struct struct_1_t *)(& x1), .c = 3}; are <none> +[alias] May-alias graph after instruction + st_2_t y1 = {.s = (struct struct_1_t *)(& x1), .c = 3}; is + 0:{ y1.s } → 1:{ x1 } [alias] analysing instruction: st_2_t y2 = {.s = (struct struct_1_t *)(& x2), .c = 4}; [alias:unsafe-cast] structure3.c:32: Warning: unsafe cast from st_1_t * to struct struct_1_t * [alias] May-aliases after instruction st_2_t y2 = {.s = (struct struct_1_t *)(& x2), .c = 4}; are <none> +[alias] May-alias graph after instruction + st_2_t y2 = {.s = (struct struct_1_t *)(& x2), .c = 4}; is + 0:{ y1.s } → 1:{ x1 } 3:{ y2.s } → 4:{ x2 } [alias] analysing instruction: st_3_t z = {.t = (struct struct_2_t *)(& y1), .d = 5}; [alias:unsafe-cast] structure3.c:33: Warning: unsafe cast from st_2_t * to struct struct_2_t * [alias] May-aliases after instruction st_3_t z = {.t = (struct struct_2_t *)(& y1), .d = 5}; are <none> +[alias] May-alias graph after instruction + st_3_t z = {.t = (struct struct_2_t *)(& y1), .d = 5}; is + 0:{ y1.s } → 1:{ x1 } 3:{ y2.s } → 4:{ x2 } 6:{ z.t } → 7:{ y1 } [alias] analysing instruction: z.t = (struct struct_2_t *)(& y2); [alias:unsafe-cast] structure3.c:35: Warning: unsafe cast from st_2_t * to struct struct_2_t * [alias] May-aliases after instruction z.t = (struct struct_2_t *)(& y2); are <none> +[alias] May-alias graph after instruction z.t = (struct struct_2_t *)(& y2); is + 0:{ y1.s } → 1:{ x1 } 3:{ y2.s } → 4:{ x2 } + 6:{ z.t } → 7:{ y1; y2 } [alias] analysing instruction: y1.c = z.d; [alias] May-aliases after instruction y1.c = z.d; are <none> +[alias] May-alias graph after instruction y1.c = z.d; is + 0:{ y1.s } → 1:{ x1 } 3:{ y2.s } → 4:{ x2 } + 6:{ z.t } → 7:{ y1; y2 } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are <none> +[alias] May-alias graph after instruction __retres = 0; is + 0:{ y1.s } → 1:{ x1 } 3:{ y2.s } → 4:{ x2 } + 6:{ z.t } → 7:{ y1; y2 } [alias] May-aliases at the end of function main: <none> +[alias] May-alias graph at the end of function main: + 0:{ y1.s } → 1:{ x1 } 3:{ y2.s } → 4:{ x2 } + 6:{ z.t } → 7:{ y1; y2 } +[alias] Summary of function main: + formals: locals: x1 x2 y1 y2 z __retres returns: __retres + state: <none> +[alias] Analysis complete diff --git a/src/plugins/alias/tests/offsets/oracle/structure4.res.oracle b/src/plugins/alias/tests/offsets/oracle/structure4.res.oracle index f3c036ea172..73a0215ca74 100644 --- a/src/plugins/alias/tests/offsets/oracle/structure4.res.oracle +++ b/src/plugins/alias/tests/offsets/oracle/structure4.res.oracle @@ -1,136 +1,270 @@ [kernel] Parsing structure4.c (with preprocessing) [alias] analysing function: _Exit [alias] May-aliases at the end of function _Exit: ⊥ +[alias] May-alias graph at the end of function _Exit: + ⊥ [alias] analysing function: abort [alias] May-aliases at the end of function abort: ⊥ +[alias] May-alias graph at the end of function abort: + ⊥ [alias] analysing function: abs [alias] May-aliases at the end of function abs: ⊥ +[alias] May-alias graph at the end of function abs: + ⊥ [alias] analysing function: at_quick_exit [alias] May-aliases at the end of function at_quick_exit: ⊥ +[alias] May-alias graph at the end of function at_quick_exit: + ⊥ [alias] analysing function: atexit [alias] May-aliases at the end of function atexit: ⊥ +[alias] May-alias graph at the end of function atexit: + ⊥ [alias] analysing function: atof [alias] May-aliases at the end of function atof: ⊥ +[alias] May-alias graph at the end of function atof: + ⊥ [alias] analysing function: atoi [alias] May-aliases at the end of function atoi: ⊥ +[alias] May-alias graph at the end of function atoi: + ⊥ [alias] analysing function: atol [alias] May-aliases at the end of function atol: ⊥ +[alias] May-alias graph at the end of function atol: + ⊥ [alias] analysing function: atoll [alias] May-aliases at the end of function atoll: ⊥ +[alias] May-alias graph at the end of function atoll: + ⊥ [alias] analysing function: bsearch [alias] May-aliases at the end of function bsearch: ⊥ +[alias] May-alias graph at the end of function bsearch: + ⊥ [alias] analysing function: calloc [alias] May-aliases at the end of function calloc: ⊥ +[alias] May-alias graph at the end of function calloc: + ⊥ [alias] analysing function: div [alias] May-aliases at the end of function div: ⊥ +[alias] May-alias graph at the end of function div: + ⊥ [alias] analysing function: drand48 [alias] May-aliases at the end of function drand48: ⊥ +[alias] May-alias graph at the end of function drand48: + ⊥ [alias] analysing function: erand48 [alias] May-aliases at the end of function erand48: ⊥ +[alias] May-alias graph at the end of function erand48: + ⊥ [alias] analysing function: exit [alias] May-aliases at the end of function exit: ⊥ +[alias] May-alias graph at the end of function exit: + ⊥ [alias] analysing function: free [alias] May-aliases at the end of function free: ⊥ +[alias] May-alias graph at the end of function free: + ⊥ [alias] analysing function: getenv [alias] May-aliases at the end of function getenv: ⊥ +[alias] May-alias graph at the end of function getenv: + ⊥ [alias] analysing function: jrand48 [alias] May-aliases at the end of function jrand48: ⊥ +[alias] May-alias graph at the end of function jrand48: + ⊥ [alias] analysing function: labs [alias] May-aliases at the end of function labs: ⊥ +[alias] May-alias graph at the end of function labs: + ⊥ [alias] analysing function: lcong48 [alias] May-aliases at the end of function lcong48: ⊥ +[alias] May-alias graph at the end of function lcong48: + ⊥ [alias] analysing function: ldiv [alias] May-aliases at the end of function ldiv: ⊥ +[alias] May-alias graph at the end of function ldiv: + ⊥ [alias] analysing function: llabs [alias] May-aliases at the end of function llabs: ⊥ +[alias] May-alias graph at the end of function llabs: + ⊥ [alias] analysing function: lldiv [alias] May-aliases at the end of function lldiv: ⊥ +[alias] May-alias graph at the end of function lldiv: + ⊥ [alias] analysing function: lrand48 [alias] May-aliases at the end of function lrand48: ⊥ +[alias] May-alias graph at the end of function lrand48: + ⊥ [alias] analysing function: main [alias] analysing instruction: st_1_t x1 = {.a = 0, .b = 1}; [alias] May-aliases after instruction st_1_t x1 = {.a = 0, .b = 1}; are <none> +[alias] May-alias graph after instruction st_1_t x1 = {.a = 0, .b = 1}; is + <empty> [alias] analysing instruction: st_1_t x2 = {.a = 1, .b = 2}; [alias] May-aliases after instruction st_1_t x2 = {.a = 1, .b = 2}; are <none> +[alias] May-alias graph after instruction st_1_t x2 = {.a = 1, .b = 2}; is + <empty> [alias] analysing instruction: st_1_t *y1 = malloc(sizeof(st_1_t)); [alias] May-aliases after instruction st_1_t *y1 = malloc(sizeof(st_1_t)); are <none> +[alias] May-alias graph after instruction st_1_t *y1 = malloc(sizeof(st_1_t)); + is 0:{ y1 } → 1:{ } [alias] analysing instruction: st_2_t *z = malloc(sizeof(st_2_t)); [alias] May-aliases after instruction st_2_t *z = malloc(sizeof(st_2_t)); are <none> +[alias] May-alias graph after instruction st_2_t *z = malloc(sizeof(st_2_t)); is + 0:{ y1 } → 1:{ } 2:{ z } → 3:{ } [alias] analysing instruction: y1 = & x1; [alias] May-aliases after instruction y1 = & x1; are <none> +[alias] May-alias graph after instruction y1 = & x1; is + 0:{ y1 } → 1:{ x1 } 2:{ z } → 3:{ } [alias] analysing instruction: z->s = (struct struct_1_t *)y1; [alias:unsafe-cast] structure4.c:37: Warning: unsafe cast from st_1_t * to struct struct_1_t * [alias] May-aliases after instruction z->s = (struct struct_1_t *)y1; are { z->s; y1 } +[alias] May-alias graph after instruction z->s = (struct struct_1_t *)y1; is + 2:{ z } → 3:{ } 6:{ z->s; y1 } → 1:{ x1 } [alias] analysing instruction: z->c = 6; [alias] May-aliases after instruction z->c = 6; are { z->s; y1 } +[alias] May-alias graph after instruction z->c = 6; is + 2:{ z } → 3:{ } 6:{ z->s; y1 } → 1:{ x1 } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { z->s; y1 } +[alias] May-alias graph after instruction __retres = 0; is + 2:{ z } → 3:{ } 6:{ z->s; y1 } → 1:{ x1 } [alias] May-aliases at the end of function main: { z->s; y1 } +[alias] May-alias graph at the end of function main: + 2:{ z } → 3:{ } 6:{ z->s; y1 } → 1:{ x1 } +[alias] Summary of function main: + formals: locals: x1 x2 y1→{ x1 } z __retres returns: __retres + state: { z->s; y1 } [alias] analysing function: malloc [alias] May-aliases at the end of function malloc: ⊥ +[alias] May-alias graph at the end of function malloc: + ⊥ [alias] analysing function: mblen [alias] May-aliases at the end of function mblen: ⊥ +[alias] May-alias graph at the end of function mblen: + ⊥ [alias] analysing function: mbstowcs [alias] May-aliases at the end of function mbstowcs: ⊥ +[alias] May-alias graph at the end of function mbstowcs: + ⊥ [alias] analysing function: mbtowc [alias] May-aliases at the end of function mbtowc: ⊥ +[alias] May-alias graph at the end of function mbtowc: + ⊥ [alias] analysing function: mkstemp [alias] May-aliases at the end of function mkstemp: ⊥ +[alias] May-alias graph at the end of function mkstemp: + ⊥ [alias] analysing function: mkstemps [alias] May-aliases at the end of function mkstemps: ⊥ +[alias] May-alias graph at the end of function mkstemps: + ⊥ [alias] analysing function: mrand48 [alias] May-aliases at the end of function mrand48: ⊥ +[alias] May-alias graph at the end of function mrand48: + ⊥ [alias] analysing function: nrand48 [alias] May-aliases at the end of function nrand48: ⊥ +[alias] May-alias graph at the end of function nrand48: + ⊥ [alias] analysing function: posix_memalign [alias] May-aliases at the end of function posix_memalign: ⊥ +[alias] May-alias graph at the end of function posix_memalign: + ⊥ [alias] analysing function: putenv [alias] May-aliases at the end of function putenv: ⊥ +[alias] May-alias graph at the end of function putenv: + ⊥ [alias] analysing function: qsort [alias] May-aliases at the end of function qsort: ⊥ +[alias] May-alias graph at the end of function qsort: + ⊥ [alias] analysing function: quick_exit [alias] May-aliases at the end of function quick_exit: ⊥ +[alias] May-alias graph at the end of function quick_exit: + ⊥ [alias] analysing function: rand [alias] May-aliases at the end of function rand: ⊥ +[alias] May-alias graph at the end of function rand: + ⊥ [alias] analysing function: random [alias] May-aliases at the end of function random: ⊥ +[alias] May-alias graph at the end of function random: + ⊥ [alias] analysing function: realloc [alias] May-aliases at the end of function realloc: ⊥ +[alias] May-alias graph at the end of function realloc: + ⊥ [alias] analysing function: reallocarray [alias] May-aliases at the end of function reallocarray: ⊥ +[alias] May-alias graph at the end of function reallocarray: + ⊥ [alias] analysing function: seed48 [alias] May-aliases at the end of function seed48: ⊥ +[alias] May-alias graph at the end of function seed48: + ⊥ [alias] analysing function: setenv [alias] May-aliases at the end of function setenv: ⊥ +[alias] May-alias graph at the end of function setenv: + ⊥ [alias] analysing function: srand [alias] May-aliases at the end of function srand: ⊥ +[alias] May-alias graph at the end of function srand: + ⊥ [alias] analysing function: srand48 [alias] May-aliases at the end of function srand48: ⊥ +[alias] May-alias graph at the end of function srand48: + ⊥ [alias] analysing function: srandom [alias] May-aliases at the end of function srandom: ⊥ +[alias] May-alias graph at the end of function srandom: + ⊥ [alias] analysing function: strtod [alias] May-aliases at the end of function strtod: ⊥ +[alias] May-alias graph at the end of function strtod: + ⊥ [alias] analysing function: strtof [alias] May-aliases at the end of function strtof: ⊥ +[alias] May-alias graph at the end of function strtof: + ⊥ [alias] analysing function: strtol [alias] May-aliases at the end of function strtol: ⊥ +[alias] May-alias graph at the end of function strtol: + ⊥ [alias] analysing function: strtold [alias] May-aliases at the end of function strtold: ⊥ +[alias] May-alias graph at the end of function strtold: + ⊥ [alias] analysing function: strtoll [alias] May-aliases at the end of function strtoll: ⊥ +[alias] May-alias graph at the end of function strtoll: + ⊥ [alias] analysing function: strtoul [alias] May-aliases at the end of function strtoul: ⊥ +[alias] May-alias graph at the end of function strtoul: + ⊥ [alias] analysing function: strtoull [alias] May-aliases at the end of function strtoull: ⊥ +[alias] May-alias graph at the end of function strtoull: + ⊥ [alias] analysing function: system [alias] May-aliases at the end of function system: ⊥ +[alias] May-alias graph at the end of function system: + ⊥ [alias] analysing function: unsetenv [alias] May-aliases at the end of function unsetenv: ⊥ +[alias] May-alias graph at the end of function unsetenv: + ⊥ [alias] analysing function: wcstombs [alias] May-aliases at the end of function wcstombs: ⊥ +[alias] May-alias graph at the end of function wcstombs: + ⊥ [alias] analysing function: wctomb [alias] May-aliases at the end of function wctomb: ⊥ +[alias] May-alias graph at the end of function wctomb: + ⊥ +[alias] Analysis complete diff --git a/src/plugins/alias/tests/offsets/oracle/structure5.res.oracle b/src/plugins/alias/tests/offsets/oracle/structure5.res.oracle index bd0be91325e..6a135db357a 100644 --- a/src/plugins/alias/tests/offsets/oracle/structure5.res.oracle +++ b/src/plugins/alias/tests/offsets/oracle/structure5.res.oracle @@ -1,153 +1,306 @@ [kernel] Parsing structure5.c (with preprocessing) [alias] analysing function: _Exit [alias] May-aliases at the end of function _Exit: ⊥ +[alias] May-alias graph at the end of function _Exit: + ⊥ [alias] analysing function: abort [alias] May-aliases at the end of function abort: ⊥ +[alias] May-alias graph at the end of function abort: + ⊥ [alias] analysing function: abs [alias] May-aliases at the end of function abs: ⊥ +[alias] May-alias graph at the end of function abs: + ⊥ [alias] analysing function: at_quick_exit [alias] May-aliases at the end of function at_quick_exit: ⊥ +[alias] May-alias graph at the end of function at_quick_exit: + ⊥ [alias] analysing function: atexit [alias] May-aliases at the end of function atexit: ⊥ +[alias] May-alias graph at the end of function atexit: + ⊥ [alias] analysing function: atof [alias] May-aliases at the end of function atof: ⊥ +[alias] May-alias graph at the end of function atof: + ⊥ [alias] analysing function: atoi [alias] May-aliases at the end of function atoi: ⊥ +[alias] May-alias graph at the end of function atoi: + ⊥ [alias] analysing function: atol [alias] May-aliases at the end of function atol: ⊥ +[alias] May-alias graph at the end of function atol: + ⊥ [alias] analysing function: atoll [alias] May-aliases at the end of function atoll: ⊥ +[alias] May-alias graph at the end of function atoll: + ⊥ [alias] analysing function: bsearch [alias] May-aliases at the end of function bsearch: ⊥ +[alias] May-alias graph at the end of function bsearch: + ⊥ [alias] analysing function: calloc [alias] May-aliases at the end of function calloc: ⊥ +[alias] May-alias graph at the end of function calloc: + ⊥ [alias] analysing function: div [alias] May-aliases at the end of function div: ⊥ +[alias] May-alias graph at the end of function div: + ⊥ [alias] analysing function: drand48 [alias] May-aliases at the end of function drand48: ⊥ +[alias] May-alias graph at the end of function drand48: + ⊥ [alias] analysing function: erand48 [alias] May-aliases at the end of function erand48: ⊥ +[alias] May-alias graph at the end of function erand48: + ⊥ [alias] analysing function: exit [alias] May-aliases at the end of function exit: ⊥ +[alias] May-alias graph at the end of function exit: + ⊥ [alias] analysing function: free [alias] May-aliases at the end of function free: ⊥ +[alias] May-alias graph at the end of function free: + ⊥ [alias] analysing function: getenv [alias] May-aliases at the end of function getenv: ⊥ +[alias] May-alias graph at the end of function getenv: + ⊥ [alias] analysing function: jrand48 [alias] May-aliases at the end of function jrand48: ⊥ +[alias] May-alias graph at the end of function jrand48: + ⊥ [alias] analysing function: labs [alias] May-aliases at the end of function labs: ⊥ +[alias] May-alias graph at the end of function labs: + ⊥ [alias] analysing function: lcong48 [alias] May-aliases at the end of function lcong48: ⊥ +[alias] May-alias graph at the end of function lcong48: + ⊥ [alias] analysing function: ldiv [alias] May-aliases at the end of function ldiv: ⊥ +[alias] May-alias graph at the end of function ldiv: + ⊥ [alias] analysing function: llabs [alias] May-aliases at the end of function llabs: ⊥ +[alias] May-alias graph at the end of function llabs: + ⊥ [alias] analysing function: lldiv [alias] May-aliases at the end of function lldiv: ⊥ +[alias] May-alias graph at the end of function lldiv: + ⊥ [alias] analysing function: lrand48 [alias] May-aliases at the end of function lrand48: ⊥ +[alias] May-alias graph at the end of function lrand48: + ⊥ [alias] analysing function: main [alias] analysing instruction: st_1_t x1 = {.a = 0, .b = 1}; [alias] May-aliases after instruction st_1_t x1 = {.a = 0, .b = 1}; are <none> +[alias] May-alias graph after instruction st_1_t x1 = {.a = 0, .b = 1}; is + <empty> [alias] analysing instruction: st_1_t x2 = {.a = 1, .b = 2}; [alias] May-aliases after instruction st_1_t x2 = {.a = 1, .b = 2}; are <none> +[alias] May-alias graph after instruction st_1_t x2 = {.a = 1, .b = 2}; is + <empty> [alias] analysing instruction: st_1_t *y1 = malloc(sizeof(st_1_t)); [alias] May-aliases after instruction st_1_t *y1 = malloc(sizeof(st_1_t)); are <none> +[alias] May-alias graph after instruction st_1_t *y1 = malloc(sizeof(st_1_t)); + is 0:{ y1 } → 1:{ } [alias] analysing instruction: st_2_t *z = malloc(sizeof(st_2_t)); [alias] May-aliases after instruction st_2_t *z = malloc(sizeof(st_2_t)); are <none> +[alias] May-alias graph after instruction st_2_t *z = malloc(sizeof(st_2_t)); is + 0:{ y1 } → 1:{ } 2:{ z } → 3:{ } [alias] analysing instruction: st_3_t *t = malloc(sizeof(st_3_t)); [alias] May-aliases after instruction st_3_t *t = malloc(sizeof(st_3_t)); are <none> +[alias] May-alias graph after instruction st_3_t *t = malloc(sizeof(st_3_t)); is + 0:{ y1 } → 1:{ } 2:{ z } → 3:{ } 4:{ t } → 5:{ } [alias] analysing instruction: int *a = malloc(sizeof(int)); [alias] May-aliases after instruction int *a = malloc(sizeof(int)); are <none> +[alias] May-alias graph after instruction int *a = malloc(sizeof(int)); is + 0:{ y1 } → 1:{ } 2:{ z } → 3:{ } 4:{ t } → 5:{ } + 6:{ a } → 7:{ } [alias] analysing instruction: *a = 0; [alias] May-aliases after instruction *a = 0; are <none> +[alias] May-alias graph after instruction *a = 0; is + 0:{ y1 } → 1:{ } 2:{ z } → 3:{ } 4:{ t } → 5:{ } + 6:{ a } → 7:{ } [alias] analysing instruction: y1 = & x1; [alias] May-aliases after instruction y1 = & x1; are <none> +[alias] May-alias graph after instruction y1 = & x1; is + 0:{ y1 } → 1:{ x1 } 2:{ z } → 3:{ } 4:{ t } → 5:{ } + 6:{ a } → 7:{ } [alias] analysing instruction: z->s = (struct struct_1_t *)y1; [alias:unsafe-cast] structure5.c:41: Warning: unsafe cast from st_1_t * to struct struct_1_t * [alias] May-aliases after instruction z->s = (struct struct_1_t *)y1; are { z->s; y1 } +[alias] May-alias graph after instruction z->s = (struct struct_1_t *)y1; is + 2:{ z } → 3:{ } 4:{ t } → 5:{ } 6:{ a } → 7:{ } + 10:{ z->s; y1 } → 1:{ x1 } [alias] analysing instruction: z->c = a; [alias] May-aliases after instruction z->c = a; are { z->s; y1 } { z->c; a } +[alias] May-alias graph after instruction z->c = a; is + 2:{ z } → 3:{ } 4:{ t } → 5:{ } 10:{ z->s; y1 } → 1:{ x1 } + 11:{ z->c; a } → 7:{ } [alias] analysing instruction: t->t = (struct struct_2_t *)z; [alias:unsafe-cast] structure5.c:43: Warning: unsafe cast from st_2_t * to struct struct_2_t * [alias] May-aliases after instruction t->t = (struct struct_2_t *)z; are { z->s; y1 } { t->t; z } { z->c; a } +[alias] May-alias graph after instruction t->t = (struct struct_2_t *)z; is + 4:{ t } → 5:{ } 10:{ z->s; y1 } → 1:{ x1 } + 11:{ z->c; a } → 7:{ } 12:{ t->t; z } → 3:{ } [alias] analysing instruction: t->d = a; [alias] May-aliases after instruction t->d = a; are { z->s; y1 } { t->t; z } { z->c; t->d; a } +[alias] May-alias graph after instruction t->d = a; is + 4:{ t } → 5:{ } 10:{ z->s; y1 } → 1:{ x1 } + 12:{ t->t; z } → 3:{ } 13:{ z->c; t->d; a } → 7:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { z->s; y1 } { t->t; z } { z->c; t->d; a } +[alias] May-alias graph after instruction __retres = 0; is + 4:{ t } → 5:{ } 10:{ z->s; y1 } → 1:{ x1 } + 12:{ t->t; z } → 3:{ } 13:{ z->c; t->d; a } → 7:{ } [alias] May-aliases at the end of function main: { z->s; y1 } { t->t; z } { z->c; t->d; a } +[alias] May-alias graph at the end of function main: + 4:{ t } → 5:{ } 10:{ z->s; y1 } → 1:{ x1 } + 12:{ t->t; z } → 3:{ } 13:{ z->c; t->d; a } → 7:{ } +[alias] Summary of function main: + formals: locals: x1 x2 y1→{ x1 } z t a __retres + returns: __retres state: { z->s; y1 } { t->t; z } { z->c; t->d; a } [alias] analysing function: malloc [alias] May-aliases at the end of function malloc: ⊥ +[alias] May-alias graph at the end of function malloc: + ⊥ [alias] analysing function: mblen [alias] May-aliases at the end of function mblen: ⊥ +[alias] May-alias graph at the end of function mblen: + ⊥ [alias] analysing function: mbstowcs [alias] May-aliases at the end of function mbstowcs: ⊥ +[alias] May-alias graph at the end of function mbstowcs: + ⊥ [alias] analysing function: mbtowc [alias] May-aliases at the end of function mbtowc: ⊥ +[alias] May-alias graph at the end of function mbtowc: + ⊥ [alias] analysing function: mkstemp [alias] May-aliases at the end of function mkstemp: ⊥ +[alias] May-alias graph at the end of function mkstemp: + ⊥ [alias] analysing function: mkstemps [alias] May-aliases at the end of function mkstemps: ⊥ +[alias] May-alias graph at the end of function mkstemps: + ⊥ [alias] analysing function: mrand48 [alias] May-aliases at the end of function mrand48: ⊥ +[alias] May-alias graph at the end of function mrand48: + ⊥ [alias] analysing function: nrand48 [alias] May-aliases at the end of function nrand48: ⊥ +[alias] May-alias graph at the end of function nrand48: + ⊥ [alias] analysing function: posix_memalign [alias] May-aliases at the end of function posix_memalign: ⊥ +[alias] May-alias graph at the end of function posix_memalign: + ⊥ [alias] analysing function: putenv [alias] May-aliases at the end of function putenv: ⊥ +[alias] May-alias graph at the end of function putenv: + ⊥ [alias] analysing function: qsort [alias] May-aliases at the end of function qsort: ⊥ +[alias] May-alias graph at the end of function qsort: + ⊥ [alias] analysing function: quick_exit [alias] May-aliases at the end of function quick_exit: ⊥ +[alias] May-alias graph at the end of function quick_exit: + ⊥ [alias] analysing function: rand [alias] May-aliases at the end of function rand: ⊥ +[alias] May-alias graph at the end of function rand: + ⊥ [alias] analysing function: random [alias] May-aliases at the end of function random: ⊥ +[alias] May-alias graph at the end of function random: + ⊥ [alias] analysing function: realloc [alias] May-aliases at the end of function realloc: ⊥ +[alias] May-alias graph at the end of function realloc: + ⊥ [alias] analysing function: reallocarray [alias] May-aliases at the end of function reallocarray: ⊥ +[alias] May-alias graph at the end of function reallocarray: + ⊥ [alias] analysing function: seed48 [alias] May-aliases at the end of function seed48: ⊥ +[alias] May-alias graph at the end of function seed48: + ⊥ [alias] analysing function: setenv [alias] May-aliases at the end of function setenv: ⊥ +[alias] May-alias graph at the end of function setenv: + ⊥ [alias] analysing function: srand [alias] May-aliases at the end of function srand: ⊥ +[alias] May-alias graph at the end of function srand: + ⊥ [alias] analysing function: srand48 [alias] May-aliases at the end of function srand48: ⊥ +[alias] May-alias graph at the end of function srand48: + ⊥ [alias] analysing function: srandom [alias] May-aliases at the end of function srandom: ⊥ +[alias] May-alias graph at the end of function srandom: + ⊥ [alias] analysing function: strtod [alias] May-aliases at the end of function strtod: ⊥ +[alias] May-alias graph at the end of function strtod: + ⊥ [alias] analysing function: strtof [alias] May-aliases at the end of function strtof: ⊥ +[alias] May-alias graph at the end of function strtof: + ⊥ [alias] analysing function: strtol [alias] May-aliases at the end of function strtol: ⊥ +[alias] May-alias graph at the end of function strtol: + ⊥ [alias] analysing function: strtold [alias] May-aliases at the end of function strtold: ⊥ +[alias] May-alias graph at the end of function strtold: + ⊥ [alias] analysing function: strtoll [alias] May-aliases at the end of function strtoll: ⊥ +[alias] May-alias graph at the end of function strtoll: + ⊥ [alias] analysing function: strtoul [alias] May-aliases at the end of function strtoul: ⊥ +[alias] May-alias graph at the end of function strtoul: + ⊥ [alias] analysing function: strtoull [alias] May-aliases at the end of function strtoull: ⊥ +[alias] May-alias graph at the end of function strtoull: + ⊥ [alias] analysing function: system [alias] May-aliases at the end of function system: ⊥ +[alias] May-alias graph at the end of function system: + ⊥ [alias] analysing function: unsetenv [alias] May-aliases at the end of function unsetenv: ⊥ +[alias] May-alias graph at the end of function unsetenv: + ⊥ [alias] analysing function: wcstombs [alias] May-aliases at the end of function wcstombs: ⊥ +[alias] May-alias graph at the end of function wcstombs: + ⊥ [alias] analysing function: wctomb [alias] May-aliases at the end of function wctomb: ⊥ +[alias] May-alias graph at the end of function wctomb: + ⊥ +[alias] Analysis complete diff --git a/src/plugins/alias/tests/real_world/oracle/example1.res.oracle b/src/plugins/alias/tests/real_world/oracle/example1.res.oracle index ec0365c4343..9da1fbb86ac 100644 --- a/src/plugins/alias/tests/real_world/oracle/example1.res.oracle +++ b/src/plugins/alias/tests/real_world/oracle/example1.res.oracle @@ -1,419 +1,853 @@ [kernel] Parsing example1.c (with preprocessing) [alias] analysing function: _Exit [alias] May-aliases at the end of function _Exit: ⊥ +[alias] May-alias graph at the end of function _Exit: + ⊥ [alias] analysing function: __fc_fpclassify [alias] May-aliases at the end of function __fc_fpclassify: ⊥ +[alias] May-alias graph at the end of function __fc_fpclassify: + ⊥ [alias] analysing function: __fc_fpclassifyf [alias] May-aliases at the end of function __fc_fpclassifyf: ⊥ +[alias] May-alias graph at the end of function __fc_fpclassifyf: + ⊥ [alias] analysing function: __fc_infinity [alias] May-aliases at the end of function __fc_infinity: ⊥ +[alias] May-alias graph at the end of function __fc_infinity: + ⊥ [alias] analysing function: __fc_nan [alias] May-aliases at the end of function __fc_nan: ⊥ +[alias] May-alias graph at the end of function __fc_nan: + ⊥ [alias] analysing function: __finite [alias] May-aliases at the end of function __finite: ⊥ +[alias] May-alias graph at the end of function __finite: + ⊥ [alias] analysing function: __finitef [alias] May-aliases at the end of function __finitef: ⊥ +[alias] May-alias graph at the end of function __finitef: + ⊥ [alias] analysing function: abort [alias] May-aliases at the end of function abort: ⊥ +[alias] May-alias graph at the end of function abort: + ⊥ [alias] analysing function: abs [alias] May-aliases at the end of function abs: ⊥ +[alias] May-alias graph at the end of function abs: + ⊥ [alias] analysing function: acos [alias] May-aliases at the end of function acos: ⊥ +[alias] May-alias graph at the end of function acos: + ⊥ [alias] analysing function: acosf [alias] May-aliases at the end of function acosf: ⊥ +[alias] May-alias graph at the end of function acosf: + ⊥ [alias] analysing function: acosh [alias] May-aliases at the end of function acosh: ⊥ +[alias] May-alias graph at the end of function acosh: + ⊥ [alias] analysing function: acoshf [alias] May-aliases at the end of function acoshf: ⊥ +[alias] May-alias graph at the end of function acoshf: + ⊥ [alias] analysing function: acoshl [alias] May-aliases at the end of function acoshl: ⊥ +[alias] May-alias graph at the end of function acoshl: + ⊥ [alias] analysing function: acosl [alias] May-aliases at the end of function acosl: ⊥ +[alias] May-alias graph at the end of function acosl: + ⊥ [alias] analysing function: asin [alias] May-aliases at the end of function asin: ⊥ +[alias] May-alias graph at the end of function asin: + ⊥ [alias] analysing function: asinf [alias] May-aliases at the end of function asinf: ⊥ +[alias] May-alias graph at the end of function asinf: + ⊥ [alias] analysing function: asinl [alias] May-aliases at the end of function asinl: ⊥ +[alias] May-alias graph at the end of function asinl: + ⊥ [alias] analysing function: at_quick_exit [alias] May-aliases at the end of function at_quick_exit: ⊥ +[alias] May-alias graph at the end of function at_quick_exit: + ⊥ [alias] analysing function: atan [alias] May-aliases at the end of function atan: ⊥ +[alias] May-alias graph at the end of function atan: + ⊥ [alias] analysing function: atan2 [alias] May-aliases at the end of function atan2: ⊥ +[alias] May-alias graph at the end of function atan2: + ⊥ [alias] analysing function: atan2f [alias] May-aliases at the end of function atan2f: ⊥ +[alias] May-alias graph at the end of function atan2f: + ⊥ [alias] analysing function: atan2l [alias] May-aliases at the end of function atan2l: ⊥ +[alias] May-alias graph at the end of function atan2l: + ⊥ [alias] analysing function: atanf [alias] May-aliases at the end of function atanf: ⊥ +[alias] May-alias graph at the end of function atanf: + ⊥ [alias] analysing function: atanl [alias] May-aliases at the end of function atanl: ⊥ +[alias] May-alias graph at the end of function atanl: + ⊥ [alias] analysing function: atexit [alias] May-aliases at the end of function atexit: ⊥ +[alias] May-alias graph at the end of function atexit: + ⊥ [alias] analysing function: atof [alias] May-aliases at the end of function atof: ⊥ +[alias] May-alias graph at the end of function atof: + ⊥ [alias] analysing function: atoi [alias] May-aliases at the end of function atoi: ⊥ +[alias] May-alias graph at the end of function atoi: + ⊥ [alias] analysing function: atol [alias] May-aliases at the end of function atol: ⊥ +[alias] May-alias graph at the end of function atol: + ⊥ [alias] analysing function: atoll [alias] May-aliases at the end of function atoll: ⊥ +[alias] May-alias graph at the end of function atoll: + ⊥ [alias] analysing function: bsearch [alias] May-aliases at the end of function bsearch: ⊥ +[alias] May-alias graph at the end of function bsearch: + ⊥ [alias] analysing function: calloc [alias] May-aliases at the end of function calloc: ⊥ +[alias] May-alias graph at the end of function calloc: + ⊥ [alias] analysing function: ceil [alias] May-aliases at the end of function ceil: ⊥ +[alias] May-alias graph at the end of function ceil: + ⊥ [alias] analysing function: ceilf [alias] May-aliases at the end of function ceilf: ⊥ +[alias] May-alias graph at the end of function ceilf: + ⊥ [alias] analysing function: ceill [alias] May-aliases at the end of function ceill: ⊥ +[alias] May-alias graph at the end of function ceill: + ⊥ [alias] analysing function: cos [alias] May-aliases at the end of function cos: ⊥ +[alias] May-alias graph at the end of function cos: + ⊥ [alias] analysing function: cosf [alias] May-aliases at the end of function cosf: ⊥ +[alias] May-alias graph at the end of function cosf: + ⊥ [alias] analysing function: cosl [alias] May-aliases at the end of function cosl: ⊥ +[alias] May-alias graph at the end of function cosl: + ⊥ [alias] analysing function: div [alias] May-aliases at the end of function div: ⊥ +[alias] May-alias graph at the end of function div: + ⊥ [alias] analysing function: drand48 [alias] May-aliases at the end of function drand48: ⊥ +[alias] May-alias graph at the end of function drand48: + ⊥ [alias] analysing function: erand48 [alias] May-aliases at the end of function erand48: ⊥ +[alias] May-alias graph at the end of function erand48: + ⊥ [alias] analysing function: exit [alias] May-aliases at the end of function exit: ⊥ +[alias] May-alias graph at the end of function exit: + ⊥ [alias] analysing function: exp [alias] May-aliases at the end of function exp: ⊥ +[alias] May-alias graph at the end of function exp: + ⊥ [alias] analysing function: expf [alias] May-aliases at the end of function expf: ⊥ +[alias] May-alias graph at the end of function expf: + ⊥ [alias] analysing function: f1 [alias] analysing instruction: ty *tmp = x; [alias] May-aliases after instruction ty *tmp = x; are { x; tmp } +[alias] May-alias graph after instruction ty *tmp = x; is + 0:{ x; tmp } → 1:{ } [alias] analysing instruction: idata = (double *)malloc((unsigned long)10 * sizeof(double)); [alias] May-aliases after instruction idata = (double *)malloc((unsigned long)10 * sizeof(double)); are { x; tmp } +[alias] May-alias graph after instruction + idata = (double *)malloc((unsigned long)10 * sizeof(double)); is + 0:{ x; tmp } → 1:{ } 4:{ idata } → 5:{ } [alias] analysing instruction: idata = tmp->t2[*(tmp->n2)]; [alias] May-aliases after instruction idata = tmp->t2[*(tmp->n2)]; are { x; tmp } { tmp->t2[0..]; idata } +[alias] May-alias graph after instruction idata = tmp->t2[*(tmp->n2)]; is + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } [alias] analysing instruction: odata = tmp->t1[*(tmp->n1)]; [alias] May-aliases after instruction odata = tmp->t1[*(tmp->n1)]; are { x; tmp } { tmp->t2[0..]; idata } { tmp->t1[0..]; odata } +[alias] May-alias graph after instruction odata = tmp->t1[*(tmp->n1)]; is + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } + 7:{ tmp->t1[0..]; odata } → 8:{ } [alias] analysing instruction: idx = 0; [alias] May-aliases after instruction idx = 0; are { x; tmp } { tmp->t2[0..]; idata } { tmp->t1[0..]; odata } +[alias] May-alias graph after instruction idx = 0; is + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } + 7:{ tmp->t1[0..]; odata } → 8:{ } [alias] analysing instruction: tmp_1 = sin(*(idata + idx)); [alias] analysing function: sin [alias] May-aliases at the end of function sin: ⊥ +[alias] May-alias graph at the end of function sin: + ⊥ [alias:undefined:fn] example1.c:45: Warning: function sin has no definition [alias] May-aliases after instruction tmp_1 = sin(*(idata + idx)); are { x; tmp } { tmp->t2[0..]; idata } { tmp->t1[0..]; odata } +[alias] May-alias graph after instruction tmp_1 = sin(*(idata + idx)); is + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } + 7:{ tmp->t1[0..]; odata } → 8:{ } [alias] analysing instruction: *(odata + idx) = 0.5 * tmp_1; [alias] May-aliases after instruction *(odata + idx) = 0.5 * tmp_1; are { x; tmp } { tmp->t2[0..]; idata } { tmp->t1[0..]; odata } +[alias] May-alias graph after instruction *(odata + idx) = 0.5 * tmp_1; is + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } + 7:{ tmp->t1[0..]; odata } → 8:{ } [alias] analysing instruction: idx ++; [alias] May-aliases after instruction idx ++; are { x; tmp } { tmp->t2[0..]; idata } { tmp->t1[0..]; odata } +[alias] May-alias graph after instruction idx ++; is + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } + 7:{ tmp->t1[0..]; odata } → 8:{ } [alias] analysing instruction: swap(tmp->n1); [alias] analysing function: swap [alias] analysing instruction: *n = 0; [alias] May-aliases after instruction *n = 0; are <none> +[alias] May-alias graph after instruction *n = 0; is <empty> [alias] analysing instruction: (*n) ++; [alias] May-aliases after instruction (*n) ++; are <none> +[alias] May-alias graph after instruction (*n) ++; is <empty> [alias] May-aliases at the end of function swap: <none> +[alias] May-alias graph at the end of function swap: + <empty> +[alias] Summary of function swap: [alias] May-aliases after instruction swap(tmp->n1); are { x; tmp } { tmp->t2[0..]; idata } { tmp->t1[0..]; odata } +[alias] May-alias graph after instruction swap(tmp->n1); is + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } + 7:{ tmp->t1[0..]; odata } → 8:{ } [alias] analysing instruction: idata = tmp->t2[*(tmp->n2)]; [alias] May-aliases after instruction idata = tmp->t2[*(tmp->n2)]; are { x; tmp } { tmp->t2[0..]; idata } { tmp->t1[0..]; odata } +[alias] May-alias graph after instruction idata = tmp->t2[*(tmp->n2)]; is + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } + 7:{ tmp->t1[0..]; odata } → 8:{ } [alias] analysing instruction: odata = tmp->t1[*(tmp->n1)]; [alias] May-aliases after instruction odata = tmp->t1[*(tmp->n1)]; are { x; tmp } { tmp->t2[0..]; idata } { tmp->t1[0..]; odata } +[alias] May-alias graph after instruction odata = tmp->t1[*(tmp->n1)]; is + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } + 7:{ tmp->t1[0..]; odata } → 8:{ } [alias:no-return] example1.c:29: Warning: function f1 does not return; analysis may be unsound [alias] May-aliases at the end of function f1: <none> +[alias] May-alias graph at the end of function f1: + <empty> +[alias] Summary of function f1: + formals: x locals: tmp idata odata idx tmp_1 __retres + returns: __retres state: <none> [alias] analysing function: f2 [alias] analysing instruction: ty *tmp = x; [alias] May-aliases after instruction ty *tmp = x; are { x; tmp } +[alias] May-alias graph after instruction ty *tmp = x; is + 12:{ x; tmp } → 13:{ } [alias] analysing instruction: idata = (double *)malloc((unsigned long)10 * sizeof(double)); [alias] May-aliases after instruction idata = (double *)malloc((unsigned long)10 * sizeof(double)); are { x; tmp } +[alias] May-alias graph after instruction + idata = (double *)malloc((unsigned long)10 * sizeof(double)); is + 12:{ x; tmp } → 13:{ } 16:{ idata } → 17:{ } [alias] analysing instruction: idata = tmp->t1[*(tmp->n1)]; [alias] May-aliases after instruction idata = tmp->t1[*(tmp->n1)]; are { x; tmp } { tmp->t1[0..]; idata } +[alias] May-alias graph after instruction idata = tmp->t1[*(tmp->n1)]; is + 12:{ x; tmp } → 13:{ } 16:{ tmp->t1[0..]; idata } → 17:{ } [alias] analysing instruction: odata = tmp->t2[*(tmp->n2)]; [alias] May-aliases after instruction odata = tmp->t2[*(tmp->n2)]; are { x; tmp } { tmp->t1[0..]; idata } { tmp->t2[0..]; odata } +[alias] May-alias graph after instruction odata = tmp->t2[*(tmp->n2)]; is + 12:{ x; tmp } → 13:{ } 16:{ tmp->t1[0..]; idata } → 17:{ } + 19:{ tmp->t2[0..]; odata } → 20:{ } [alias] analysing instruction: idx = 0; [alias] May-aliases after instruction idx = 0; are { x; tmp } { tmp->t1[0..]; idata } { tmp->t2[0..]; odata } +[alias] May-alias graph after instruction idx = 0; is + 12:{ x; tmp } → 13:{ } 16:{ tmp->t1[0..]; idata } → 17:{ } + 19:{ tmp->t2[0..]; odata } → 20:{ } [alias] analysing instruction: *(odata + idx) = (double)3 * *(idata + idx) + (double)1; [alias] May-aliases after instruction *(odata + idx) = (double)3 * *(idata + idx) + (double)1; are { x; tmp } { tmp->t1[0..]; idata } { tmp->t2[0..]; odata } +[alias] May-alias graph after instruction + *(odata + idx) = (double)3 * *(idata + idx) + (double)1; is + 12:{ x; tmp } → 13:{ } 16:{ tmp->t1[0..]; idata } → 17:{ } + 19:{ tmp->t2[0..]; odata } → 20:{ } [alias] analysing instruction: idx ++; [alias] May-aliases after instruction idx ++; are { x; tmp } { tmp->t1[0..]; idata } { tmp->t2[0..]; odata } +[alias] May-alias graph after instruction idx ++; is + 12:{ x; tmp } → 13:{ } 16:{ tmp->t1[0..]; idata } → 17:{ } + 19:{ tmp->t2[0..]; odata } → 20:{ } [alias] analysing instruction: swap(tmp->n2); [alias] May-aliases after instruction swap(tmp->n2); are { x; tmp } { tmp->t1[0..]; idata } { tmp->t2[0..]; odata } +[alias] May-alias graph after instruction swap(tmp->n2); is + 12:{ x; tmp } → 13:{ } 16:{ tmp->t1[0..]; idata } → 17:{ } + 19:{ tmp->t2[0..]; odata } → 20:{ } [alias] analysing instruction: idata = tmp->t1[*(tmp->n1)]; [alias] May-aliases after instruction idata = tmp->t1[*(tmp->n1)]; are { x; tmp } { tmp->t1[0..]; idata } { tmp->t2[0..]; odata } +[alias] May-alias graph after instruction idata = tmp->t1[*(tmp->n1)]; is + 12:{ x; tmp } → 13:{ } 16:{ tmp->t1[0..]; idata } → 17:{ } + 19:{ tmp->t2[0..]; odata } → 20:{ } [alias] analysing instruction: odata = tmp->t2[*(tmp->n2)]; [alias] May-aliases after instruction odata = tmp->t2[*(tmp->n2)]; are { x; tmp } { tmp->t1[0..]; idata } { tmp->t2[0..]; odata } +[alias] May-alias graph after instruction odata = tmp->t2[*(tmp->n2)]; is + 12:{ x; tmp } → 13:{ } 16:{ tmp->t1[0..]; idata } → 17:{ } + 19:{ tmp->t2[0..]; odata } → 20:{ } [alias:no-return] example1.c:53: Warning: function f2 does not return; analysis may be unsound [alias] May-aliases at the end of function f2: <none> +[alias] May-alias graph at the end of function f2: + <empty> +[alias] Summary of function f2: + formals: x locals: tmp idx idata odata __retres + returns: __retres state: <none> [alias] analysing function: fabs [alias] May-aliases at the end of function fabs: ⊥ +[alias] May-alias graph at the end of function fabs: + ⊥ [alias] analysing function: fabsf [alias] May-aliases at the end of function fabsf: ⊥ +[alias] May-alias graph at the end of function fabsf: + ⊥ [alias] analysing function: fabsl [alias] May-aliases at the end of function fabsl: ⊥ +[alias] May-alias graph at the end of function fabsl: + ⊥ [alias] analysing function: floor [alias] May-aliases at the end of function floor: ⊥ +[alias] May-alias graph at the end of function floor: + ⊥ [alias] analysing function: floorf [alias] May-aliases at the end of function floorf: ⊥ +[alias] May-alias graph at the end of function floorf: + ⊥ [alias] analysing function: floorl [alias] May-aliases at the end of function floorl: ⊥ +[alias] May-alias graph at the end of function floorl: + ⊥ [alias] analysing function: fmod [alias] May-aliases at the end of function fmod: ⊥ +[alias] May-alias graph at the end of function fmod: + ⊥ [alias] analysing function: fmodf [alias] May-aliases at the end of function fmodf: ⊥ +[alias] May-alias graph at the end of function fmodf: + ⊥ [alias] analysing function: free [alias] May-aliases at the end of function free: ⊥ +[alias] May-alias graph at the end of function free: + ⊥ [alias] analysing function: frexp [alias] May-aliases at the end of function frexp: ⊥ +[alias] May-alias graph at the end of function frexp: + ⊥ [alias] analysing function: frexpf [alias] May-aliases at the end of function frexpf: ⊥ +[alias] May-alias graph at the end of function frexpf: + ⊥ [alias] analysing function: frexpl [alias] May-aliases at the end of function frexpl: ⊥ +[alias] May-alias graph at the end of function frexpl: + ⊥ [alias] analysing function: getenv [alias] May-aliases at the end of function getenv: ⊥ +[alias] May-alias graph at the end of function getenv: + ⊥ [alias] analysing function: jrand48 [alias] May-aliases at the end of function jrand48: ⊥ +[alias] May-alias graph at the end of function jrand48: + ⊥ [alias] analysing function: labs [alias] May-aliases at the end of function labs: ⊥ +[alias] May-alias graph at the end of function labs: + ⊥ [alias] analysing function: lcong48 [alias] May-aliases at the end of function lcong48: ⊥ +[alias] May-alias graph at the end of function lcong48: + ⊥ [alias] analysing function: ldexp [alias] May-aliases at the end of function ldexp: ⊥ +[alias] May-alias graph at the end of function ldexp: + ⊥ [alias] analysing function: ldexpf [alias] May-aliases at the end of function ldexpf: ⊥ +[alias] May-alias graph at the end of function ldexpf: + ⊥ [alias] analysing function: ldiv [alias] May-aliases at the end of function ldiv: ⊥ +[alias] May-alias graph at the end of function ldiv: + ⊥ [alias] analysing function: llabs [alias] May-aliases at the end of function llabs: ⊥ +[alias] May-alias graph at the end of function llabs: + ⊥ [alias] analysing function: lldiv [alias] May-aliases at the end of function lldiv: ⊥ +[alias] May-alias graph at the end of function lldiv: + ⊥ [alias] analysing function: log [alias] May-aliases at the end of function log: ⊥ +[alias] May-alias graph at the end of function log: + ⊥ [alias] analysing function: log10 [alias] May-aliases at the end of function log10: ⊥ +[alias] May-alias graph at the end of function log10: + ⊥ [alias] analysing function: log10f [alias] May-aliases at the end of function log10f: ⊥ +[alias] May-alias graph at the end of function log10f: + ⊥ [alias] analysing function: log10l [alias] May-aliases at the end of function log10l: ⊥ +[alias] May-alias graph at the end of function log10l: + ⊥ [alias] analysing function: log2 [alias] May-aliases at the end of function log2: ⊥ +[alias] May-alias graph at the end of function log2: + ⊥ [alias] analysing function: log2f [alias] May-aliases at the end of function log2f: ⊥ +[alias] May-alias graph at the end of function log2f: + ⊥ [alias] analysing function: log2l [alias] May-aliases at the end of function log2l: ⊥ +[alias] May-alias graph at the end of function log2l: + ⊥ [alias] analysing function: logf [alias] May-aliases at the end of function logf: ⊥ +[alias] May-alias graph at the end of function logf: + ⊥ [alias] analysing function: logl [alias] May-aliases at the end of function logl: ⊥ +[alias] May-alias graph at the end of function logl: + ⊥ [alias] analysing function: lrand48 [alias] May-aliases at the end of function lrand48: ⊥ +[alias] May-alias graph at the end of function lrand48: + ⊥ [alias] analysing function: main [alias] analysing instruction: a = (ty *)malloc(sizeof(ty)); [alias] May-aliases after instruction a = (ty *)malloc(sizeof(ty)); are <none> +[alias] May-alias graph after instruction a = (ty *)malloc(sizeof(ty)); is + 24:{ a } → 25:{ } [alias] analysing instruction: b = (ty *)malloc(sizeof(ty)); [alias] May-aliases after instruction b = (ty *)malloc(sizeof(ty)); are <none> +[alias] May-alias graph after instruction b = (ty *)malloc(sizeof(ty)); is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } [alias] analysing instruction: i = 0; [alias] May-aliases after instruction i = 0; are <none> +[alias] May-alias graph after instruction i = 0; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } [alias] analysing instruction: a->t1[i] = (double *)malloc((unsigned long)10 * sizeof(double)); [alias] May-aliases after instruction a->t1[i] = (double *)malloc((unsigned long)10 * sizeof(double)); are <none> +[alias] May-alias graph after instruction + a->t1[i] = (double *)malloc((unsigned long)10 * sizeof(double)); is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 28:{ a->t1[0..] } → 29:{ } [alias] analysing instruction: a->t2[i] = (double *)malloc((unsigned long)10 * sizeof(double)); [alias] May-aliases after instruction a->t2[i] = (double *)malloc((unsigned long)10 * sizeof(double)); are <none> +[alias] May-alias graph after instruction + a->t2[i] = (double *)malloc((unsigned long)10 * sizeof(double)); is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 28:{ a->t1[0..] } → 29:{ } + 30:{ a->t2[0..] } → 31:{ } [alias] analysing instruction: i ++; [alias] May-aliases after instruction i ++; are <none> +[alias] May-alias graph after instruction i ++; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 28:{ a->t1[0..] } → 29:{ } + 30:{ a->t2[0..] } → 31:{ } [alias] analysing instruction: a->t1[i] = (double *)malloc((unsigned long)10 * sizeof(double)); [alias] May-aliases after instruction a->t1[i] = (double *)malloc((unsigned long)10 * sizeof(double)); are <none> +[alias] May-alias graph after instruction + a->t1[i] = (double *)malloc((unsigned long)10 * sizeof(double)); is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 28:{ a->t1[0..] } → 29:{ } + 30:{ a->t2[0..] } → 31:{ } [alias] analysing instruction: a->t2[i] = (double *)malloc((unsigned long)10 * sizeof(double)); [alias] May-aliases after instruction a->t2[i] = (double *)malloc((unsigned long)10 * sizeof(double)); are <none> +[alias] May-alias graph after instruction + a->t2[i] = (double *)malloc((unsigned long)10 * sizeof(double)); is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 28:{ a->t1[0..] } → 29:{ } + 30:{ a->t2[0..] } → 31:{ } [alias] analysing instruction: a->n1 = (int *)malloc(sizeof(int)); [alias] May-aliases after instruction a->n1 = (int *)malloc(sizeof(int)); are <none> +[alias] May-alias graph after instruction a->n1 = (int *)malloc(sizeof(int)); is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 28:{ a->t1[0..] } → 29:{ } + 30:{ a->t2[0..] } → 31:{ } 32:{ a->n1 } → 33:{ } [alias] analysing instruction: a->n2 = (int *)malloc(sizeof(int)); [alias] May-aliases after instruction a->n2 = (int *)malloc(sizeof(int)); are <none> +[alias] May-alias graph after instruction a->n2 = (int *)malloc(sizeof(int)); is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 28:{ a->t1[0..] } → 29:{ } + 30:{ a->t2[0..] } → 31:{ } 32:{ a->n1 } → 33:{ } + 34:{ a->n2 } → 35:{ } [alias] analysing instruction: *(a->n1) = 1; [alias] May-aliases after instruction *(a->n1) = 1; are <none> +[alias] May-alias graph after instruction *(a->n1) = 1; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 28:{ a->t1[0..] } → 29:{ } + 30:{ a->t2[0..] } → 31:{ } 32:{ a->n1 } → 33:{ } + 34:{ a->n2 } → 35:{ } [alias] analysing instruction: *(a->n2) = 1; [alias] May-aliases after instruction *(a->n2) = 1; are <none> +[alias] May-alias graph after instruction *(a->n2) = 1; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 28:{ a->t1[0..] } → 29:{ } + 30:{ a->t2[0..] } → 31:{ } 32:{ a->n1 } → 33:{ } + 34:{ a->n2 } → 35:{ } [alias] analysing instruction: i = 0; [alias] May-aliases after instruction i = 0; are <none> +[alias] May-alias graph after instruction i = 0; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 28:{ a->t1[0..] } → 29:{ } + 30:{ a->t2[0..] } → 31:{ } 32:{ a->n1 } → 33:{ } + 34:{ a->n2 } → 35:{ } [alias] analysing instruction: b->t1[i] = a->t1[i]; [alias] May-aliases after instruction b->t1[i] = a->t1[i]; are { a->t1[0..]; b->t1[0..] } +[alias] May-alias graph after instruction b->t1[i] = a->t1[i]; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 30:{ a->t2[0..] } → 31:{ } + 32:{ a->n1 } → 33:{ } 34:{ a->n2 } → 35:{ } + 36:{ a->t1[0..]; b->t1[0..] } → 29:{ } [alias] analysing instruction: b->t2[i] = a->t2[i]; [alias] May-aliases after instruction b->t2[i] = a->t2[i]; are { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } +[alias] May-alias graph after instruction b->t2[i] = a->t2[i]; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 32:{ a->n1 } → 33:{ } + 34:{ a->n2 } → 35:{ } 36:{ a->t1[0..]; b->t1[0..] } → 29:{ } + 37:{ a->t2[0..]; b->t2[0..] } → 31:{ } [alias] analysing instruction: i ++; [alias] May-aliases after instruction i ++; are { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } +[alias] May-alias graph after instruction i ++; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 32:{ a->n1 } → 33:{ } + 34:{ a->n2 } → 35:{ } 36:{ a->t1[0..]; b->t1[0..] } → 29:{ } + 37:{ a->t2[0..]; b->t2[0..] } → 31:{ } [alias] analysing instruction: b->t1[i] = a->t1[i]; [alias] May-aliases after instruction b->t1[i] = a->t1[i]; are { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } +[alias] May-alias graph after instruction b->t1[i] = a->t1[i]; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } + 28:{ a->t1[0..]; b->t1[0..] } → 29:{ } + 30:{ a->t2[0..]; b->t2[0..] } → 31:{ } 32:{ a->n1 } → 33:{ } + 34:{ a->n2 } → 35:{ } [alias] analysing instruction: b->t2[i] = a->t2[i]; [alias] May-aliases after instruction b->t2[i] = a->t2[i]; are { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } +[alias] May-alias graph after instruction b->t2[i] = a->t2[i]; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } + 28:{ a->t1[0..]; b->t1[0..] } → 29:{ } + 30:{ a->t2[0..]; b->t2[0..] } → 31:{ } 32:{ a->n1 } → 33:{ } + 34:{ a->n2 } → 35:{ } [alias] analysing instruction: b->n1 = a->n1; [alias] May-aliases after instruction b->n1 = a->n1; are { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } { a->n1; b->n1 } +[alias] May-alias graph after instruction b->n1 = a->n1; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } + 28:{ a->t1[0..]; b->t1[0..] } → 29:{ } + 30:{ a->t2[0..]; b->t2[0..] } → 31:{ } 34:{ a->n2 } → 35:{ } + 38:{ a->n1; b->n1 } → 33:{ } [alias] analysing instruction: b->n2 = a->n2; [alias] May-aliases after instruction b->n2 = a->n2; are { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } { a->n1; b->n1 } { a->n2; b->n2 } +[alias] May-alias graph after instruction b->n2 = a->n2; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } + 28:{ a->t1[0..]; b->t1[0..] } → 29:{ } + 30:{ a->t2[0..]; b->t2[0..] } → 31:{ } 38:{ a->n1; b->n1 } → 33:{ } + 39:{ a->n2; b->n2 } → 35:{ } [alias] analysing instruction: f1(a); [alias] May-aliases after instruction f1(a); are { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } { a->n1; b->n1 } { a->n2; b->n2 } +[alias] May-alias graph after instruction f1(a); is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } + 28:{ a->t1[0..]; b->t1[0..] } → 29:{ } + 30:{ a->t2[0..]; b->t2[0..] } → 31:{ } 38:{ a->n1; b->n1 } → 33:{ } + 39:{ a->n2; b->n2 } → 35:{ } [alias] analysing instruction: f2(b); [alias] May-aliases after instruction f2(b); are { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } { a->n1; b->n1 } { a->n2; b->n2 } +[alias] May-alias graph after instruction f2(b); is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } + 28:{ a->t1[0..]; b->t1[0..] } → 29:{ } + 30:{ a->t2[0..]; b->t2[0..] } → 31:{ } 38:{ a->n1; b->n1 } → 33:{ } + 39:{ a->n2; b->n2 } → 35:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } { a->n1; b->n1 } { a->n2; b->n2 } +[alias] May-alias graph after instruction __retres = 0; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } + 28:{ a->t1[0..]; b->t1[0..] } → 29:{ } + 30:{ a->t2[0..]; b->t2[0..] } → 31:{ } 38:{ a->n1; b->n1 } → 33:{ } + 39:{ a->n2; b->n2 } → 35:{ } [alias] May-aliases at the end of function main: { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } { a->n1; b->n1 } { a->n2; b->n2 } +[alias] May-alias graph at the end of function main: + 24:{ a } → 25:{ } 26:{ b } → 27:{ } + 28:{ a->t1[0..]; b->t1[0..] } → 29:{ } + 30:{ a->t2[0..]; b->t2[0..] } → 31:{ } 38:{ a->n1; b->n1 } → 33:{ } + 39:{ a->n2; b->n2 } → 35:{ } +[alias] Summary of function main: + formals: locals: a b i __retres returns: __retres + state: { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } + { a->n1; b->n1 } { a->n2; b->n2 } [alias] analysing function: malloc [alias] May-aliases at the end of function malloc: ⊥ +[alias] May-alias graph at the end of function malloc: + ⊥ [alias] analysing function: mblen [alias] May-aliases at the end of function mblen: ⊥ +[alias] May-alias graph at the end of function mblen: + ⊥ [alias] analysing function: mbstowcs [alias] May-aliases at the end of function mbstowcs: ⊥ +[alias] May-alias graph at the end of function mbstowcs: + ⊥ [alias] analysing function: mbtowc [alias] May-aliases at the end of function mbtowc: ⊥ +[alias] May-alias graph at the end of function mbtowc: + ⊥ [alias] analysing function: mkstemp [alias] May-aliases at the end of function mkstemp: ⊥ +[alias] May-alias graph at the end of function mkstemp: + ⊥ [alias] analysing function: mkstemps [alias] May-aliases at the end of function mkstemps: ⊥ +[alias] May-alias graph at the end of function mkstemps: + ⊥ [alias] analysing function: mrand48 [alias] May-aliases at the end of function mrand48: ⊥ +[alias] May-alias graph at the end of function mrand48: + ⊥ [alias] analysing function: nan [alias] May-aliases at the end of function nan: ⊥ +[alias] May-alias graph at the end of function nan: + ⊥ [alias] analysing function: nanf [alias] May-aliases at the end of function nanf: ⊥ +[alias] May-alias graph at the end of function nanf: + ⊥ [alias] analysing function: nanl [alias] May-aliases at the end of function nanl: ⊥ +[alias] May-alias graph at the end of function nanl: + ⊥ [alias] analysing function: nrand48 [alias] May-aliases at the end of function nrand48: ⊥ +[alias] May-alias graph at the end of function nrand48: + ⊥ [alias] analysing function: posix_memalign [alias] May-aliases at the end of function posix_memalign: ⊥ +[alias] May-alias graph at the end of function posix_memalign: + ⊥ [alias] analysing function: pow [alias] May-aliases at the end of function pow: ⊥ +[alias] May-alias graph at the end of function pow: + ⊥ [alias] analysing function: powf [alias] May-aliases at the end of function powf: ⊥ +[alias] May-alias graph at the end of function powf: + ⊥ [alias] analysing function: putenv [alias] May-aliases at the end of function putenv: ⊥ +[alias] May-alias graph at the end of function putenv: + ⊥ [alias] analysing function: qsort [alias] May-aliases at the end of function qsort: ⊥ +[alias] May-alias graph at the end of function qsort: + ⊥ [alias] analysing function: quick_exit [alias] May-aliases at the end of function quick_exit: ⊥ +[alias] May-alias graph at the end of function quick_exit: + ⊥ [alias] analysing function: rand [alias] May-aliases at the end of function rand: ⊥ +[alias] May-alias graph at the end of function rand: + ⊥ [alias] analysing function: random [alias] May-aliases at the end of function random: ⊥ +[alias] May-alias graph at the end of function random: + ⊥ [alias] analysing function: realloc [alias] May-aliases at the end of function realloc: ⊥ +[alias] May-alias graph at the end of function realloc: + ⊥ [alias] analysing function: reallocarray [alias] May-aliases at the end of function reallocarray: ⊥ +[alias] May-alias graph at the end of function reallocarray: + ⊥ [alias] analysing function: round [alias] May-aliases at the end of function round: ⊥ +[alias] May-alias graph at the end of function round: + ⊥ [alias] analysing function: roundf [alias] May-aliases at the end of function roundf: ⊥ +[alias] May-alias graph at the end of function roundf: + ⊥ [alias] analysing function: roundl [alias] May-aliases at the end of function roundl: ⊥ +[alias] May-alias graph at the end of function roundl: + ⊥ [alias] analysing function: seed48 [alias] May-aliases at the end of function seed48: ⊥ +[alias] May-alias graph at the end of function seed48: + ⊥ [alias] analysing function: setenv [alias] May-aliases at the end of function setenv: ⊥ +[alias] May-alias graph at the end of function setenv: + ⊥ [alias] analysing function: sin [alias] May-aliases at the end of function sin: ⊥ +[alias] May-alias graph at the end of function sin: + ⊥ [alias] analysing function: sinf [alias] May-aliases at the end of function sinf: ⊥ +[alias] May-alias graph at the end of function sinf: + ⊥ [alias] analysing function: sinl [alias] May-aliases at the end of function sinl: ⊥ +[alias] May-alias graph at the end of function sinl: + ⊥ [alias] analysing function: sqrt [alias] May-aliases at the end of function sqrt: ⊥ +[alias] May-alias graph at the end of function sqrt: + ⊥ [alias] analysing function: sqrtf [alias] May-aliases at the end of function sqrtf: ⊥ +[alias] May-alias graph at the end of function sqrtf: + ⊥ [alias] analysing function: sqrtl [alias] May-aliases at the end of function sqrtl: ⊥ +[alias] May-alias graph at the end of function sqrtl: + ⊥ [alias] analysing function: srand [alias] May-aliases at the end of function srand: ⊥ +[alias] May-alias graph at the end of function srand: + ⊥ [alias] analysing function: srand48 [alias] May-aliases at the end of function srand48: ⊥ +[alias] May-alias graph at the end of function srand48: + ⊥ [alias] analysing function: srandom [alias] May-aliases at the end of function srandom: ⊥ +[alias] May-alias graph at the end of function srandom: + ⊥ [alias] analysing function: strtod [alias] May-aliases at the end of function strtod: ⊥ +[alias] May-alias graph at the end of function strtod: + ⊥ [alias] analysing function: strtof [alias] May-aliases at the end of function strtof: ⊥ +[alias] May-alias graph at the end of function strtof: + ⊥ [alias] analysing function: strtol [alias] May-aliases at the end of function strtol: ⊥ +[alias] May-alias graph at the end of function strtol: + ⊥ [alias] analysing function: strtold [alias] May-aliases at the end of function strtold: ⊥ +[alias] May-alias graph at the end of function strtold: + ⊥ [alias] analysing function: strtoll [alias] May-aliases at the end of function strtoll: ⊥ +[alias] May-alias graph at the end of function strtoll: + ⊥ [alias] analysing function: strtoul [alias] May-aliases at the end of function strtoul: ⊥ +[alias] May-alias graph at the end of function strtoul: + ⊥ [alias] analysing function: strtoull [alias] May-aliases at the end of function strtoull: ⊥ +[alias] May-alias graph at the end of function strtoull: + ⊥ [alias] analysing function: swap [alias] May-aliases at the end of function swap: <none> +[alias] May-alias graph at the end of function swap: + <empty> +[alias] Summary of function swap: [alias] analysing function: system [alias] May-aliases at the end of function system: ⊥ +[alias] May-alias graph at the end of function system: + ⊥ [alias] analysing function: tan [alias] May-aliases at the end of function tan: ⊥ +[alias] May-alias graph at the end of function tan: + ⊥ [alias] analysing function: tanf [alias] May-aliases at the end of function tanf: ⊥ +[alias] May-alias graph at the end of function tanf: + ⊥ [alias] analysing function: tanl [alias] May-aliases at the end of function tanl: ⊥ +[alias] May-alias graph at the end of function tanl: + ⊥ [alias] analysing function: trunc [alias] May-aliases at the end of function trunc: ⊥ +[alias] May-alias graph at the end of function trunc: + ⊥ [alias] analysing function: truncf [alias] May-aliases at the end of function truncf: ⊥ +[alias] May-alias graph at the end of function truncf: + ⊥ [alias] analysing function: truncl [alias] May-aliases at the end of function truncl: ⊥ +[alias] May-alias graph at the end of function truncl: + ⊥ [alias] analysing function: unsetenv [alias] May-aliases at the end of function unsetenv: ⊥ +[alias] May-alias graph at the end of function unsetenv: + ⊥ [alias] analysing function: wcstombs [alias] May-aliases at the end of function wcstombs: ⊥ +[alias] May-alias graph at the end of function wcstombs: + ⊥ [alias] analysing function: wctomb [alias] May-aliases at the end of function wctomb: ⊥ +[alias] May-alias graph at the end of function wctomb: + ⊥ +[alias] Analysis complete diff --git a/src/plugins/alias/tests/real_world/oracle/example2.res.oracle b/src/plugins/alias/tests/real_world/oracle/example2.res.oracle index 9194ea04e66..fc423c49e94 100644 --- a/src/plugins/alias/tests/real_world/oracle/example2.res.oracle +++ b/src/plugins/alias/tests/real_world/oracle/example2.res.oracle @@ -1,433 +1,887 @@ [kernel] Parsing example2.c (with preprocessing) [alias] analysing function: _Exit [alias] May-aliases at the end of function _Exit: ⊥ +[alias] May-alias graph at the end of function _Exit: + ⊥ [alias] analysing function: __fc_fpclassify [alias] May-aliases at the end of function __fc_fpclassify: ⊥ +[alias] May-alias graph at the end of function __fc_fpclassify: + ⊥ [alias] analysing function: __fc_fpclassifyf [alias] May-aliases at the end of function __fc_fpclassifyf: ⊥ +[alias] May-alias graph at the end of function __fc_fpclassifyf: + ⊥ [alias] analysing function: __fc_infinity [alias] May-aliases at the end of function __fc_infinity: ⊥ +[alias] May-alias graph at the end of function __fc_infinity: + ⊥ [alias] analysing function: __fc_nan [alias] May-aliases at the end of function __fc_nan: ⊥ +[alias] May-alias graph at the end of function __fc_nan: + ⊥ [alias] analysing function: __finite [alias] May-aliases at the end of function __finite: ⊥ +[alias] May-alias graph at the end of function __finite: + ⊥ [alias] analysing function: __finitef [alias] May-aliases at the end of function __finitef: ⊥ +[alias] May-alias graph at the end of function __finitef: + ⊥ [alias] analysing function: abort [alias] May-aliases at the end of function abort: ⊥ +[alias] May-alias graph at the end of function abort: + ⊥ [alias] analysing function: abs [alias] May-aliases at the end of function abs: ⊥ +[alias] May-alias graph at the end of function abs: + ⊥ [alias] analysing function: acos [alias] May-aliases at the end of function acos: ⊥ +[alias] May-alias graph at the end of function acos: + ⊥ [alias] analysing function: acosf [alias] May-aliases at the end of function acosf: ⊥ +[alias] May-alias graph at the end of function acosf: + ⊥ [alias] analysing function: acosh [alias] May-aliases at the end of function acosh: ⊥ +[alias] May-alias graph at the end of function acosh: + ⊥ [alias] analysing function: acoshf [alias] May-aliases at the end of function acoshf: ⊥ +[alias] May-alias graph at the end of function acoshf: + ⊥ [alias] analysing function: acoshl [alias] May-aliases at the end of function acoshl: ⊥ +[alias] May-alias graph at the end of function acoshl: + ⊥ [alias] analysing function: acosl [alias] May-aliases at the end of function acosl: ⊥ +[alias] May-alias graph at the end of function acosl: + ⊥ [alias] analysing function: asin [alias] May-aliases at the end of function asin: ⊥ +[alias] May-alias graph at the end of function asin: + ⊥ [alias] analysing function: asinf [alias] May-aliases at the end of function asinf: ⊥ +[alias] May-alias graph at the end of function asinf: + ⊥ [alias] analysing function: asinl [alias] May-aliases at the end of function asinl: ⊥ +[alias] May-alias graph at the end of function asinl: + ⊥ [alias] analysing function: at_quick_exit [alias] May-aliases at the end of function at_quick_exit: ⊥ +[alias] May-alias graph at the end of function at_quick_exit: + ⊥ [alias] analysing function: atan [alias] May-aliases at the end of function atan: ⊥ +[alias] May-alias graph at the end of function atan: + ⊥ [alias] analysing function: atan2 [alias] May-aliases at the end of function atan2: ⊥ +[alias] May-alias graph at the end of function atan2: + ⊥ [alias] analysing function: atan2f [alias] May-aliases at the end of function atan2f: ⊥ +[alias] May-alias graph at the end of function atan2f: + ⊥ [alias] analysing function: atan2l [alias] May-aliases at the end of function atan2l: ⊥ +[alias] May-alias graph at the end of function atan2l: + ⊥ [alias] analysing function: atanf [alias] May-aliases at the end of function atanf: ⊥ +[alias] May-alias graph at the end of function atanf: + ⊥ [alias] analysing function: atanl [alias] May-aliases at the end of function atanl: ⊥ +[alias] May-alias graph at the end of function atanl: + ⊥ [alias] analysing function: atexit [alias] May-aliases at the end of function atexit: ⊥ +[alias] May-alias graph at the end of function atexit: + ⊥ [alias] analysing function: atof [alias] May-aliases at the end of function atof: ⊥ +[alias] May-alias graph at the end of function atof: + ⊥ [alias] analysing function: atoi [alias] May-aliases at the end of function atoi: ⊥ +[alias] May-alias graph at the end of function atoi: + ⊥ [alias] analysing function: atol [alias] May-aliases at the end of function atol: ⊥ +[alias] May-alias graph at the end of function atol: + ⊥ [alias] analysing function: atoll [alias] May-aliases at the end of function atoll: ⊥ +[alias] May-alias graph at the end of function atoll: + ⊥ [alias] analysing function: bsearch [alias] May-aliases at the end of function bsearch: ⊥ +[alias] May-alias graph at the end of function bsearch: + ⊥ [alias] analysing function: calloc [alias] May-aliases at the end of function calloc: ⊥ +[alias] May-alias graph at the end of function calloc: + ⊥ [alias] analysing function: ceil [alias] May-aliases at the end of function ceil: ⊥ +[alias] May-alias graph at the end of function ceil: + ⊥ [alias] analysing function: ceilf [alias] May-aliases at the end of function ceilf: ⊥ +[alias] May-alias graph at the end of function ceilf: + ⊥ [alias] analysing function: ceill [alias] May-aliases at the end of function ceill: ⊥ +[alias] May-alias graph at the end of function ceill: + ⊥ [alias] analysing function: cos [alias] May-aliases at the end of function cos: ⊥ +[alias] May-alias graph at the end of function cos: + ⊥ [alias] analysing function: cosf [alias] May-aliases at the end of function cosf: ⊥ +[alias] May-alias graph at the end of function cosf: + ⊥ [alias] analysing function: cosl [alias] May-aliases at the end of function cosl: ⊥ +[alias] May-alias graph at the end of function cosl: + ⊥ [alias] analysing function: div [alias] May-aliases at the end of function div: ⊥ +[alias] May-alias graph at the end of function div: + ⊥ [alias] analysing function: drand48 [alias] May-aliases at the end of function drand48: ⊥ +[alias] May-alias graph at the end of function drand48: + ⊥ [alias] analysing function: erand48 [alias] May-aliases at the end of function erand48: ⊥ +[alias] May-alias graph at the end of function erand48: + ⊥ [alias] analysing function: exit [alias] May-aliases at the end of function exit: ⊥ +[alias] May-alias graph at the end of function exit: + ⊥ [alias] analysing function: exp [alias] May-aliases at the end of function exp: ⊥ +[alias] May-alias graph at the end of function exp: + ⊥ [alias] analysing function: expf [alias] May-aliases at the end of function expf: ⊥ +[alias] May-alias graph at the end of function expf: + ⊥ [alias] analysing function: f1 [alias] analysing instruction: ty *tmp = x; [alias] May-aliases after instruction ty *tmp = x; are { x; tmp } +[alias] May-alias graph after instruction ty *tmp = x; is + 0:{ x; tmp } → 1:{ } [alias] analysing instruction: idata = (double *)malloc((unsigned long)10 * sizeof(double)); [alias] May-aliases after instruction idata = (double *)malloc((unsigned long)10 * sizeof(double)); are { x; tmp } +[alias] May-alias graph after instruction + idata = (double *)malloc((unsigned long)10 * sizeof(double)); is + 0:{ x; tmp } → 1:{ } 4:{ idata } → 5:{ } [alias] analysing instruction: int i = 0; [alias] May-aliases after instruction int i = 0; are { x; tmp } +[alias] May-alias graph after instruction int i = 0; is + 0:{ x; tmp } → 1:{ } 4:{ idata } → 5:{ } [alias] analysing instruction: idata = tmp->t2[*(tmp->n2)]; [alias] May-aliases after instruction idata = tmp->t2[*(tmp->n2)]; are { x; tmp } { tmp->t2[0..]; idata } +[alias] May-alias graph after instruction idata = tmp->t2[*(tmp->n2)]; is + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } [alias] analysing instruction: odata = tmp->t1[*(tmp->n1)]; [alias] May-aliases after instruction odata = tmp->t1[*(tmp->n1)]; are { x; tmp } { tmp->t2[0..]; idata } { tmp->t1[0..]; odata } +[alias] May-alias graph after instruction odata = tmp->t1[*(tmp->n1)]; is + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } + 7:{ tmp->t1[0..]; odata } → 8:{ } [alias] analysing instruction: idx = 0; [alias] May-aliases after instruction idx = 0; are { x; tmp } { tmp->t2[0..]; idata } { tmp->t1[0..]; odata } +[alias] May-alias graph after instruction idx = 0; is + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } + 7:{ tmp->t1[0..]; odata } → 8:{ } [alias] analysing instruction: tmp_1 = sin(*(idata + idx)); [alias] analysing function: sin [alias] May-aliases at the end of function sin: ⊥ +[alias] May-alias graph at the end of function sin: + ⊥ [alias:undefined:fn] example2.c:45: Warning: function sin has no definition [alias] May-aliases after instruction tmp_1 = sin(*(idata + idx)); are { x; tmp } { tmp->t2[0..]; idata } { tmp->t1[0..]; odata } +[alias] May-alias graph after instruction tmp_1 = sin(*(idata + idx)); is + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } + 7:{ tmp->t1[0..]; odata } → 8:{ } [alias] analysing instruction: *(odata + idx) = 0.5 * tmp_1; [alias] May-aliases after instruction *(odata + idx) = 0.5 * tmp_1; are { x; tmp } { tmp->t2[0..]; idata } { tmp->t1[0..]; odata } +[alias] May-alias graph after instruction *(odata + idx) = 0.5 * tmp_1; is + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } + 7:{ tmp->t1[0..]; odata } → 8:{ } [alias] analysing instruction: idx ++; [alias] May-aliases after instruction idx ++; are { x; tmp } { tmp->t2[0..]; idata } { tmp->t1[0..]; odata } +[alias] May-alias graph after instruction idx ++; is + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } + 7:{ tmp->t1[0..]; odata } → 8:{ } [alias] analysing instruction: swap(tmp->n1); [alias] analysing function: swap [alias] analysing instruction: *n = 0; [alias] May-aliases after instruction *n = 0; are <none> +[alias] May-alias graph after instruction *n = 0; is <empty> [alias] analysing instruction: (*n) ++; [alias] May-aliases after instruction (*n) ++; are <none> +[alias] May-alias graph after instruction (*n) ++; is <empty> [alias] May-aliases at the end of function swap: <none> +[alias] May-alias graph at the end of function swap: + <empty> +[alias] Summary of function swap: [alias] May-aliases after instruction swap(tmp->n1); are { x; tmp } { tmp->t2[0..]; idata } { tmp->t1[0..]; odata } +[alias] May-alias graph after instruction swap(tmp->n1); is + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } + 7:{ tmp->t1[0..]; odata } → 8:{ } [alias] analysing instruction: i ++; [alias] May-aliases after instruction i ++; are { x; tmp } { tmp->t2[0..]; idata } { tmp->t1[0..]; odata } +[alias] May-alias graph after instruction i ++; is + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } + 7:{ tmp->t1[0..]; odata } → 8:{ } [alias] analysing instruction: idata = tmp->t2[*(tmp->n2)]; [alias] May-aliases after instruction idata = tmp->t2[*(tmp->n2)]; are { x; tmp } { tmp->t2[0..]; idata } { tmp->t1[0..]; odata } +[alias] May-alias graph after instruction idata = tmp->t2[*(tmp->n2)]; is + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } + 7:{ tmp->t1[0..]; odata } → 8:{ } [alias] analysing instruction: odata = tmp->t1[*(tmp->n1)]; [alias] May-aliases after instruction odata = tmp->t1[*(tmp->n1)]; are { x; tmp } { tmp->t2[0..]; idata } { tmp->t1[0..]; odata } +[alias] May-alias graph after instruction odata = tmp->t1[*(tmp->n1)]; is + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } + 7:{ tmp->t1[0..]; odata } → 8:{ } [alias] analysing instruction: __retres = (void *)0; [alias] May-aliases after instruction __retres = (void *)0; are { x; tmp } { tmp->t2[0..]; idata } { tmp->t1[0..]; odata } +[alias] May-alias graph after instruction __retres = (void *)0; is + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } + 7:{ tmp->t1[0..]; odata } → 8:{ } [alias] May-aliases at the end of function f1: { x; tmp } { tmp->t2[0..]; idata } { tmp->t1[0..]; odata } +[alias] May-alias graph at the end of function f1: + 0:{ x; tmp } → 1:{ } 4:{ tmp->t2[0..]; idata } → 5:{ } + 7:{ tmp->t1[0..]; odata } → 8:{ } +[alias] Summary of function f1: + formals: x locals: tmp idata odata idx i tmp_1 __retres + returns: __retres + state: { x; tmp } { tmp->t2[0..]; idata } { tmp->t1[0..]; odata } [alias] analysing function: f2 [alias] analysing instruction: ty *tmp = x; [alias] May-aliases after instruction ty *tmp = x; are { x; tmp } +[alias] May-alias graph after instruction ty *tmp = x; is + 12:{ x; tmp } → 13:{ } [alias] analysing instruction: idata = (double *)malloc((unsigned long)10 * sizeof(double)); [alias] May-aliases after instruction idata = (double *)malloc((unsigned long)10 * sizeof(double)); are { x; tmp } +[alias] May-alias graph after instruction + idata = (double *)malloc((unsigned long)10 * sizeof(double)); is + 12:{ x; tmp } → 13:{ } 16:{ idata } → 17:{ } [alias] analysing instruction: int i = 0; [alias] May-aliases after instruction int i = 0; are { x; tmp } +[alias] May-alias graph after instruction int i = 0; is + 12:{ x; tmp } → 13:{ } 16:{ idata } → 17:{ } [alias] analysing instruction: idata = tmp->t1[*(tmp->n1)]; [alias] May-aliases after instruction idata = tmp->t1[*(tmp->n1)]; are { x; tmp } { tmp->t1[0..]; idata } +[alias] May-alias graph after instruction idata = tmp->t1[*(tmp->n1)]; is + 12:{ x; tmp } → 13:{ } 16:{ tmp->t1[0..]; idata } → 17:{ } [alias] analysing instruction: odata = tmp->t2[*(tmp->n2)]; [alias] May-aliases after instruction odata = tmp->t2[*(tmp->n2)]; are { x; tmp } { tmp->t1[0..]; idata } { tmp->t2[0..]; odata } +[alias] May-alias graph after instruction odata = tmp->t2[*(tmp->n2)]; is + 12:{ x; tmp } → 13:{ } 16:{ tmp->t1[0..]; idata } → 17:{ } + 19:{ tmp->t2[0..]; odata } → 20:{ } [alias] analysing instruction: idx = 0; [alias] May-aliases after instruction idx = 0; are { x; tmp } { tmp->t1[0..]; idata } { tmp->t2[0..]; odata } +[alias] May-alias graph after instruction idx = 0; is + 12:{ x; tmp } → 13:{ } 16:{ tmp->t1[0..]; idata } → 17:{ } + 19:{ tmp->t2[0..]; odata } → 20:{ } [alias] analysing instruction: *(odata + idx) = (double)3 * *(idata + idx) + (double)1; [alias] May-aliases after instruction *(odata + idx) = (double)3 * *(idata + idx) + (double)1; are { x; tmp } { tmp->t1[0..]; idata } { tmp->t2[0..]; odata } +[alias] May-alias graph after instruction + *(odata + idx) = (double)3 * *(idata + idx) + (double)1; is + 12:{ x; tmp } → 13:{ } 16:{ tmp->t1[0..]; idata } → 17:{ } + 19:{ tmp->t2[0..]; odata } → 20:{ } [alias] analysing instruction: idx ++; [alias] May-aliases after instruction idx ++; are { x; tmp } { tmp->t1[0..]; idata } { tmp->t2[0..]; odata } +[alias] May-alias graph after instruction idx ++; is + 12:{ x; tmp } → 13:{ } 16:{ tmp->t1[0..]; idata } → 17:{ } + 19:{ tmp->t2[0..]; odata } → 20:{ } [alias] analysing instruction: swap(tmp->n2); [alias] May-aliases after instruction swap(tmp->n2); are { x; tmp } { tmp->t1[0..]; idata } { tmp->t2[0..]; odata } +[alias] May-alias graph after instruction swap(tmp->n2); is + 12:{ x; tmp } → 13:{ } 16:{ tmp->t1[0..]; idata } → 17:{ } + 19:{ tmp->t2[0..]; odata } → 20:{ } [alias] analysing instruction: i ++; [alias] May-aliases after instruction i ++; are { x; tmp } { tmp->t1[0..]; idata } { tmp->t2[0..]; odata } +[alias] May-alias graph after instruction i ++; is + 12:{ x; tmp } → 13:{ } 16:{ tmp->t1[0..]; idata } → 17:{ } + 19:{ tmp->t2[0..]; odata } → 20:{ } [alias] analysing instruction: idata = tmp->t1[*(tmp->n1)]; [alias] May-aliases after instruction idata = tmp->t1[*(tmp->n1)]; are { x; tmp } { tmp->t1[0..]; idata } { tmp->t2[0..]; odata } +[alias] May-alias graph after instruction idata = tmp->t1[*(tmp->n1)]; is + 12:{ x; tmp } → 13:{ } 16:{ tmp->t1[0..]; idata } → 17:{ } + 19:{ tmp->t2[0..]; odata } → 20:{ } [alias] analysing instruction: odata = tmp->t2[*(tmp->n2)]; [alias] May-aliases after instruction odata = tmp->t2[*(tmp->n2)]; are { x; tmp } { tmp->t1[0..]; idata } { tmp->t2[0..]; odata } +[alias] May-alias graph after instruction odata = tmp->t2[*(tmp->n2)]; is + 12:{ x; tmp } → 13:{ } 16:{ tmp->t1[0..]; idata } → 17:{ } + 19:{ tmp->t2[0..]; odata } → 20:{ } [alias] analysing instruction: __retres = (void *)0; [alias] May-aliases after instruction __retres = (void *)0; are { x; tmp } { tmp->t1[0..]; idata } { tmp->t2[0..]; odata } +[alias] May-alias graph after instruction __retres = (void *)0; is + 12:{ x; tmp } → 13:{ } 16:{ tmp->t1[0..]; idata } → 17:{ } + 19:{ tmp->t2[0..]; odata } → 20:{ } [alias] May-aliases at the end of function f2: { x; tmp } { tmp->t1[0..]; idata } { tmp->t2[0..]; odata } +[alias] May-alias graph at the end of function f2: + 12:{ x; tmp } → 13:{ } 16:{ tmp->t1[0..]; idata } → 17:{ } + 19:{ tmp->t2[0..]; odata } → 20:{ } +[alias] Summary of function f2: + formals: x locals: tmp idx idata odata i __retres + returns: __retres + state: { x; tmp } { tmp->t1[0..]; idata } { tmp->t2[0..]; odata } [alias] analysing function: fabs [alias] May-aliases at the end of function fabs: ⊥ +[alias] May-alias graph at the end of function fabs: + ⊥ [alias] analysing function: fabsf [alias] May-aliases at the end of function fabsf: ⊥ +[alias] May-alias graph at the end of function fabsf: + ⊥ [alias] analysing function: fabsl [alias] May-aliases at the end of function fabsl: ⊥ +[alias] May-alias graph at the end of function fabsl: + ⊥ [alias] analysing function: floor [alias] May-aliases at the end of function floor: ⊥ +[alias] May-alias graph at the end of function floor: + ⊥ [alias] analysing function: floorf [alias] May-aliases at the end of function floorf: ⊥ +[alias] May-alias graph at the end of function floorf: + ⊥ [alias] analysing function: floorl [alias] May-aliases at the end of function floorl: ⊥ +[alias] May-alias graph at the end of function floorl: + ⊥ [alias] analysing function: fmod [alias] May-aliases at the end of function fmod: ⊥ +[alias] May-alias graph at the end of function fmod: + ⊥ [alias] analysing function: fmodf [alias] May-aliases at the end of function fmodf: ⊥ +[alias] May-alias graph at the end of function fmodf: + ⊥ [alias] analysing function: free [alias] May-aliases at the end of function free: ⊥ +[alias] May-alias graph at the end of function free: + ⊥ [alias] analysing function: frexp [alias] May-aliases at the end of function frexp: ⊥ +[alias] May-alias graph at the end of function frexp: + ⊥ [alias] analysing function: frexpf [alias] May-aliases at the end of function frexpf: ⊥ +[alias] May-alias graph at the end of function frexpf: + ⊥ [alias] analysing function: frexpl [alias] May-aliases at the end of function frexpl: ⊥ +[alias] May-alias graph at the end of function frexpl: + ⊥ [alias] analysing function: getenv [alias] May-aliases at the end of function getenv: ⊥ +[alias] May-alias graph at the end of function getenv: + ⊥ [alias] analysing function: jrand48 [alias] May-aliases at the end of function jrand48: ⊥ +[alias] May-alias graph at the end of function jrand48: + ⊥ [alias] analysing function: labs [alias] May-aliases at the end of function labs: ⊥ +[alias] May-alias graph at the end of function labs: + ⊥ [alias] analysing function: lcong48 [alias] May-aliases at the end of function lcong48: ⊥ +[alias] May-alias graph at the end of function lcong48: + ⊥ [alias] analysing function: ldexp [alias] May-aliases at the end of function ldexp: ⊥ +[alias] May-alias graph at the end of function ldexp: + ⊥ [alias] analysing function: ldexpf [alias] May-aliases at the end of function ldexpf: ⊥ +[alias] May-alias graph at the end of function ldexpf: + ⊥ [alias] analysing function: ldiv [alias] May-aliases at the end of function ldiv: ⊥ +[alias] May-alias graph at the end of function ldiv: + ⊥ [alias] analysing function: llabs [alias] May-aliases at the end of function llabs: ⊥ +[alias] May-alias graph at the end of function llabs: + ⊥ [alias] analysing function: lldiv [alias] May-aliases at the end of function lldiv: ⊥ +[alias] May-alias graph at the end of function lldiv: + ⊥ [alias] analysing function: log [alias] May-aliases at the end of function log: ⊥ +[alias] May-alias graph at the end of function log: + ⊥ [alias] analysing function: log10 [alias] May-aliases at the end of function log10: ⊥ +[alias] May-alias graph at the end of function log10: + ⊥ [alias] analysing function: log10f [alias] May-aliases at the end of function log10f: ⊥ +[alias] May-alias graph at the end of function log10f: + ⊥ [alias] analysing function: log10l [alias] May-aliases at the end of function log10l: ⊥ +[alias] May-alias graph at the end of function log10l: + ⊥ [alias] analysing function: log2 [alias] May-aliases at the end of function log2: ⊥ +[alias] May-alias graph at the end of function log2: + ⊥ [alias] analysing function: log2f [alias] May-aliases at the end of function log2f: ⊥ +[alias] May-alias graph at the end of function log2f: + ⊥ [alias] analysing function: log2l [alias] May-aliases at the end of function log2l: ⊥ +[alias] May-alias graph at the end of function log2l: + ⊥ [alias] analysing function: logf [alias] May-aliases at the end of function logf: ⊥ +[alias] May-alias graph at the end of function logf: + ⊥ [alias] analysing function: logl [alias] May-aliases at the end of function logl: ⊥ +[alias] May-alias graph at the end of function logl: + ⊥ [alias] analysing function: lrand48 [alias] May-aliases at the end of function lrand48: ⊥ +[alias] May-alias graph at the end of function lrand48: + ⊥ [alias] analysing function: main [alias] analysing instruction: a = (ty *)malloc(sizeof(ty)); [alias] May-aliases after instruction a = (ty *)malloc(sizeof(ty)); are <none> +[alias] May-alias graph after instruction a = (ty *)malloc(sizeof(ty)); is + 24:{ a } → 25:{ } [alias] analysing instruction: b = (ty *)malloc(sizeof(ty)); [alias] May-aliases after instruction b = (ty *)malloc(sizeof(ty)); are <none> +[alias] May-alias graph after instruction b = (ty *)malloc(sizeof(ty)); is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } [alias] analysing instruction: i = 0; [alias] May-aliases after instruction i = 0; are <none> +[alias] May-alias graph after instruction i = 0; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } [alias] analysing instruction: a->t1[i] = (double *)malloc((unsigned long)10 * sizeof(double)); [alias] May-aliases after instruction a->t1[i] = (double *)malloc((unsigned long)10 * sizeof(double)); are <none> +[alias] May-alias graph after instruction + a->t1[i] = (double *)malloc((unsigned long)10 * sizeof(double)); is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 28:{ a->t1[0..] } → 29:{ } [alias] analysing instruction: a->t2[i] = (double *)malloc((unsigned long)10 * sizeof(double)); [alias] May-aliases after instruction a->t2[i] = (double *)malloc((unsigned long)10 * sizeof(double)); are <none> +[alias] May-alias graph after instruction + a->t2[i] = (double *)malloc((unsigned long)10 * sizeof(double)); is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 28:{ a->t1[0..] } → 29:{ } + 30:{ a->t2[0..] } → 31:{ } [alias] analysing instruction: i ++; [alias] May-aliases after instruction i ++; are <none> +[alias] May-alias graph after instruction i ++; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 28:{ a->t1[0..] } → 29:{ } + 30:{ a->t2[0..] } → 31:{ } [alias] analysing instruction: a->t1[i] = (double *)malloc((unsigned long)10 * sizeof(double)); [alias] May-aliases after instruction a->t1[i] = (double *)malloc((unsigned long)10 * sizeof(double)); are <none> +[alias] May-alias graph after instruction + a->t1[i] = (double *)malloc((unsigned long)10 * sizeof(double)); is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 28:{ a->t1[0..] } → 29:{ } + 30:{ a->t2[0..] } → 31:{ } [alias] analysing instruction: a->t2[i] = (double *)malloc((unsigned long)10 * sizeof(double)); [alias] May-aliases after instruction a->t2[i] = (double *)malloc((unsigned long)10 * sizeof(double)); are <none> +[alias] May-alias graph after instruction + a->t2[i] = (double *)malloc((unsigned long)10 * sizeof(double)); is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 28:{ a->t1[0..] } → 29:{ } + 30:{ a->t2[0..] } → 31:{ } [alias] analysing instruction: a->n1 = (int *)malloc(sizeof(int)); [alias] May-aliases after instruction a->n1 = (int *)malloc(sizeof(int)); are <none> +[alias] May-alias graph after instruction a->n1 = (int *)malloc(sizeof(int)); is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 28:{ a->t1[0..] } → 29:{ } + 30:{ a->t2[0..] } → 31:{ } 32:{ a->n1 } → 33:{ } [alias] analysing instruction: a->n2 = (int *)malloc(sizeof(int)); [alias] May-aliases after instruction a->n2 = (int *)malloc(sizeof(int)); are <none> +[alias] May-alias graph after instruction a->n2 = (int *)malloc(sizeof(int)); is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 28:{ a->t1[0..] } → 29:{ } + 30:{ a->t2[0..] } → 31:{ } 32:{ a->n1 } → 33:{ } + 34:{ a->n2 } → 35:{ } [alias] analysing instruction: *(a->n1) = 1; [alias] May-aliases after instruction *(a->n1) = 1; are <none> +[alias] May-alias graph after instruction *(a->n1) = 1; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 28:{ a->t1[0..] } → 29:{ } + 30:{ a->t2[0..] } → 31:{ } 32:{ a->n1 } → 33:{ } + 34:{ a->n2 } → 35:{ } [alias] analysing instruction: *(a->n2) = 1; [alias] May-aliases after instruction *(a->n2) = 1; are <none> +[alias] May-alias graph after instruction *(a->n2) = 1; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 28:{ a->t1[0..] } → 29:{ } + 30:{ a->t2[0..] } → 31:{ } 32:{ a->n1 } → 33:{ } + 34:{ a->n2 } → 35:{ } [alias] analysing instruction: i = 0; [alias] May-aliases after instruction i = 0; are <none> +[alias] May-alias graph after instruction i = 0; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 28:{ a->t1[0..] } → 29:{ } + 30:{ a->t2[0..] } → 31:{ } 32:{ a->n1 } → 33:{ } + 34:{ a->n2 } → 35:{ } [alias] analysing instruction: b->t1[i] = a->t1[i]; [alias] May-aliases after instruction b->t1[i] = a->t1[i]; are { a->t1[0..]; b->t1[0..] } +[alias] May-alias graph after instruction b->t1[i] = a->t1[i]; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 30:{ a->t2[0..] } → 31:{ } + 32:{ a->n1 } → 33:{ } 34:{ a->n2 } → 35:{ } + 36:{ a->t1[0..]; b->t1[0..] } → 29:{ } [alias] analysing instruction: b->t2[i] = a->t2[i]; [alias] May-aliases after instruction b->t2[i] = a->t2[i]; are { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } +[alias] May-alias graph after instruction b->t2[i] = a->t2[i]; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 32:{ a->n1 } → 33:{ } + 34:{ a->n2 } → 35:{ } 36:{ a->t1[0..]; b->t1[0..] } → 29:{ } + 37:{ a->t2[0..]; b->t2[0..] } → 31:{ } [alias] analysing instruction: i ++; [alias] May-aliases after instruction i ++; are { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } +[alias] May-alias graph after instruction i ++; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } 32:{ a->n1 } → 33:{ } + 34:{ a->n2 } → 35:{ } 36:{ a->t1[0..]; b->t1[0..] } → 29:{ } + 37:{ a->t2[0..]; b->t2[0..] } → 31:{ } [alias] analysing instruction: b->t1[i] = a->t1[i]; [alias] May-aliases after instruction b->t1[i] = a->t1[i]; are { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } +[alias] May-alias graph after instruction b->t1[i] = a->t1[i]; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } + 28:{ a->t1[0..]; b->t1[0..] } → 29:{ } + 30:{ a->t2[0..]; b->t2[0..] } → 31:{ } 32:{ a->n1 } → 33:{ } + 34:{ a->n2 } → 35:{ } [alias] analysing instruction: b->t2[i] = a->t2[i]; [alias] May-aliases after instruction b->t2[i] = a->t2[i]; are { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } +[alias] May-alias graph after instruction b->t2[i] = a->t2[i]; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } + 28:{ a->t1[0..]; b->t1[0..] } → 29:{ } + 30:{ a->t2[0..]; b->t2[0..] } → 31:{ } 32:{ a->n1 } → 33:{ } + 34:{ a->n2 } → 35:{ } [alias] analysing instruction: b->n1 = a->n1; [alias] May-aliases after instruction b->n1 = a->n1; are { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } { a->n1; b->n1 } +[alias] May-alias graph after instruction b->n1 = a->n1; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } + 28:{ a->t1[0..]; b->t1[0..] } → 29:{ } + 30:{ a->t2[0..]; b->t2[0..] } → 31:{ } 34:{ a->n2 } → 35:{ } + 38:{ a->n1; b->n1 } → 33:{ } [alias] analysing instruction: b->n2 = a->n2; [alias] May-aliases after instruction b->n2 = a->n2; are { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } { a->n1; b->n1 } { a->n2; b->n2 } +[alias] May-alias graph after instruction b->n2 = a->n2; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } + 28:{ a->t1[0..]; b->t1[0..] } → 29:{ } + 30:{ a->t2[0..]; b->t2[0..] } → 31:{ } 38:{ a->n1; b->n1 } → 33:{ } + 39:{ a->n2; b->n2 } → 35:{ } [alias] analysing instruction: f1(a); [alias] May-aliases after instruction f1(a); are { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } { a->n1; b->n1 } { a->n2; b->n2 } +[alias] May-alias graph after instruction f1(a); is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } + 28:{ a->t1[0..]; b->t1[0..] } → 29:{ } + 30:{ a->t2[0..]; b->t2[0..] } → 31:{ } 38:{ a->n1; b->n1 } → 33:{ } + 39:{ a->n2; b->n2 } → 35:{ } [alias] analysing instruction: f2(b); [alias] May-aliases after instruction f2(b); are { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } { a->n1; b->n1 } { a->n2; b->n2 } +[alias] May-alias graph after instruction f2(b); is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } + 28:{ a->t1[0..]; b->t1[0..] } → 29:{ } + 30:{ a->t2[0..]; b->t2[0..] } → 31:{ } 38:{ a->n1; b->n1 } → 33:{ } + 39:{ a->n2; b->n2 } → 35:{ } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } { a->n1; b->n1 } { a->n2; b->n2 } +[alias] May-alias graph after instruction __retres = 0; is + 24:{ a } → 25:{ } 26:{ b } → 27:{ } + 28:{ a->t1[0..]; b->t1[0..] } → 29:{ } + 30:{ a->t2[0..]; b->t2[0..] } → 31:{ } 38:{ a->n1; b->n1 } → 33:{ } + 39:{ a->n2; b->n2 } → 35:{ } [alias] May-aliases at the end of function main: { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } { a->n1; b->n1 } { a->n2; b->n2 } +[alias] May-alias graph at the end of function main: + 24:{ a } → 25:{ } 26:{ b } → 27:{ } + 28:{ a->t1[0..]; b->t1[0..] } → 29:{ } + 30:{ a->t2[0..]; b->t2[0..] } → 31:{ } 38:{ a->n1; b->n1 } → 33:{ } + 39:{ a->n2; b->n2 } → 35:{ } +[alias] Summary of function main: + formals: locals: a b i __retres returns: __retres + state: { a->t1[0..]; b->t1[0..] } { a->t2[0..]; b->t2[0..] } + { a->n1; b->n1 } { a->n2; b->n2 } [alias] analysing function: malloc [alias] May-aliases at the end of function malloc: ⊥ +[alias] May-alias graph at the end of function malloc: + ⊥ [alias] analysing function: mblen [alias] May-aliases at the end of function mblen: ⊥ +[alias] May-alias graph at the end of function mblen: + ⊥ [alias] analysing function: mbstowcs [alias] May-aliases at the end of function mbstowcs: ⊥ +[alias] May-alias graph at the end of function mbstowcs: + ⊥ [alias] analysing function: mbtowc [alias] May-aliases at the end of function mbtowc: ⊥ +[alias] May-alias graph at the end of function mbtowc: + ⊥ [alias] analysing function: mkstemp [alias] May-aliases at the end of function mkstemp: ⊥ +[alias] May-alias graph at the end of function mkstemp: + ⊥ [alias] analysing function: mkstemps [alias] May-aliases at the end of function mkstemps: ⊥ +[alias] May-alias graph at the end of function mkstemps: + ⊥ [alias] analysing function: mrand48 [alias] May-aliases at the end of function mrand48: ⊥ +[alias] May-alias graph at the end of function mrand48: + ⊥ [alias] analysing function: nan [alias] May-aliases at the end of function nan: ⊥ +[alias] May-alias graph at the end of function nan: + ⊥ [alias] analysing function: nanf [alias] May-aliases at the end of function nanf: ⊥ +[alias] May-alias graph at the end of function nanf: + ⊥ [alias] analysing function: nanl [alias] May-aliases at the end of function nanl: ⊥ +[alias] May-alias graph at the end of function nanl: + ⊥ [alias] analysing function: nrand48 [alias] May-aliases at the end of function nrand48: ⊥ +[alias] May-alias graph at the end of function nrand48: + ⊥ [alias] analysing function: posix_memalign [alias] May-aliases at the end of function posix_memalign: ⊥ +[alias] May-alias graph at the end of function posix_memalign: + ⊥ [alias] analysing function: pow [alias] May-aliases at the end of function pow: ⊥ +[alias] May-alias graph at the end of function pow: + ⊥ [alias] analysing function: powf [alias] May-aliases at the end of function powf: ⊥ +[alias] May-alias graph at the end of function powf: + ⊥ [alias] analysing function: putenv [alias] May-aliases at the end of function putenv: ⊥ +[alias] May-alias graph at the end of function putenv: + ⊥ [alias] analysing function: qsort [alias] May-aliases at the end of function qsort: ⊥ +[alias] May-alias graph at the end of function qsort: + ⊥ [alias] analysing function: quick_exit [alias] May-aliases at the end of function quick_exit: ⊥ +[alias] May-alias graph at the end of function quick_exit: + ⊥ [alias] analysing function: rand [alias] May-aliases at the end of function rand: ⊥ +[alias] May-alias graph at the end of function rand: + ⊥ [alias] analysing function: random [alias] May-aliases at the end of function random: ⊥ +[alias] May-alias graph at the end of function random: + ⊥ [alias] analysing function: realloc [alias] May-aliases at the end of function realloc: ⊥ +[alias] May-alias graph at the end of function realloc: + ⊥ [alias] analysing function: reallocarray [alias] May-aliases at the end of function reallocarray: ⊥ +[alias] May-alias graph at the end of function reallocarray: + ⊥ [alias] analysing function: round [alias] May-aliases at the end of function round: ⊥ +[alias] May-alias graph at the end of function round: + ⊥ [alias] analysing function: roundf [alias] May-aliases at the end of function roundf: ⊥ +[alias] May-alias graph at the end of function roundf: + ⊥ [alias] analysing function: roundl [alias] May-aliases at the end of function roundl: ⊥ +[alias] May-alias graph at the end of function roundl: + ⊥ [alias] analysing function: seed48 [alias] May-aliases at the end of function seed48: ⊥ +[alias] May-alias graph at the end of function seed48: + ⊥ [alias] analysing function: setenv [alias] May-aliases at the end of function setenv: ⊥ +[alias] May-alias graph at the end of function setenv: + ⊥ [alias] analysing function: sin [alias] May-aliases at the end of function sin: ⊥ +[alias] May-alias graph at the end of function sin: + ⊥ [alias] analysing function: sinf [alias] May-aliases at the end of function sinf: ⊥ +[alias] May-alias graph at the end of function sinf: + ⊥ [alias] analysing function: sinl [alias] May-aliases at the end of function sinl: ⊥ +[alias] May-alias graph at the end of function sinl: + ⊥ [alias] analysing function: sqrt [alias] May-aliases at the end of function sqrt: ⊥ +[alias] May-alias graph at the end of function sqrt: + ⊥ [alias] analysing function: sqrtf [alias] May-aliases at the end of function sqrtf: ⊥ +[alias] May-alias graph at the end of function sqrtf: + ⊥ [alias] analysing function: sqrtl [alias] May-aliases at the end of function sqrtl: ⊥ +[alias] May-alias graph at the end of function sqrtl: + ⊥ [alias] analysing function: srand [alias] May-aliases at the end of function srand: ⊥ +[alias] May-alias graph at the end of function srand: + ⊥ [alias] analysing function: srand48 [alias] May-aliases at the end of function srand48: ⊥ +[alias] May-alias graph at the end of function srand48: + ⊥ [alias] analysing function: srandom [alias] May-aliases at the end of function srandom: ⊥ +[alias] May-alias graph at the end of function srandom: + ⊥ [alias] analysing function: strtod [alias] May-aliases at the end of function strtod: ⊥ +[alias] May-alias graph at the end of function strtod: + ⊥ [alias] analysing function: strtof [alias] May-aliases at the end of function strtof: ⊥ +[alias] May-alias graph at the end of function strtof: + ⊥ [alias] analysing function: strtol [alias] May-aliases at the end of function strtol: ⊥ +[alias] May-alias graph at the end of function strtol: + ⊥ [alias] analysing function: strtold [alias] May-aliases at the end of function strtold: ⊥ +[alias] May-alias graph at the end of function strtold: + ⊥ [alias] analysing function: strtoll [alias] May-aliases at the end of function strtoll: ⊥ +[alias] May-alias graph at the end of function strtoll: + ⊥ [alias] analysing function: strtoul [alias] May-aliases at the end of function strtoul: ⊥ +[alias] May-alias graph at the end of function strtoul: + ⊥ [alias] analysing function: strtoull [alias] May-aliases at the end of function strtoull: ⊥ +[alias] May-alias graph at the end of function strtoull: + ⊥ [alias] analysing function: swap [alias] May-aliases at the end of function swap: <none> +[alias] May-alias graph at the end of function swap: + <empty> +[alias] Summary of function swap: [alias] analysing function: system [alias] May-aliases at the end of function system: ⊥ +[alias] May-alias graph at the end of function system: + ⊥ [alias] analysing function: tan [alias] May-aliases at the end of function tan: ⊥ +[alias] May-alias graph at the end of function tan: + ⊥ [alias] analysing function: tanf [alias] May-aliases at the end of function tanf: ⊥ +[alias] May-alias graph at the end of function tanf: + ⊥ [alias] analysing function: tanl [alias] May-aliases at the end of function tanl: ⊥ +[alias] May-alias graph at the end of function tanl: + ⊥ [alias] analysing function: trunc [alias] May-aliases at the end of function trunc: ⊥ +[alias] May-alias graph at the end of function trunc: + ⊥ [alias] analysing function: truncf [alias] May-aliases at the end of function truncf: ⊥ +[alias] May-alias graph at the end of function truncf: + ⊥ [alias] analysing function: truncl [alias] May-aliases at the end of function truncl: ⊥ +[alias] May-alias graph at the end of function truncl: + ⊥ [alias] analysing function: unsetenv [alias] May-aliases at the end of function unsetenv: ⊥ +[alias] May-alias graph at the end of function unsetenv: + ⊥ [alias] analysing function: wcstombs [alias] May-aliases at the end of function wcstombs: ⊥ +[alias] May-alias graph at the end of function wcstombs: + ⊥ [alias] analysing function: wctomb [alias] May-aliases at the end of function wctomb: ⊥ +[alias] May-alias graph at the end of function wctomb: + ⊥ +[alias] Analysis complete diff --git a/src/plugins/alias/tests/real_world/oracle/function1_v2.res.oracle b/src/plugins/alias/tests/real_world/oracle/function1_v2.res.oracle index 15cf879d31b..ccace2436d1 100644 --- a/src/plugins/alias/tests/real_world/oracle/function1_v2.res.oracle +++ b/src/plugins/alias/tests/real_world/oracle/function1_v2.res.oracle @@ -1,133 +1,270 @@ [kernel] Parsing function1_v2.c (with preprocessing) [alias] analysing function: _Exit [alias] May-aliases at the end of function _Exit: ⊥ +[alias] May-alias graph at the end of function _Exit: + ⊥ [alias] analysing function: abort [alias] May-aliases at the end of function abort: ⊥ +[alias] May-alias graph at the end of function abort: + ⊥ [alias] analysing function: abs [alias] May-aliases at the end of function abs: ⊥ +[alias] May-alias graph at the end of function abs: + ⊥ [alias] analysing function: alias [alias] analysing instruction: *x = *y; [alias] May-aliases after instruction *x = *y; are { x; y } +[alias] May-alias graph after instruction *x = *y; is + 0:{ x } → 1:{ *x; *y } 2:{ y } → 1:{ *x; *y } [alias] May-aliases at the end of function alias: { x; y } +[alias] May-alias graph at the end of function alias: + 0:{ x } → 1:{ *x; *y } 2:{ y } → 1:{ *x; *y } +[alias] Summary of function alias: + formals: x→{ *x; *y } y→{ *x; *y } locals: returns: <none> + state: { x; y } [alias] analysing function: at_quick_exit [alias] May-aliases at the end of function at_quick_exit: ⊥ +[alias] May-alias graph at the end of function at_quick_exit: + ⊥ [alias] analysing function: atexit [alias] May-aliases at the end of function atexit: ⊥ +[alias] May-alias graph at the end of function atexit: + ⊥ [alias] analysing function: atof [alias] May-aliases at the end of function atof: ⊥ +[alias] May-alias graph at the end of function atof: + ⊥ [alias] analysing function: atoi [alias] May-aliases at the end of function atoi: ⊥ +[alias] May-alias graph at the end of function atoi: + ⊥ [alias] analysing function: atol [alias] May-aliases at the end of function atol: ⊥ +[alias] May-alias graph at the end of function atol: + ⊥ [alias] analysing function: atoll [alias] May-aliases at the end of function atoll: ⊥ +[alias] May-alias graph at the end of function atoll: + ⊥ [alias] analysing function: bsearch [alias] May-aliases at the end of function bsearch: ⊥ +[alias] May-alias graph at the end of function bsearch: + ⊥ [alias] analysing function: calloc [alias] May-aliases at the end of function calloc: ⊥ +[alias] May-alias graph at the end of function calloc: + ⊥ [alias] analysing function: div [alias] May-aliases at the end of function div: ⊥ +[alias] May-alias graph at the end of function div: + ⊥ [alias] analysing function: drand48 [alias] May-aliases at the end of function drand48: ⊥ +[alias] May-alias graph at the end of function drand48: + ⊥ [alias] analysing function: erand48 [alias] May-aliases at the end of function erand48: ⊥ +[alias] May-alias graph at the end of function erand48: + ⊥ [alias] analysing function: exit [alias] May-aliases at the end of function exit: ⊥ +[alias] May-alias graph at the end of function exit: + ⊥ [alias] analysing function: free [alias] May-aliases at the end of function free: ⊥ +[alias] May-alias graph at the end of function free: + ⊥ [alias] analysing function: getenv [alias] May-aliases at the end of function getenv: ⊥ +[alias] May-alias graph at the end of function getenv: + ⊥ [alias] analysing function: jrand48 [alias] May-aliases at the end of function jrand48: ⊥ +[alias] May-alias graph at the end of function jrand48: + ⊥ [alias] analysing function: labs [alias] May-aliases at the end of function labs: ⊥ +[alias] May-alias graph at the end of function labs: + ⊥ [alias] analysing function: lcong48 [alias] May-aliases at the end of function lcong48: ⊥ +[alias] May-alias graph at the end of function lcong48: + ⊥ [alias] analysing function: ldiv [alias] May-aliases at the end of function ldiv: ⊥ +[alias] May-alias graph at the end of function ldiv: + ⊥ [alias] analysing function: llabs [alias] May-aliases at the end of function llabs: ⊥ +[alias] May-alias graph at the end of function llabs: + ⊥ [alias] analysing function: lldiv [alias] May-aliases at the end of function lldiv: ⊥ +[alias] May-alias graph at the end of function lldiv: + ⊥ [alias] analysing function: lrand48 [alias] May-aliases at the end of function lrand48: ⊥ +[alias] May-alias graph at the end of function lrand48: + ⊥ [alias] analysing function: main [alias] analysing instruction: int *a = malloc(sizeof(int)); [alias] May-aliases after instruction int *a = malloc(sizeof(int)); are <none> +[alias] May-alias graph after instruction int *a = malloc(sizeof(int)); is + 4:{ a } → 5:{ } [alias] analysing instruction: *a = 0; [alias] May-aliases after instruction *a = 0; are <none> +[alias] May-alias graph after instruction *a = 0; is 4:{ a } → 5:{ } [alias] analysing instruction: int *b = malloc(sizeof(int)); [alias] May-aliases after instruction int *b = malloc(sizeof(int)); are <none> +[alias] May-alias graph after instruction int *b = malloc(sizeof(int)); is + 4:{ a } → 5:{ } 6:{ b } → 7:{ } [alias] analysing instruction: *b = 42; [alias] May-aliases after instruction *b = 42; are <none> +[alias] May-alias graph after instruction *b = 42; is + 4:{ a } → 5:{ } 6:{ b } → 7:{ } [alias] analysing instruction: alias(& a,& b); [alias] May-aliases after instruction alias(& a,& b); are { a; b } +[alias] May-alias graph after instruction alias(& a,& b); is + 4:{ a; b } → 5:{ } 11:{ } → 4:{ a; b } 12:{ } → 4:{ a; b } [alias] analysing instruction: *a = 7; [alias] May-aliases after instruction *a = 7; are { a; b } +[alias] May-alias graph after instruction *a = 7; is + 4:{ a; b } → 5:{ } 11:{ } → 4:{ a; b } 12:{ } → 4:{ a; b } [alias] analysing instruction: __retres = 0; [alias] May-aliases after instruction __retres = 0; are { a; b } +[alias] May-alias graph after instruction __retres = 0; is + 4:{ a; b } → 5:{ } 11:{ } → 4:{ a; b } 12:{ } → 4:{ a; b } [alias] May-aliases at the end of function main: { a; b } +[alias] May-alias graph at the end of function main: + 4:{ a; b } → 5:{ } 11:{ } → 4:{ a; b } 12:{ } → 4:{ a; b } +[alias] Summary of function main: + formals: locals: a b __retres returns: __retres state: { a; b } [alias] analysing function: malloc [alias] May-aliases at the end of function malloc: ⊥ +[alias] May-alias graph at the end of function malloc: + ⊥ [alias] analysing function: mblen [alias] May-aliases at the end of function mblen: ⊥ +[alias] May-alias graph at the end of function mblen: + ⊥ [alias] analysing function: mbstowcs [alias] May-aliases at the end of function mbstowcs: ⊥ +[alias] May-alias graph at the end of function mbstowcs: + ⊥ [alias] analysing function: mbtowc [alias] May-aliases at the end of function mbtowc: ⊥ +[alias] May-alias graph at the end of function mbtowc: + ⊥ [alias] analysing function: mkstemp [alias] May-aliases at the end of function mkstemp: ⊥ +[alias] May-alias graph at the end of function mkstemp: + ⊥ [alias] analysing function: mkstemps [alias] May-aliases at the end of function mkstemps: ⊥ +[alias] May-alias graph at the end of function mkstemps: + ⊥ [alias] analysing function: mrand48 [alias] May-aliases at the end of function mrand48: ⊥ +[alias] May-alias graph at the end of function mrand48: + ⊥ [alias] analysing function: nrand48 [alias] May-aliases at the end of function nrand48: ⊥ +[alias] May-alias graph at the end of function nrand48: + ⊥ [alias] analysing function: posix_memalign [alias] May-aliases at the end of function posix_memalign: ⊥ +[alias] May-alias graph at the end of function posix_memalign: + ⊥ [alias] analysing function: putenv [alias] May-aliases at the end of function putenv: ⊥ +[alias] May-alias graph at the end of function putenv: + ⊥ [alias] analysing function: qsort [alias] May-aliases at the end of function qsort: ⊥ +[alias] May-alias graph at the end of function qsort: + ⊥ [alias] analysing function: quick_exit [alias] May-aliases at the end of function quick_exit: ⊥ +[alias] May-alias graph at the end of function quick_exit: + ⊥ [alias] analysing function: rand [alias] May-aliases at the end of function rand: ⊥ +[alias] May-alias graph at the end of function rand: + ⊥ [alias] analysing function: random [alias] May-aliases at the end of function random: ⊥ +[alias] May-alias graph at the end of function random: + ⊥ [alias] analysing function: realloc [alias] May-aliases at the end of function realloc: ⊥ +[alias] May-alias graph at the end of function realloc: + ⊥ [alias] analysing function: reallocarray [alias] May-aliases at the end of function reallocarray: ⊥ +[alias] May-alias graph at the end of function reallocarray: + ⊥ [alias] analysing function: seed48 [alias] May-aliases at the end of function seed48: ⊥ +[alias] May-alias graph at the end of function seed48: + ⊥ [alias] analysing function: setenv [alias] May-aliases at the end of function setenv: ⊥ +[alias] May-alias graph at the end of function setenv: + ⊥ [alias] analysing function: srand [alias] May-aliases at the end of function srand: ⊥ +[alias] May-alias graph at the end of function srand: + ⊥ [alias] analysing function: srand48 [alias] May-aliases at the end of function srand48: ⊥ +[alias] May-alias graph at the end of function srand48: + ⊥ [alias] analysing function: srandom [alias] May-aliases at the end of function srandom: ⊥ +[alias] May-alias graph at the end of function srandom: + ⊥ [alias] analysing function: strtod [alias] May-aliases at the end of function strtod: ⊥ +[alias] May-alias graph at the end of function strtod: + ⊥ [alias] analysing function: strtof [alias] May-aliases at the end of function strtof: ⊥ +[alias] May-alias graph at the end of function strtof: + ⊥ [alias] analysing function: strtol [alias] May-aliases at the end of function strtol: ⊥ +[alias] May-alias graph at the end of function strtol: + ⊥ [alias] analysing function: strtold [alias] May-aliases at the end of function strtold: ⊥ +[alias] May-alias graph at the end of function strtold: + ⊥ [alias] analysing function: strtoll [alias] May-aliases at the end of function strtoll: ⊥ +[alias] May-alias graph at the end of function strtoll: + ⊥ [alias] analysing function: strtoul [alias] May-aliases at the end of function strtoul: ⊥ +[alias] May-alias graph at the end of function strtoul: + ⊥ [alias] analysing function: strtoull [alias] May-aliases at the end of function strtoull: ⊥ +[alias] May-alias graph at the end of function strtoull: + ⊥ [alias] analysing function: system [alias] May-aliases at the end of function system: ⊥ +[alias] May-alias graph at the end of function system: + ⊥ [alias] analysing function: unsetenv [alias] May-aliases at the end of function unsetenv: ⊥ +[alias] May-alias graph at the end of function unsetenv: + ⊥ [alias] analysing function: wcstombs [alias] May-aliases at the end of function wcstombs: ⊥ +[alias] May-alias graph at the end of function wcstombs: + ⊥ [alias] analysing function: wctomb [alias] May-aliases at the end of function wctomb: ⊥ +[alias] May-alias graph at the end of function wctomb: + ⊥ +[alias] Analysis complete diff --git a/src/plugins/alias/tests/test_config b/src/plugins/alias/tests/test_config index e14c0a6d247..80976f50aac 100644 --- a/src/plugins/alias/tests/test_config +++ b/src/plugins/alias/tests/test_config @@ -1,2 +1,2 @@ PLUGIN: alias -OPT: -alias -alias-verbose 3 +OPT: -alias -alias-verbose 3 -alias-debug 3 -- GitLab