SVF-tools / Test-Suite

PTABen: Micro-benchmark Suite for Pointer Analysis
70 stars 38 forks source link

Two MAYALIAS in `cs_tests/recur8.c` should be NOALIAS? #27

Closed taquangtrung closed 3 years ago

taquangtrung commented 3 years ago

Hi,

For the two MAYALIAS in this test case, I think they should be NOALIAS?

This is because c and &b are aliases, and b, z1, z2 are variables declared differently, hence &b, &z1, &z2 cannot be aliases?

Could you advise if my understanding is correct?

// cs_tests/recur8.c

#include "aliascheck.h"
int z1,z2;
void foo(int **p);
void bar(int **a){
    int *c, b;
    *a = &b;
    c = *a;
    MUSTALIAS(c,&b);
    MAYALIAS(c,&z1);   // it should be no-alias if strong updates are enabled
    MAYALIAS(c,&z2);
    foo(a);
}

void foo(int** p){
    p = malloc(10);
    *p = &z2;
    bar(p);
}

int main(){
    int **x, *y;
    x = &y;
    y = &z1;
    foo(x);
}
taquangtrung commented 3 years ago

duplicated