Interprocedural alias analysis


I need interprocedural alias analysis while I’m using GVN for infeasible path
analysis. So, I’ve tried “-steens-aa” from poolalloc project, but it doesn’t seem
to be working as I expected. For example,

int global;

int bar(void) {
return 5;

int foo(void) {
int a;
scanf("%d", &a);
a = bar();
return a;

In this case, I expected getModRefInfo() on the load instruction for ‘global’ and
the call instruction for ‘bar()’ in foo() yields “NoModRef”, but it actually give “ModRef”.

Am I understanding ‘interprocedural’ in wrong way? or making any mistake?
Or does ‘-steens-aa’ have any problem?

I’m also curious if there is any ongoing project or plan to implement or improve
interprocedural alias analysis.

Thank you very much in advance.

Hyoun Kyu Cho