Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AV: an interesting example that cannot be easily blocked with non-aliasing vocabulary #40

Open
shaobo-he opened this issue Feb 3, 2017 · 1 comment

Comments

@shaobo-he
Copy link
Collaborator

Consider the following example,

struct node
{
   struct node * prev;
   struct node * next;
   int flag;
};

typedef struct node node;

void remove(node* this)
{
   this->prev->next = this->next;
   this->next->prev = this->prev;
   this->prev = 0;
   this->next = 0;
}

void foo(node* head)
{
   node* n;
   while((n = head->prev)->flag)
     remove(n);
}

There will be an error trace if the recursion bound is set to 2, which cannot be blocked by our default configuration (non aliasing + non monomial cover.

@zvonimir
Copy link
Collaborator

I am guessing nobody will work on this any time soon, if ever.
@shuvendu-lahiri and @akashlal : are you ok if I mark this as "won't fix" and close the issue?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants