void test (char *s1, int x);
void test3 (int, char *s1);
void test2 (/*@only@*/ char *s1, int x);
char *copystring (char *s);
int f (/*@only@*/ char *name) /*@modifies *name;@*/
{
test (name, f(name)); /* 1. Variable name used after being released */
test3 (f(name), name); /* 2. Variable name used after being released */
test2 (copystring(name), f(name)); /* 3. Argument 2 modifies *name, used by ... */
return 3;
}