diff --git a/src/plugins/alias/tests/basic/oracle/pointer_call.res.oracle b/src/plugins/alias/tests/basic/oracle/pointer_call.res.oracle new file mode 100644 index 0000000000000000000000000000000000000000..581615710978a227011ea8d1382e5e1320d44c34 --- /dev/null +++ b/src/plugins/alias/tests/basic/oracle/pointer_call.res.oracle @@ -0,0 +1,54 @@ +[kernel] Parsing pointer_call.c (with preprocessing) +[alias] analysing function: alias_xy +[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; y } → 1:{ } +[alias] May-aliases at the end of function alias_xy: { x; y } +[alias] May-alias graph at the end of function alias_xy: + 0:{ x; y } → 1:{ } +[alias] Summary of function alias_xy: + formals: x y z returns: <none> state: { x; y } +[alias] analysing function: alias_yz +[alias] analysing instruction: y = z; +[alias] May-aliases after instruction y = z; are { y; z } +[alias] May-alias graph after instruction y = z; is 4:{ y; z } → 5:{ } +[alias] May-aliases at the end of function alias_yz: { y; z } +[alias] May-alias graph at the end of function alias_yz: + 4:{ y; z } → 5:{ } +[alias] Summary of function alias_yz: + formals: x y z returns: <none> state: { y; z } +[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: p = & alias_xy; +[alias] May-aliases after instruction p = & alias_xy; are <none> +[alias] May-alias graph after instruction p = & alias_xy; is + 8:{ p } → 9:{ alias_xy } +[alias] analysing instruction: p = & alias_yz; +[alias] May-aliases after instruction p = & alias_yz; are <none> +[alias] May-alias graph after instruction p = & alias_yz; is + 8:{ p } → 9:{ alias_xy; alias_yz } +[alias] analysing instruction: (*p)(a,b,c); +[alias:unsupported:fn] pointer_call.c:15: Warning: + unsupported feature: call to function pointer: *p +[alias:undefined:fn] pointer_call.c:15: Warning: function *p has no definition +[alias] May-aliases after instruction (*p)(a,b,c); are <none> +[alias] May-alias graph after instruction (*p)(a,b,c); is + 8:{ p } → 9:{ alias_xy; alias_yz } +[alias] analysing instruction: __retres = 0; +[alias] May-aliases after instruction __retres = 0; are <none> +[alias] May-alias graph after instruction __retres = 0; is + 8:{ p } → 9:{ alias_xy; alias_yz } +[alias] May-aliases at the end of function main: <none> +[alias] May-alias graph at the end of function main: + 8:{ p } → 9:{ alias_xy; alias_yz } +[alias] Summary of function main: + formals: returns: __retres state: <none> +[alias] Analysis complete diff --git a/src/plugins/alias/tests/basic/pointer_call.c b/src/plugins/alias/tests/basic/pointer_call.c new file mode 100644 index 0000000000000000000000000000000000000000..24d6059e5029a31a67afa2161bd898f63bf34fa7 --- /dev/null +++ b/src/plugins/alias/tests/basic/pointer_call.c @@ -0,0 +1,17 @@ +void alias_xy(int *x, int* y, int* z) { + x=y; +} + +void alias_yz(int *x, int* y, int* z) { + y=z; +} + +int main(void) +{ + int *a=0, *b=0, *c=0; + void (*p)(int* x, int* y, int* z); + p = &alias_xy; + p = &alias_yz; + (*p)(a,b,c); + return 0; +} diff --git a/src/plugins/alias/tests/unsupported/pointer_call.c b/src/plugins/alias/tests/unsupported/pointer_call.c deleted file mode 100644 index 448ec0f752f68628673aafccdb70969d51f5a381..0000000000000000000000000000000000000000 --- a/src/plugins/alias/tests/unsupported/pointer_call.c +++ /dev/null @@ -1,8 +0,0 @@ -int f () { - return 0; -} - -int main () { - int (*p)() = &f; - return ((*p)()); -}